Author

Topic: 25MB wallet with 16,915 addresses (Read 1443 times)

sr. member
Activity: 266
Merit: 250
October 24, 2014, 07:32:46 PM
#8
Like CIYAM said, the change output address is actually essential, as all the input Bitcoins have to be spent. If no change output is specified, the remaining input value will be considered as fees. The initial reason for creating new addresses for change output was anonymity, but as more people have adopted Bitcoin, that is not very practical and it should be able to evolve. It would be nice if Bitcoin Core had an option to set it to return change to the same address. An alternative option would be to use the createrawtransaction, signrawtransaction and sendrawtransaction Bitcoin RPC calls, but that would require some coding knowledge.

I'm working on an Android wallet which sends change back to one of the original input addresses instead of creating new ones. Hope it have it released soon enough.
hero member
Activity: 780
Merit: 501
October 20, 2014, 04:58:45 PM
#7
send change back to the origin.

Thanks to CIYAM above, I now understand why this is not possible.  You can't modify existing UTXO's, that's the reason for the blockchain's existence  Grin.
hero member
Activity: 576
Merit: 514
October 20, 2014, 01:31:00 PM
#6
It doesn't really matter much if you *re-use* addresses for change
For you. It causes bloat. Bitcoin could/should by default just send change back to the origin.
hero member
Activity: 780
Merit: 501
October 19, 2014, 04:26:48 PM
#5
It doesn't really matter much if you *re-use* addresses for change (the address is not the relevant thing - the UTXO *is* so each change UTXO is still another UTXO regardless of what address it is tied to).

Thanks for explaining this, now I get it.   Smiley
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
October 19, 2014, 11:23:20 AM
#4
It doesn't really matter much if you *re-use* addresses for change (the address is not the relevant thing - the UTXO *is* so each change UTXO is still another UTXO regardless of what address it is tied to).

You are indeed much better off to use "sendmany" in order to reduce your tx fees (and to reduce your number of *change* UTXOs at the same time).
hero member
Activity: 780
Merit: 501
October 19, 2014, 11:20:31 AM
#3
Thanks for the fast response.

change addresses are *essential* due to the fact that all UTXOs are fully spent when you create a tx that uses them.

I understand that it must fully spend.  My question is why does it need to send a new address?  Can't it send back to the original address, the wallet's first address?

Quote
Your issue with tiny amounts will be undoubtedly due to the way you have received your BTC

It's the reverse. I started out with for example 1 BTC in my wallet and sent out several small payments over a period of several months.

Quote
In short you *can't clean it up without paying fees* as you have too many very small UTXOs (lesson to be learned - don't get so many small amounts - they are more of a hassle than they are really worth).

Lesson indeed learned.  Would have using the 'sendmany' function prevented this situation?
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
October 19, 2014, 11:03:51 AM
#2
You need to do some learning about how Bitcoin works first I think (change addresses are *essential* due to the fact that all UTXOs are fully spent when you create a tx that uses them).

Your issue with tiny amounts will be undoubtedly due to the way you have received your BTC (either via tiny pool payouts, ad-sigs or faucets I would guess).

You can use "coin control" to try and "reduce the UTXO bloat" but seemingly you have gone too far to want to do this all manually so you might want to look into using a script to help you (there are at least one or two available).

In short you *can't clean it up without paying fees* as you have too many very small UTXOs (lesson to be learned - don't get so many small amounts - they are more of a hassle than they are really worth).
hero member
Activity: 780
Merit: 501
October 19, 2014, 10:53:34 AM
#1
I have a wallet that has grown to 25 MB and has 16,915 addresses due to the amount of transactions being made each day.

Why does this happen?  I understand the technical behavior behind it.  Bitcoin will send 'change' back to a new address in the keypool.  But why does it do that?  Besides 'anonymity' what is the benefit of breaking up my Bitcoins into smaller and smaller outputs?  Is their a technical reason for this? Can it be 'turned off'?

How do I clean this up without having to spend money on fees?  It is going to be a very complex transaction if I want to send all these tiny outputs to a single input, and that will probably end up costing a very large transaction fee.  Also from what I understand, it might not get mined due to the large amount of small inputs.
Jump to: