Post
Topic
Board Marketplace
Re: ZERO Confirmations after 48 Hours
by
mocacinno
on 24/02/2017, 10:37:43 UTC
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.001BTC (~$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.001BTC, 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 BTC

Oh 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  Undecided

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.5BTC 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.001BTC 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).