Wallet software feature: "Clean up" -- An idea for input combination with 0 fee (UTXO reduction) and increased privacy with CashShuffle
As you may be aware the recent Miner's Choice initiative have enabled transactions of 1 satoshi at 0 fee. I'm not for unlimited 0 fee transactions since that makes it too easy to fill the blocks at no cost, however the current model where only some 0 fee transactions are allowed per block is very good. As long as people understand that it may take several days before a 0 fee transaction gets into the blockchain it is just fine, this is how Bitcoin worked back in 2010 where 80 kB was reserved for 0 fee tx per block.
One extra good use case for a 0 fee transaction would be to combine several inputs into one. This type of transaction where you send the satoshis to yourself is acceptable even if it takes several days to confirm and miners should like them too since it reduces the number of unspent transaction outputs (UTXO). If a miner spots a 0 fee transaction that combines a lot of small inputs into 1 it would be in their interests to prioritize it above other 0 fee transactions so it gets into the very next block.
So, combining several small inputs into 1 at 0 fee gets rid of the growing UTXO problem. But what about privacy? CashShuffle is the solution to this. My suggestion is that wallets implement an automatic "clean up":
- The wallet software checks for inputs that are older than a week and smaller than X satoshis.
- If all of those inputs added together are larger than or equal to Y BCH it asks the user "Would you like to clean up your wallet? Yes/No".
- Below the question it is explained that it has *no cost and will improve privacy but it might take a few days to complete and Z BCH will be 'locked' during that time. It's also mentioned that it's OK to close the wallet at any time but clean up is delayed while the software is closed.
- Naturally there should also be a button for learning more about what exactly happens during a "clean up".
When you press yes the wallet software immediately makes a several-inputs-2-outputs tx and broadcasts it with 0 fee. Both of those outputs are owned by your wallet, one will be exactly Y BCH (required by CashShuffle) and the other will be usual change. Those change satoshis is not private and could be flagged by your wallet so it tries not to use it for a payment until after it has been included in the next clean up.
Once the wallet notices that the tx has been confirmed in the blockchain it proceeds to use the Y BCH output (now input) with CashShuffle until successful. Its during this stage that the clean up is "delayed" if the wallet software is closed.
The wallet finally 'unlocks' Z BCH and displays a "clean up successful"-message to the user. What this achieves is not only a reduction in UTXO but it also increases privacy for everybody since a lot more participants will become available for CashShuffle.
If several clients implements this "clean up" feature the 546 sat dust limit can be dropped completely because it doesn't matter if people send just 1 satoshi; many small inputs can be combined for free. As long as the wallet software helps the user to do it with a simple yes/no question there's no reason to think the UTXO count would ever get out of control.
Naturally a "clean up" can be done without involving CashShuffle, it would still be useful for combining several inputs into one. Though I think it would be a golden opportunity to increase usage of CashShuffle. Otherwise privacy is indeed an issue.
*Note 1: Above assumes that CashShuffle also starts being used with 0 fee transactions, if that ends up taking too long time since miners don't have the incentive of including the tx in a block for free (due to no reduction of UTXO) the clean up message needs to be changed from "no cost" to "a cost of below Q sats", where Q is an approximation of what a CashShuffle usually needs in transfer fees for a timely completion. Note 2: Currently CashShuffle only supports 0.1 or 0.01 inputs. Lower amounts needs to be supported to allow a bunch of 1 satoshi transactions to be cleaned up and privatized. Even today I'd set it to only 0.001 to enable more people to use it. Someone wanting to shuffle 0.01 would simply need to shuffle multiple times, which isn't a problem if the client could be tasked to take care of it automatically with fees under 1 sat/byte. Note 3: The paid article content below is just a message of thanks.
3 of 3 reviewers say it's worth paying for
0 of 3 reviewers say it's not worth paying for