How to modify or cancel a pending Ethereum transaction
Ethereum is an open-source blockchain-based software platform with thousands of decentralized applications (DApps) that powers its native cryptocurrency, Ether (ETH), that can be sent and received globally without any third-party interference.
First conceptualized in 2013 by Russian-Canadian programmer Vitalik Buterin, Ethereum was designed as a platform for self-executing, permanent and immutable DApps with use cases varying from finance to gaming and art.
DApps are often referred to as smart contracts which are Ethereum transaction protocols that automatically carry out certain functions and actions like transaction processing with predetermined conditions and agreements. Sending a transaction, canceling it, or resolving a pending Ethereum transaction are actions related to the functioning of smart contracts.
What is an Ethereum transaction?
Transactions are cryptographically signed instructions from accounts.
The Ethereum network supports two main types of transactions: contract deployment transactions, the type of transaction without a receiver, and regular transactions, the simplest type of transactions used to transfer ETH from one wallet to another.
A submitted, regular Ethereum transaction includes the identifier of the sender or signature generated when the sender’s private key signs the transaction and confirms that the sender has authorized the particular Ethereum transaction. The receiving address, an amount of ETH to transfer from sender to recipient, information about Ethereum transaction fee and an optional field to include arbitrary data are all part of a submitted regular Ethereum transaction.
Ethereum transactions must be mined to become valid and require a fee from the sender.
Ethereum miners verify legitimate transactions in order to receive a reward for their work in creating new ETH. When a miner solves a cryptographic (mathematical) puzzle, a transaction is considered validated. Ethereum, like Bitcoin (BTC), has a proof-of-work (PoW) system to prevent cyber attacks from a single individual or group.
The obligation for users to pay a transaction fee when using the blockchain protects the Ethereum network from sloppy or malicious computational tasks such as users spamming the blockchain with an overload of purposeless transactions.
Ethereum transaction lifecycle
An Ethereum transaction goes through a series of states, starting with the unknown state until it is confirmed in a block.
Unknown: The unknown state refers to a transaction that the network has not seen or processed.
Pending: When a transaction is in the pending state, it is waiting for miners to pick it up and process it which is called a pooled transaction, also said to be called the “mempool.” Because miners prioritize greater gas prices, transactions with lower gas values may languish in the pending stage for an extended period. The transactions with the lowest gas prices may never be picked up, leaving them “stuck” in the pending status eternally.
In block: When a miner successfully selects a transaction and mines it within a block, it advances to the in-block state. In-block transactions are called mined transactions. If the block is forked, a transaction in the block may return to the pending state. When a mined transaction (i.e., one in the in block state) is reversed by the network, it is known as a forked transaction.
Replaced: When either of the following circumstances occurs, a transaction can be moved from the pending to the replaced state:
- A new transaction with the same nonce from the same sender enters the in block state, or
- Another transaction with the same nonce and a 12% higher gas price enters the pending stage, this time from the same sender.
Ethereum Transaction confirmations
Ethereum transaction confirmations are the number of blocks created since the first block that included this transaction.
A pending Ethereum transaction needs to receive a certain number of confirmations. The higher the gas fee, the greater the certainty that the Ethereum network processed and recognized the transaction.
Recent blocks can be reorganized, giving the impression that the transaction processing has failed. Even so, the transaction may be included in another block and remains valid. The probability of reorganization decreases with each subsequently mined block, that is, the more the confirmations, the more immutable the transaction becomes.
Ethereum transaction confirmations
A transaction fee is an incentive paid by users to block miners. It is used to send a particular transaction in the Ethereum blockchain.
The Ethereum blockchain transaction fees are also called gas fees, as they are related to gas, a pricing mechanism used on the Ethereum network which refers to the computation required to process the transaction by a miner. The computational tasks of a transaction are measured in terms of gas cost.
On the other hand, each unit of gas has a gas price given in ETH. Although the complexity of a particular transaction determines gas cost, users can set their own price and gas limit, or the maximum amount of gas units consumed by the transaction.
What is a nonce?
A nonce is an abbreviation for “number only used once,” referring to the total number of confirmed transactions sent from the given Ethereum address.
Ethereum wallets can broadcast multiple transactions from an account without much delay between one another, meaning that a nonce calculation is considered to be a necessary mechanism that determines which transaction is processed first. Usually, Ethereum wallet applications take care of nonce management for users.
How to cancel an Ethereum transaction?
There are two main methods to cancel a pending Ethereum transaction: in-application cancellation and setting a custom nonce.
Usually, Ethereum transactions are pending for hours or stuck when users submit with a low gas price. Therefore, users often find it necessary to change Ethereum transactions.
When solving this issue, users need to remember that cancellation can only be attempted if the transaction is still pending on the network. The first step they need to take is to verify in a block explorer whether the transaction is still pending. Mainly, to paste the transaction hash, also known as an Ethereum transaction ID, and if a block explorer says “pending,” users can still try to cancel it.
The easiest way to cancel a stuck Ethereum transaction is in-application cancellation, which requires users to exit the Ethereum wallet application and close their browser, reopen it and log back into the application.
If these steps do not solve the problem, the second way will come to the rescue.
Canceling a pending Ethereum transaction by setting a custom nonce means generating a 0 ETH transaction with a high gas price to the user’s own address to prevent a previous transaction from being stuck. Before sending this second transaction, users need to note the nonce being used by the original pending transaction and then reuse the same nonce they noted.
If users have multiple pending Ethereum transactions, they preferably start with the oldest one, or the lowest nonce value.
How to speed up Ethereum transaction?
Users can speed up a slow Ethereum transaction by adding gas to it. This step may incentivize Ethereum miners to prioritize it.
If an Ethereum user sets too low of a gas price, other users get a chance to outbid this initial bid and the transaction will remain pending. When the transaction is stuck, the network does not confirm any new transactions from the same wallet address until the miner confirms the first transaction.
In this situation, users can choose to wait until the network is willing to process a transaction at the set price or resubmit the original transaction, but with a higher gas fee. Clicking on the “speed up” button in their Ethreum wallet should allow the transaction to be processed faster.
If the previous step did not work, users could go to the advanced tab to set the gas price manually.
After all, users are advised to search the transaction on the blockchain explorer by posting its hash to see if it was processed successfully. If the transaction does not show up immediately, they will need to wait a few minutes and refresh a page.
Can Ethereum transactions be reversed?
Ethereum wallets can not revert already completed Ethereum transactions.
When Ethereum users accidentally send funds to the wrong address or send the wrong amount of ETH, they may cancel the transaction while it is still pending. When the transaction is confirmed and shown as “Successful,” meaning it has been added to the next block, it cannot be reversed. The Ethereum blockchain is designed as immutable, so the data entered blocks are irreversible. Knowing this, it is essential to ensure that the transaction details are correct before clicking the send button.
Finally, it is worth noting that many blockchain startups have already developed mechanisms that would allow users to reverse Ethereum transactions.