Top Bitcoin Wallets Prove Block Confirmation Time is a Myth

The block size debate might seem unimportant to people who don't use bitcoin on a daily basis. However, the biggest challenge in bitcoin right now is dealing with confirmation time.

This is especially true during peak transaction periods. The problem starts when lots of transactions propagate the network. It is possible to use higher network fees on outgoing transactions for faster confirmation. However, this is not guaranteed.

There are not many mobile wallets letting users change transaction fees. In addition, automated fee estimation usually doesn't work the way it should.

Bitcoin users often have to wait more than 15 minutes for a transaction to confirm. Sometimes, transactions can even take up to four hours. Limited block sizes can even lead to a fee market for transactions.

In theory, it is possible to automatically calculate an ideal miner fee. This would mean a transaction being confirmed in the first block. Even so, the time a subsequent block is generated still is a random variable. It simply cannot be controlled.

Here is an example of automated fee recommendation. By estimation, any transaction with a fee higher than 52,419 satoshis/KB would be included in the first block. Any transaction with fees lower than 25,000 satoshis/KB would need to wait at least two blocks to get confirmed.

statoshi.info Fee and Priority Estimates [^n]: https://statoshi.info/dashboard/db/fee-and-priority-estimates

This is why it is interesting to do an experiment testing existing mobile bitcoin wallets. The goal: To see how they calculate fees. Also, how these wallets compete for transactions included in the first block.

It should be noted during this test there were no bitcoin stress tests or transaction peaks occurring.

<thead>
<tr>
	<th>Mobile <br>wallets</th>
	<th>Fee <br>(Satoshis per KB:)</th>
	<th>Fee Calculation</th>
	<th>Time to confirm</th>
	<th>Actual fee (BTC)</th>
</tr>
</thead>
<tbody>
<tr>
	<td>Coinbase</td>
	<td>54906.16</td>
	<td>Static</td>
	<td>1 Block / <br>2 minutes</td>
	<td>0.0002</td>

</tr>
<tr>
	<td>Airbitz</td>
	<td>53333.33</td>
	<td>Static</td>
	<td>1 Block / <br> <b>38 minutes</b></td>
	<td>0.0001</td>
</tr>
<tr>
	<td>Hive</td>
	<td>45309.73</td>
	<td>Static</td>
	<td>2 Blocks / <br> <b>19 minutes</b></td>
	<td>0.0001</td>
</tr>
<tr>
	<td>Android Wallet</td>
	<td>45309.73</td>
	<td>Static</td>
	<td>2 Blocks / <br> <b>31 minutes</b></td>
	<td>0.0001</td>
</tr>
<tr>
	<td>Blockchain.info</td>
	<td>39689.92</td>
	<td>Static</td>
	<td>1 Block /<br> <b>17 minutes</b></td>
	<td>0.0001</td>
</tr>
<tr>
	<td>Bitwallet</td>
	<td>39689.92</td>
	<td>Static / Custom</td>
	<td>1 Block / <br> 4 minutes</td>
	<td>0.0001</td>
</tr>
<tr>
	<td>Copay</td>
	<td>34220.90</td>
	<td>Dynamic</td>
	<td>1 Block /<br> 3 minutes</td>
	<td>0.00006383</td>
</tr>
<tr>
	<td>Bread Wallet</td>
	<td>27551.56</td>
	<td> Dynamic </td>
	<td>1 Block /<br> 4 minutes</td>
	<td>0.00006</td>
</tr>
<tr>
	<td>Mycelium</td>
	<td>27526.88</td>
	<td>Static</td>
	<td>1 Block / <br>4 minutes</td>
	<td>0.0001</td>
</tr>
<tr>
	<td>GreenAddress</td>
	<td>25788.14</td>
	<td>Dynamic</td>
	<td>9 Blocks / <br> <b>100 minutes</b></td>
	<td>0.00008361</td>
</tr>
<tr>
	<td>Xapo</td>
	<td>20855.39</td>
	<td>Static / Batched</td>
	<td>3 Blocks /<br> <b>29 Minutes</b></td>
	<td> 0.0002 </td>
</tr>
<tbody>
Mobile wallet confirmation time comparison sorted by Fee per kb.

So, the average time of one confirmation is around 23 minutes. This is a long time.

There are 2.7 transactions broadcasted per second and 4,421 transactions in the mempool. This is quite low compared to the average number of transactions in mempool.

[^n]: https://tradeblock.com/bitcoin/

The result of this experiment indicates transaction fees could help transactions get confirmed faster.

Even so, the fact no blocks could be generated for more than 40 minutes still causes issues. When the someone is trying to sell bitcoin for cash, there needs to be at least one confirmation.

Also, none of these mobile wallets seem to choose mining fees efficiently depending on network state. They mostly rely on luck for fast confirmation.

[^n]: https://bitcoinwisdom.com/bitcoin/difficulty

The bitcoin network block difficulty ensures the average time of a block in every 2,016 blocks is 600 seconds. As seen in the above chart, when block generation time (the confirmation time) decreases fast, there is a higher leap in block difficulty.

Bitcoin adjusts difficulty every 2,016 blocks to keep up with the hashrate increase. The average block time is 10 minutes.

In a perfect world, where the blocks are not full and all transactions have enough fees, every transaction should be included in the first block. This average is 10 minutes.

As seen below, a median transaction confirmation with fees is around 8 minutes. However, it does not match our mobile wallet experiment.
[^n]: https://blockchain.info/charts/avg-confirmation-time?showDataPoints=false&timespan=2year&show_header=true&daysAverageString=7&scale=0&address=

The following is a visualization how long it took to generate a block after the previous one took 2,000 tries.

This is generated using block_time. It might not be exactly the same as block propagation time. Yet this explains negative time values. There are many blocks here requiring more than 30 minutes.

Generated using blockbin[^n]:https://play.blockbin.com/#!3SLlgMfexLRA1Zkelo2PLU/1hjxb612L4I5U0l5lpdAGz

BitAccess has made a lot of improvements to handle transactions and make them more efficient. However, confirmation time is still a burden regarding how fast transactions can be processed.

We want to mitigate long transaction waits. In particular, we endeavor to make the transaction experience better. We are working on a solution.