Does this behaviour pose any problem if I want to anonymize bitcoins? I haven't started researching that field of knowledge yet, but it sounds like it could be a risk, say I send 0.5 BTC to a randomizer and another 1.0 happens to end up on the same address I receive the anonymized BTC on?
I hate when programs assumes the users doesn't want to know what's going on "under the hood". Sure, most people don't care and maybe find it confusing, but they could at least put in something like a "show advanced settings and information" checkbox...
Unless you are playing with building your own raw transactions the Bitcoin-Qt wallet is designed to not re-use a "change" address. So when you receive the payment from the bitcoin mixer, that payment should be sent to a bitcoin address that you provide to the mixer (If the mixer tries to guess where to send the payment based on addresses that it received the bitcoins from, well that wouldn't be very anonymous at all would it?) Change addresses are created by the wallet and NOT shown to you, so unless you go looking in the blockchain and choose to provide one of your change addresses to the mixing service, you shouldn't be able to provide a change address for receipt of funds.
Change addresses actually help increase anonymity.
If I have 5 bitcoins, and I create a transaction sending 2 bitcoins to a service with the remaining 3 bitcoins coming right back to my original address, then anyone who knows my address (anyone I've every sent bitcoins to or received bitcoins from) could look at the blockchain and know that I have exactly 3 bitcoins remaining and that exactly 2 bitcoins were paid to a service.
If I have 5 bitcoins, and I create a transaction sending 2 bitcoins to a service with the remaining 3 bitcoins going to a brand new address never before seen on the blockchain, then anyone who knows my original address won't be able to tell if I sent 2 with 3 change, or if I sent 3 with 2 change, or if I sent 5 and split the payment between 2 recipients.
Now here is a situation where you could run into a loss of anonymity. . .
Lets say your wallet has 6 bitcoins all in one address, ADDR_A, that was received in 2 payments (1 BTC and 5 BTC).
Now you decide to send 4 bitcoins off to a mixing service, and create a brand new address, ADDR_B, in that same wallet to receive the anonymous bitcoins.
Lets say the wallet chose to send the 5 BTC output and therefore sent the 1 BTC change to a brand new address, ADDR_C.
The wallet now has 1 bitcoin in an ADDR_A, 1 bitcoin in ADDR_C and 4 bitcoins in ADDR_B.
Now lets say you decide to send 2 BTC somewhere.
Possible outcomes:
- Wallet uses 1 BTC from ADDR_A and 4 BTC FROM ADDR_B, sending the 3 BTC change to a new address. Anonymity is lost because ADDR_B is now linked to ADDR_A (your non-anonymous receiving address)
- Wallet uses 1 BTC from ADDR_A and 4 BTC FROM ADDR_C, sending the 3 BTC change to a new address. Anonymity is lost because ADDR_B is now linked to ADDR_C (an address that is only 1 transaction from your receiving address
- Wallet uses 4 BTC from ADDR_C, sending the 1 BTC change to a new address, ADDR_D. Anonymity appears to be maintained, but the 1 BTC in ADDR_D could be linked to ADDR_A or ADDR_C in the future via either of the 2 previous scenarios.