Bitcoin Forum

Bitcoin => Bitcoin Technical Support => Topic started by: caveden on June 19, 2012, 12:43:49 PM



Title: Criteria used by Satoshi client to require a fee
Post by: caveden on June 19, 2012, 12:43:49 PM
Hello,

Can someone please point me to the full criteria set used by Satoshi client to calculate whether a transaction should have a "mandatory" fee?
Initially I thought it was only transaction size in bytes and the amounts in outputs ("dust"), as said here: https://en.bitcoin.it/wiki/Transaction_fees#Minimum_transaction_fees

But apparently that's not all. A friend of mine was testing some bitcoins transfers. He received 1 BTC. He tried to send that 1 BTC to another address. It went, no fees required. Then he tried to send it again to another address. The client required him a fee. He canceled, and some days after tried again, and then it passed without requiring fees.
So, well, data size and output amounts are not the only criteria... what are the others?

Thanks!


Title: Re: Criteria used by Satoshi client to require a fee
Post by: Stephen Gornick on June 19, 2012, 06:06:52 PM
He received 1 BTC. He tried to send that 1 BTC to another address. It went, no fees required. Then he tried to send it again to another address. The client required him a fee. He canceled, and some days after tried again, and then it passed without requiring fees.

So, well, data size and output amounts are not the only criteria... what are the others?

The coin selection algorithm (which is continually revised, version to version) will avoid using the newest coins if it can, to avoid the transaction being considered "low priority".  So the age of the coin is a factor that weighs when the client estimates fees.  I'm not sure the specific algorithm but the rule of thumb is after a day the coin can be used without causing the transaction to be considered "low priority".

The reasoning behind this is likely an anti-spam protection.  Without this, the network could be spammed continually by sending larger BTC transactions back and forth and cause grief without paying fees.  Griefing with larger transactions can still be done without a fee, but not without having a wallet with a large amount of bitcoins so that no coin is used in transactions more than once a day (roughly).

Here are some other sources of information on fees:
 - http://bitcoin.stackexchange.com/a/3403/153
 - http://en.bitcoin.it/wiki/Transaction_fees