High Network Congestion on Ethereum Causing DeFi Issues

When it comes to transacting on Ethereum, many DeFi applications have recently suffered from delays due to hight network congestion. In particular, services such as opening a CDP on Maker, lending on Compound or transferring assets to and from wallets such as Metamask or Coinbase wallet have been problematic due to unclear gas standards. As such, transactions have gotten *stuck*, resulting in wallets being unable to process further transactions until the original transaction either clears or is dropped from the mempool.

Why Does this Happen?

In practice, many services will set a flat gas fee to process all transactions. During times of high congestion, this flat fee may fall beneath the threshold necessary for miners to include it in the next block. As a result, a transaction may be displayed as “pending” for a long period of time (generally up to a week before it gets dropped from the mempool), often returning as “failed” in the large majority of these cases.

Seeing as gas prices are a feature that the average user is likely not too familiar with, web 3.0 wallets on Ethereum have included functionality to “cancel” or “speed up” transactions at any given time. Before we dive into these topics, let’s define a few key terms

  • Gas – Used to process a transaction on Ethereum. Denoted in terms of wei, the smallest unit of ether
  • Nonce – The order of transactions on any given account. A transaction with nonce 1 was inherinitely created before a transaction with nonce 2
  • Zero Value – A transaction that contains no ETH (or other ERC token) other than the gas price itself

Cancel Transactions

A Cancel transaction is an attempt to overwrite a currently pending transaction with a new transaction. In practice, many users may want to cancel a transaction when they realize that it is unlikely to be included in the mempool (often due to a lower gas fee than the network requires at a given time). Typically, a Cancel transaction will have:

  • An identical nonce,
  • From the same Wallet address,
  • Sent from an external account (not a smart contract), with
  • At least a 10% higher gas fee, but
  • Zero value, and
  • Gets signed-and-successfully-submitted before the original transaction is confirmed.

Theoretically speaking, miners are incentivized to prioritize transactions with more gas. Seeing as the cancelled transaction has a higher gas fee, it *should* be confirmed before the original transaction – even though it entered the mempool later. As such, a successful cancel attempt will remove the original transaction from the mempool, clearing your wallet for a new transaction moving forward.

Speed Up Transactions

For users who do not wish to cancel the transaction but rather fix the underlying gas fee in an attempt to have it included in the mempool, Speed Up transactions offer a similar process to Cancel Transactions with the end goal of having the original transaction approved. Speed Up transactions are virtually identical to Cancel transactions – with one critical difference.

A Speed Up transaction is an attempt to overwrite a currently pending transaction with a new transaction.

How does this differ?

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. 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 (different from 0 value in Cancel tx), plus
  • Gets signed-and-successfully-submitted before the original transaction is confirmed.

In practice, the only difference between Cancel and Speed up is the value of the resubmitted transaction. 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.

Why is this Important?

As Ethereum and it’s ecosystem continue to evolve, it’s crucial to provide functionality for users to *fix* a transaction in any given situation. Whether it’s a third party like Coinbase or a wallet you control like Metamask, staying up to date with the suggested gas price can be meticulous and in rare cases misleading. Whereas most DeFi applications will use a standard site such as the Ethereum Gas Station there are certainly times when wallets can or do not account for recent network congestion. In these scenarios, your wallet is essentially *stuck* on the pending nonce until that transaction is resolved. This means that until your transaction is either canceled or sped up, none of the other transactions that follow can be processed.

Whereas before, non-technical users were more or less screwed when submitting a transaction that didn’t get included in the mempool, these new functions provide some remedy for a quick fix. Similarly, while it is rare for dApps to submit transactions with less than suggested gas fees, it’s important to recognize that for many businesses that bore the cost of transactions, setting the rate as low as possible is inherently in their best interest to cut costs.

Thankfully, certain wallets such as Metamask have included these functions directly into the UX of any given transaction for a quick and easy way to utilize the features described above. With these remedies in place, it now becomes easier for third parties submitting transactions to ensure that any pending transactions are resolved in a timely manner.

Conclusion

As Ethereum keeps making progress towards Ethereum 2.0 and Serenity, higher throughput should theoretically make this problem even rarer than it is today. As such, the likelihood of transactions not being included in the mempool may soon become a thing of the past. There have even been talks of a protocol wide base gas fee with the option for any users to incentivize validators with an extra *tip* when speed is a priority.

With this in mind, it’s comforting for average dApp users to know that Ethereum 1.X is continuing to iterate on the way(s) in which hassles stuck as stuck transactions can become a thing of the past. These improvements should make for a much swifter onboarding experience the next time we see a wave of new users swarming to the Ethereum ecosystem.

Leave a Comment