It has occurred to me that you can reduce fees, and the UTXO set size, at the expense of blockchain usage. What do you think...
If your balance is comprised of a lot of small UTXOs, spend txes would be expensive due to their large size. You could optimize that by sending to yourself, consolidating your own UTXOs, as follows.
When you don't have an immediate need to make actual payments, you'd wait for a time with lower fees, select an even lower than average fee, then send to yourself. It could take a day or a week, but in the end you'd have a larger sum on a single UTXO. Later, when making a real payment where time is important, you'd get better fees due to the small tx size.
Pros:
* Lower fees, and maybe quicker actual payments.
* Reduces network's UTXO set size.
Cons:
* Require manual work.
* Increases blockchain size.
Considering the blockchain is already large nowadays, unlike the UTXO set which still fits in memory, I think UTXO size is more important than blockchain size? But I'm not sure what would be the implications in the future, when the UTXO set no longer fits in RAM.
Would it make sense for Bitcoin clients to semi-automatically, after user confirmation, do such a consolidation whenever it's beneficial? I wonder how much the network's UTXO set could decrease if everyone did that.
A few related reads:
https://medium.com/@jimmysong/high-fees-and-utxo-sets-474969adebd2https://medium.com/@lopp/the-challenges-of-optimizing-unspent-output-selection-a3e5d05d13efhttp://gavinandresen.ninja/utxo-uhoh