Seems to be a good thread to ask this question, about the size of transaction fees.
I click for these microcoins because someday they might be worth a bunch.
If I'm also mining, and cashing out a few bitcoins at a time, should I be running two separate wallets to avoid transactions fees, were I to buy $20 Amazon gift cards for example?
I think the obvious answer is yes, but I've searched a bit and can't see why. Although I did just see something where the code gathers up all the smallest transactions it can to make an output, instead of choosing the mining address to make a multi bitcoin transaction. Is there a difference between an address and a wallet in terms of age and fragmented coins?
Thanks for all the great advice on this thread.
The answer to your question will depend on what bitcoin client you're using. The satoshi client doesn't gather up the smallest outputs to make a payment. It will use a single output if it is just the right size. Otherwise it will try to make the exact amount using the available outputs. If it can't do that, it will try to make the smallest amount that is at least 0.01 btc bigger than the amount you asked for. And if it can't do that, it will use the smallest output that is bigger than 0.01 btc more than the amount you asked for. It's kind of a complicated algorithm but it works quite well.
If you use 2 separate wallets (one for 'big' outputs and one for 'small') your small wallet will end up with a bunch of tiny outputs that you'll almost never be able to spend without incurring a transaction fee. If you mix the two together then the client will sometimes combine a big output with a bunch of tiny outputs. The big output will 'carry' the smaller outputs and allow them to be spent without a transaction fee.
The way the fee works is this: for each output you're trying to spend, multiply the value of the output in BTC by the age of the output in days. Add up all those results, and divide by the number of outputs you're spending. If the final result is greater than 1, then no fee is required.
So if you have a 1 BTC output that is 4 days old, and a 0.00000001 output that is 2 weeks old, you get this result:
( (1 * 4) + (0.00000001 * 14) ) / 2 = (4 + 0) / 2 = 2
So the transaction needs no fee. The 4 day old 1 BTC output is old enough to 'carry' up to 3 worthless dust outputs. But if the 1 BTC output was in your 'large' wallet it would never get mixed in with the dust outputs, so they'd never get spent for free.