Recently, we published a post covering Canceled Transactions and How They Break Dapp UX. Based on the positive feedback we received from the community, we are excited to dive into the world of Ethereum Speed Up Transactions — what they are, how they are different than Cancels, and the implications for your Dapp. [We recommend first reviewing our Cancel Post.]
What are Speed Up Transactions?
Speed Up transactions are virtually identical to Cancel transactions – with one critical difference. Specifically:
- On Ethereum, a Speed Up transaction is an attempt to overwrite a currently pending transaction with a new transaction.
- Just like Cancels, Speed Ups are a convention and not a standard.
The big difference?
Whereas a Cancel transaction is an attempt to overwrite a pending transaction with a zero value replacement, a Speed Up is an attempt to accelerate a pending transaction.
In other words, you still want the transaction to happen; you just want it to happen faster. Therefore, a typical Speed Up transaction will have:
- An identical nonce,
- From the same Wallet address,
- At least a 10% higher gas fee, and
- The identical value, plus
- Gets signed-and-successfully-submitted before the original transaction is confirmed.
You might notice that step 4 is the only difference between a Cancel and a Speed Up. They both work on the identical principle: since miners are incentivized to prioritize transactions with more gas, the identical nonce Speed Up transaction should be confirmed before the original transaction – even though it entered the mempool later. In other words, Speed Up transactions are kind of like probabilistic afterburners.
How are Speed Up Transactions Created?
MetaMask is the best-known (only?) end-user wallet with an explicit UI to initiate a Speed Up. Other wallets, including MyCrypto and MyEtherWallet, offer knowledge-base articles that provide instructions for manually constructing and submitting both Speed Up and Cancel transactions. But these are not for faint of heart.
To issue a Speed Up on MetaMask, click on a currently pending transaction shown in the Queue. This will reveal the transaction details and the Cancel button. Don't see the Speed Up button? Just wait. It usually shows up after a few seconds. See below for this behavior in action:
The Speed Up user experience in MetaMask 7.2.1.
As you can see, Speed Ups are an advanced capability and meant to be used by sophisticated users. You might expect them to be relatively uncommon.
However, we find that – during periods of network congestion – more than 10% of the entire mempool consists of Speed Ups and Cancels. 😲
Where do they come from?
Which User Segment(s) Generate All of These Speed Ups?
We've learned from experienced builders (more precisely, our customers and partners) that frequent use of Speed Ups and Cancels is correlated with the transaction volume. In other words, whales and traders. As in, the most active – and presumably profitable – users in the ecosystem.
This is not that much of a surprise. The more transactions someone is conducting, the more susceptible they are to changing ETH gas prices. This is not just the gas fees themselves, but also the losses that can accrue from delayed transaction confirmations. In fact, sophisticated traders have built custom bots to automatically manage gas in efforts to ensure that all of their trades are quickly executed.
How are Speed Ups and Cancels Different?
Speed Ups and Cancels are similar in that they originate from the wallet and use the same nonce as the transaction that was originally sent. Aside from that, they are 'normal' Ethereum transactions that have been crafted to achieve a specific outcome. Which is where things can start to get fun:
- Yes, you can Speed Up a Cancel.
- Yes, you can Speed Up a Speed Up.
- Yes, you can Cancel a Speed Up.
- And yes, you can even Cancel a Cancel. 🤔
Go ahead. Try it.
Just remember that Speed Ups and Cancels are purely probabilistic. They represent an attempt and not a guarantee. The original transaction can get confirmed despite your best efforts to replace it. However, the consequences of this are wildly different depending on the context:
- If your Speed Up fails to replace the original transaction, you save a little gas. And that's it. Because you wanted the original transaction to confirm quickly. Outcome: No problem!
- However, if your Cancel fails to replace the original transaction... well, the original transaction is confirmed, and of course, all of the associated value moves with it. Which is precisely what you were trying to avoid by attempting to Cancel in the first place. Outcome: Ouch.
So the next time your transaction is stuck, and you are not sure what to do, issue a Speed Up. Easy enough. For the User? Sure. For the Dapp? Not so much.
How do Speed Ups Impact Dapp UX?
Speed Ups and Cancels both originate at the wallet. They both reuse a nonce. But because they change constituent elements of the transaction – the gas fee specifically – these replacements transactions will have new transaction hashes.
How Dapps Get Confused by Speed Up and Cancel Transactions
Since Dapps are out-of-the-loop when a Speed Up or Cancel gets created, the Dapp has no way to connect-the-dots between the two transaction hashes. This tends to break the Dapp UX because the new transaction hash is not picked up by the UI. For the end-user, that usually means the Dapp will show their transaction as permanently. And the new transaction hash, once it is Confirmed, will not be displayed on the Dapp.
As transactions on Ethereum increase, we can expect Speed Ups will become more common. So it is important for Dapps to build a robust front-end that can handle these situations cleanly.
Blocknative can Help!
Blocknative operates a global mempool data platform that provides real-time notifications via our enterprise grade Mempool API. Built for dapp developers and web3 wallets, Blocknative emits API events describing every state change for every relevant transaction, including:
- New pending transaction detected.
- Pending transaction confirmed.
- Pending transaction failed.
- Pending transaction Canceled.
- Pending transaction Sped Up.
- Simulate pending internal transactions.
- And much more.
To accomplish this, we run a global node monitoring infrastructure that is high scale, high availability, and low latency.
We built our API to help you connect the dots for your users. So you can focus on delivering a great experience and your users can transact with confidence.
Providing your users real-time updates on the full spectrum of blockchain transactions increases engagement, improves retention, and drives growth.
To learn more, click below to schedule a live demo.
Monitor Speed Up transactions in Mempool Explorer:
Our Mempool Explorer is the easiest way to work with mempool data. It enables you to build real-time transaction event streams. It is fast, flexible and easy-to-integrate with your projects and trading strategies via a well-documented API.
You can easily use Mempool Explorer to monitor Speed Up Transactions:
- Monitor all Speed Up transactions on top DEXs
- Monitor top Stable Coins for Speed Up transactions
- Build your own feed to monitor Speed Ups on any contract or wallet address
Want to learn more about the pre-chain layer? Check out our guides like What Are ETH Gas Fees and Understanding Ethereum Transaction Simulation.
This post was co-authored by Matt Cutler, Sean O'Connor, and Chris Meisl. If you've encountered a Dapp that does a great job of handling Speed Up transactions, please let us know.
Master the Mempool today.
Blocknative's proven & powerful enterprise-grade infrastructure makes it easy for builders and traders to work with mempool data.Start for free