Subject: [bitcoindev] OP_KEEPCHANGE - mitigating dust outputs

From: James Ferguson <[email-masked]>
Date: Wed, 25 Sep 2024 17:44:47 -0700 (PDT)

My first post to list - Hi
- tell me if I am in the wrong place or following idea is absurd 
- otherwise please onboard me towards adding value (tell me when I've 
overlooked standards etc)

So, at risk of proving foolish  - I think I may have a novel and useful 
idea (did some searches and found nothing).

best James

Title: "Keep the Change" dust mitigation

Category:** Consensus (Soft Fork  - I think)

*Abstract *

Introduction of provisionally named  "OP_KEEPCHANGE" allows small residual 
UTXO (change) to be automatically credited to the primary recipient’s 
address.
  
This aims to reduce inefficiencies associated with the creation of dust 
outputs, reduce bloat, improve transaction efficiency, and optimise network 
performance by minimising the accumulation of tiny un-spendable UTXO.

*Motivation*

When a user sends Bitcoin, any leftover amount is typically returned to a 
change address controlled by the sender. 
If this leftover amount is sufficiently small (dust) it is not economically 
spendable, representing a small reduction in the money supply.

This causes problems:

- UTXO bloat:  More UTXOs mean a larger blockchain size, increasing storage 
and bandwidth requirements for nodes and threatens decentralisation.
- Higher transaction fees: Dust outputs, when combined in future 
transactions, increase the transaction size, leading to higher fees.
- Inefficient use of UTXOs: Managing numerous small change outputs makes 
transaction construction more complex and potentially inefficient.

OP_KEEPCHANGE mitigates these issues while offering additional secondary 
benefits:

a) Prevention of Value Erosion: 
When transferring funds between wallets owned by the same party, small 
change amounts can lead to minor value erosion due to repeated fees and 
inefficiencies.
This proposal eliminates such erosion by crediting the residual amount to 
the recipient wallet.

b) Enhanced Privacy: . 
This provides a slight improvement in transaction privacy by obfuscating 
the typical patterns used to identify change outputs.

c) Mitigation of Money Supply Reduction: 
As dust UTXOs accumulate over time and become economically unspendable, 
they effectively reduce the Bitcoin money supply.
This proposal helps mitigate a calculable reduction in the overall Bitcoin 
supply, preserving value and improving the network’s long-term 
sustainability.

d) Recipient Benefit A provider (eg a merchant) accepting bitcoin or  fiat 
exchange users buying bitcoin (especially small sums after DCA'ing) gain a 
small proportional uplift in revenues at no cost to the sender)

f) Reduction in dust threshold: In so far as transaction costs are reduced 
a small reduction in the dust threshold is thereby achieved

g) Equitable with positive feedback : By reducing dust UTXO size increases 
- larger UTXO makes for lower default dust - All users benefit from reduced 
dust whether they make further OP_KEEPCHANGE transactions or not

*High Level Specification Outline*

- Introduce  OP_KEEPCHANGE 

- Assume some dust threshold (XXX satoshis)  configurable by wallet user

- During input UTXO selection to transfer some value, a wallet or user 
seeks the minimum change value that would normally be generated as a return 
UTXO. This involves by judicious input UTXO selection. 
If this is below the dust threshold a transaction can be marked with 
OP_KEEPCHANGE

- When used in a transaction, `OP_KEEPCHANGE` signals that any excess 
change be added to the primary output instead of generating a separate 
change output. 

Instead of funding eternally useless UTXOs the recipient’s output is 
increased by this amount.

*Summary*

By implementing this fairly simple backwardly compatible mechanism, the 
Bitcoin network can achieve greater efficiency, decentralisation, cost 
savings, and improved privacy for its users while maintaining a healthier 
and more predictable money supply.

-- 
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email-masked].
To view this discussion on the web visit https://groups.google.com/d/msgid/bitcoindev/83296012-d713-482a-ad7a-3fd9bf7cded9n%40googlegroups.com.