You really have cases where 1mBTC fee isn't much? Oo
How do you know how many inputs and outputs will be needed though? You can only know once you've launched the transaction no?
I'm going to tell a hypothetical story here...
A long time ago, user Bob came into contact with bitcoin. He downloaded the core wallet and started doing mindless jobs for BTC... Claiming from faucets, signature campaigns paying very low wages (because he was a jr. member), filling in questionaires, PPC sites, some a-ads on his blog,...
Since these jobs were incredibly small, each incoming payment was less than 0.001
BTC (~$1 in today's money). This isn't to hard to imagine, since we all know that faucet claims are paying allmost nothing, signature campaigns for new users don't pay a lot either,... and so on.
Now, Bob really liked bitcoins, so he had over 2000 incoming transactions to the addresses managed by his wallet, totalling a nice 2
BTC.
Today, Bob learned that Dell accepts bitcoins, so he wants to use his hard-earned BTC (imagine how many years he had to click that claim button to make those 2
BTC) to buy a $2200 desktop pc (including screen, keyboard, mouse, s/h,...). Since preev.com tells him that his 2
BTC is worth ~$2300, he's pretty confident that the
BTC in his wallet will suffice (he can add $100 in fees for a $2200 purchase, so he's sure he's covered).
now, let's do the math... $2200 =~ 1.876
BTC. Since each input has a value of 0.001
BTC, he'll need 1876 inputs to create one 1.876 output (no change address tough, since all his inputs are so small there will be no change).
Let's calculate the transaction size:
The formula to estimate the size => in*147 + out*34 + 10 plus or minus 'in'* (for compressed addresses, standard P2PKH tx).
In our case, the size would be (1876*147) + (1*34) + 10 + 1876 = 277692 bytes (that's correct, this transaction would fill about 25% of a block, do realise this is only an estimation... The actual size might differ slightly).
We look up the current estimated fee to have a 95% chance to get our transaction into the next couple of blocks:
https://bitcoinfees.21.co/ => 180 satohsi's per byte at the time of writing.
277692 * 180 = 49984560 =~ 0.5
BTCOh Sh*t... 1.876
BTC (the cost of his new computer) + 0.5
BTC (the optimal fee) = 2.376
BTC... He doesn't have enough inputs to pay the fee
Now, if you read this logic, you should also understand that the fee would stay the same if i wanted to pay:
- 187.6BTC using 1876 x 0.1BTC inputs
- 18.76BTC using 1876 x 0.01BTC inputs
- 1.876BTC using 1876 x 0.001BTC inputs
- 0.1876BTC using 1876 x 0.0001BTC inputs
- 0.01876BTC using 1876 x 0.00001BTC inputs
- 0.001876BTC using 1876 x 0.000001BTC inputs
Each of these transactions should add a 0.5
BTC fee if they want to have a good chance of getting into a block quickly.
And this story is exactly why i personally think it's wrong to make claims like "always add 0.001
BTC fee and you'll be ok". A lot of people still think that a fee is something that can have a fixed value, but if you use a fixed value, you either overpay, or underpay... You're almost never going to pay the exact good amount.
Also, this story should show you that a lot of people are wrong when they think the fee is related to the amount of BTC that is transferred. In reality, the fee is only related to the size of the transaction, and this size is related to the amount of inputs and outputs (not the value).