During times of increased number of transactions causing congestion, such as now (Dec 7, 2017), an underpriced transaction may take an excessive amount of time to confirm/mine into the blockchain. You may have sent a transaction via MetaMask (MM) or another client only to still be waiting 24 hours+ without any confirmation. In that case, any further transactions are also being delayed. You may also have a difficult time even finding the pending transaction on blockchain explorers (via the transaction hash). Others may be waiting on a transfer out of a centralized exchange.

I’m hoping to explain why these delays may be happening and what possible steps can be taken to resolve the issue.

Basics

When you submit a transaction, part of the transaction’s parameters is the gas fee/gas price. An example price would be 50 Gigawei (GWei). This is the price you are willing to pay per computational unit your transaction incurs. This is not the same as “total gas,” which is the total amount of computational resources you are willing to pay for, at the aforementioned gas price. Analogy: You hire a lawyer for a case. Gas Price = $ per hour of work, whereas Total/Max gas = the maximum number of hours of work you will pay for (at the aforementioned price).

There is also a “nonce” associated with the transaction. Every time a transaction from your account is entered/mined into the blockchain, the nonce increases. It is a counter. There can be only one valid transaction per a nonce value per account. This helps defend against an attacker simply entering copies of a single valid signed transaction into the blockchain over and over, draining your account. If you send 0.5 ether to A, and you want to send another 0.5 ether to that same A, the nonce for the second transaction is different, and the data you are signing is also different so that A cannot resubmit your original transaction a hundred times…

The Rest of the Process

Once you create the transaction locally, you must broadcast it. This usually happens via a node provided by the wallet you are using and may be modifiable in the interface. Once the node broadcasts it to its peers, it will propagate the network and reach the miners. At that time, the transaction has to be mined into a block. How likely your transaction “makes it” depends on multiple parameters but one that is very important and controllable [by you] is the gas price. The more you are willing to pay per computational resource, the more the miner will make, and thus is more willing to include it into the block.

Blockchain explorers also utilize nodes to provide data to you. During this whole process, when the system is swamped in pending transactions, it may be more difficult to find your pending transaction. Thus, you may wonder if the transaction ever “reached” the network in the first place.

Potential Causes of Delay and Possible Solutions

Possible solutions depend on where the problem arises which is why I mentioned the basics above.

Centralized Exchange-related

If you are using an exchange such as Bittrex, the delay may be from the Ethereum network portion (e.g., if they didn’t pay a high enough gas price), or from some other part of their centralized system that you have no control over. Unfortunately, your solution likely depends on just waiting or getting a hold of them.