The most common transaction on the Ethereum network today is a standard account transfer costing 21,000 gas and paying a 20 gwei/gas fee. From the time this transaction is submitted to the network, it takes about 53 s on average to be confirmed by a miner and included in the blockchain.
I have been working on a site that times transaction confirmations and analyzes miner behavior (http://ethgasstation.info), and I have gotten some insight into why it takes this long and what changes would impact this wait. Furthermore, since block times currently average about 14.5 seconds, it may not be immediately obvious why it takes an average of 35s for a confirmation, so I decided to write up my observations.
Currently, there are four main factors that hold up our standard transaction from being included in a block:
- Block interval time
- POW mining software (the biggest factor)
- Gas price
- Empty block penalty
Here is how these four factors currently collude to produce a 35 second average transaction confirmation time:
- Block Interval Time: The block interval is currently about 15 seconds. Therefore, without changing the block interval time, 15s is about the best average confirmation time we could hope for.
- POW mining software delay: Unfortunately, our transaction has no hope of being included in the next block after being broadcast to the network (i.e. submit Tx at block 4,000,000 and have it mined in block 4,000,001). It turns out that miners are not willing to change the block data in the middle of a block interval in order to accommodate newly submitted transactions to the mempool. It’s not entirely clear whether doing so would disadvantage them for finding the next block or if there is some software optimization that could enable this, but, at least for now, it doesn’t happen. So what does this mean for the user? Basically, you have to wait for another full block for the transaction to be eligible for inclusion in a block — which currently means, on average another 15 s. So now, under optimal conditions, we have an average of 30s before our nice, standard transaction can can be mined.
- Gas Price: The probability of our transaction being included in a block once queued, however, is not 100%. Several top mining pools (e.g. F2pool, Coinotron) haven’t mined a 20 gwei gas price transaction in months. Currently about 70% of blocks that include transactions are mined by miners who will accept the 20 gwei gas price, creating, in theory, a 70% inclusion probability for our transaction. With a 70% inclusion probability, the expected average number of blocks that will elapse before the transaction is mined is about 1.43 (or 21.4s). This time is added to the initial time that it took for the transaction to be queued (15s) and we are now left with a 36 s average time for our default-priced account transfer to get mined.
- Empty Block Penalty: Unfortunately, although 70% of blocks are mined by pools that accept a 20 gwei gas price, some of these pools mine blocks that are empty no matter what transactions are in the mempool. The best pools for users currently have a 1–2% empty block percentage, which is about the rate you can attribute to a true empty mempool at the time of block mining given the current number of daily transactions. In contrast, Dwarfpool, although they do mine many transactions with a 20 gwei gas price, currently has about 67% of all their blocks empty. These empty blocks create an additional time tax on our transaction by further lowering the base probability that it will be included in a block. We therefore need to estimate an empty-block adjusted probability of accepting a 20 gwei gas price which currently is about 56%. This translates into an expected rate of 1.8 blocks (27s) on average for a predicted total of 42s before mining (15s + 27s), which is close to the observed data.
Here is a summary of the relative contribution of the factors that delay our 20 gwei gas price transaction from being accepted into a block:
Some critics might point out that showing consistency with the observed data does not prove that the model is correct. So, how does it do at predicting other inclusion times? If our transaction had a 40 gwei gas price, you can essentially eliminate the gas price barrier (all major pools accept 40 gwei), but it doesn’t impact the other barriers. After factoring in the empty block penalty, the probability of being mined is about 80% or an expected 1.25 blocks average once queued yielding 34s (15 + 18.75s), which is nearly identical to the 33s observed time for these transactions. This is currently the best average confirmation time that can be achieved on the network.
Similarly if you offer 2 gwei gas price, the gas price barrier gets higher (only 10% of blocks mined accept this gas price) but these miners who accept the low price almost never mine empty blocks, so the empty block penalty nearly goes away. You are left with a 8% inclusion probability that gives an expected mining time of 202s (15s + 187s), which is close to the observed 206s.
For those of you who want fast transaction times, the good news is that barriers 2–4 are all essentially effects of proof-of-work mining that should be eliminated once Ethereum moves to proof-of-stake. So if you needed another reason to be excited about Proof-of-Stake — this is it.