Why is my transaction pending?
1.What does pending mean?
Incoming transactions show up in your account immediately (typically within a minute after they are broadcasted but will be tagged as Pending until there has been at least one network confirmation. The time it takes a transaction to be confirmed depends on the fee used by the sender and the overall network traffic. It can also depend on the asset used.
Once a transaction is verified on the network, the pending tag will be removed. This lets you know the transaction cannot be reversed, and the funds can be sent.
2.What is actually happening with a pending transaction?
Occasionally, transactions are not accepted by the network and remain marked as Pending for 2-3 days. Typically these transactions will never confirm. Three main reasons usually cause these problem transactions:
Receiving a transaction with insufficient fees.
All transactions require a miner fee to be confirmed by the asset network. If the sender did not use a sufficient fee, your deposit might never confirm.
The network is experiencing a high volume.
Sometimes there is a high volume of digital currency being sent globally, and there are more transactions than there is space available in each new block to include the transaction.
3.The definition of Nonce
A nonce is the number of the transaction of the sender’s address. Every transaction from an address is numbered sequentially, beginning with 0 for the first transaction. For example, if the nonce of a transaction is 10, it is the 11th transaction sent from the sender’s address.
The nonce is essential, especially if you perform multiple transactions using the same address. The Ethereum network works so that a transaction with a lower nonce will be processed first before any other. Thus if you have a problem with an earlier transaction, the ensuing transaction will not be included in the blockchain until the one with the lower nonce is successfully included.
4.How to cancel or speed up a long-running transaction
So what if you have launched a transaction with a gas price that is too low to interest the miners? Easy, you just relaunch the same transaction, but this time with a higher gas price, high enough so it will be picked up. So now you will have two transactions almost identical, one with a low gas price and one with a high gas price. The only problem left to solve is ensuring that only one gets processed at the end.
As mentioned in the Nonce Section, transactions are being processed sequentially on the Ethereum blockchain, meaning transaction #2 will be processed before # 3 and so forth. It is also not possible to process transactions with the same sequence number. For example, it is not possible to process 2 transactions that have sequence #3, one of them will be dropped. The sequence number is called nonce technically.
This brings us to our solution, when you launch your transaction with a correct gas price, you set the nonce to the same number as the long-running transaction. The transaction with the higher gas price will be picked up sooner, meaning the sequence number will be processed and cause the long-running transaction to be dropped because its sequence is outdated.
- Cancel: Sending a 0 ETH/ERC-20 transaction to your address with a higher fee to prevent the previous stuck transaction from the process of waiting for confirmation
- Speed Up: Sending the same amount of ETH/ERC-20 transaction to the same recipient address with a higher fee while simultaneously not having the previous stuck transaction go through.