Let's say I transfer 0.05 BTC from 1 input to 1 output and don't pay a fee. If there are 6 blocks per hour, this means that my input has to be 369 hours (about 15 days) old so no fee is required. Let's also assume that the input only is 1 hour old. Does this mean that it will never be confirmed or does it mean that the money will arrive after a little more than 15 days?
1 Answer
First of all: there's no guarantee that it will be free after 15 days. Some miners used to have a policy that made spending old coins potentially free. But miners can change those policies and will likely go for highest fee first, as that earns them the most money. If the network is busy that means there will be hardly any free transactions going in.
Second: most nodes on the network keep transactions in the memory pool for a while. But again, the exactly policies can be different for every node. I think 3 days is a common setting. But when the network is busy, 0 fee transactions are more likely to be dropped from the mempool than paying transactions.
Third: once you've broadcast the transaction, theoretically anyone that ever saw that transaction could re-introduce it to the network at any time. Even weeks or months later. For example the receiver of such transaction might keep trying to get it through. So there's never really a guarantee to you that a transaction has "timed out". The only way to be sure is to make a new transaction spending the same coin to another address (and then include a fee).
-
"Some miners used to have a policy that made spending old coins potentially free." Isn't that the case any more? Isn't there that convention of having some space in a block reserved for high-priority transactions? Different question: I just read that the network just wouldn't propagate the transaction if the fee is too low. (Electrum doesn't even let you make a transaction with a too low fee. (I tried to figure this out experimentally.)) Would the initial nodes the transaction is sent to remember it for (probably) 3 days or what do you mean by that?– UTF-8May 22, 2016 at 12:09