“What we really need to cancel is 2020”. I’m not quite where Lebron James is at (I’m actually very excited about what 2020 holds for Ethereum), but there’s no doubt the last couple of days have been challenging for our team and the wider community.
I wanted to share our thoughts on the Ethereum network’s recent congestion, its impact on Argent wallet owners, and the lessons we learned.
In summary, while the majority of cases were fine there’s clearly things we need to improve further.
We’ll work on five points:
- Improving the visibility of transaction statuses
- Giving you more granular control of transactions in an emergency
- Managing expectations during congestion
- Doing our bit to help minimise congestion
- Improving trading within Argent
Now, to start with some context.
What actually happened?
From Wednesday night the Ethereum network got extremely congested. Gas prices rocketed 900% compared to their average (100 gwei vs the usual <10 gwei). Eth Gas Station even recommended 119 gwei for a slow transaction at one point.
This caused transactions across the network to fail. (For more on the role gas plays in Ethereum, see this post).
Why did this happen?
The price of ETH fell dramatically (over 40% in a day) and this liquidated many people’s Collateralised Debt Positions, as well as their leveraged positions with dYdX. The volume of transactions surged as people reacted, clogging the network.
What this meant for Argent
Unfortunately some transactions failed for Argent wallet owners, as they did for people across the network. We understand this was frustrating and concerning. Our team worked through the night to figure out how to give Argent’s community the best chance of having their transactions go through.
Before going further it’s worth quickly explaining how transactions at Argent work. We’re a non-custodial wallet (we don’t hold your assets) but we do pay the gas. How?
We use a system called meta-transactions. With this you authorise a transaction and this information is sent to a relayer that pays the transaction and sends it to the destination. The relayer is also non-custodial — it can’t tamper with a transaction.
In the last couple of days, we used this system to maximise Argent users’ chances of their transactions going through, despite the congestion.
As an example of this, we’ve spent a total of 55 ETH on gas since Wednesday.
We sent ALL transaction at FAST gas price, paying up to 200–220 gwei for some of the more expensive ones, even hitting 300 gwei on a couple of occasions.
Overall we believe this gave Argent owners a better chance to get a transaction through than any other wallet. But things were far from perfect and we know paying that kind of gas is not sustainable.
Lessons learned
Here are some of the lessons we learned and what we’re doing about them.
1. Visibility of transaction statuses
We need to improve Argent wallet owners’ visibility of their transaction statuses. As quickly as possible telling them if it succeeded or not.
Today the status can sometimes lag as we have a complex system that can dynamically increase gas for transactions without the sender noticing (as we pay for it behind the scenes). The adjustments cause the transaction hash to change and the app might not get the latest status.
If you got in touch with our support the last couple of days, this is why refreshing data in Argent worked.
What are we doing to improve it?
We’re putting the final touches on a more dynamic update system. It has actually been live for many iOS users already. It should be live for everyone, including on Android, by the end of the month.
2. More granular control over transactions
We pay the gas and while we always send everything FAST during congestion, there may be an emergency when you want to go even faster. You may, for example, want to close your CDP with 500 gwei gas price. Today you can only do that by using our Emergency Kit.
What are we doing to improve it?
We’ll make it possible in the app for you to pay the gas for a super fast transaction in an emergency.
3. Managing expectations during congestion
A side effect of us abstracting gas from users is that they are unaware when there’s congestion.
What are we doing to improve it?
During congestion we will show a clear warning in the app. This links to the next point.
4. Doing our bit to help minimise congestion
Gas is designed to regulate the network’s usage to minimize the chance of congestion. Some of the transactions our users made (e.g. a few Dai to a friend, or an exchange) weren’t urgent and could likely have waited until the congestion died down.
What are we doing to improve it?
We’ll introduce a fair use policy for gas. This is still to be defined but will likely mean that each user has a certain gas allowance a month. They can go over it, but they’d cover the cost. At a time of congestion they may see the gas required and decide to wait for it to die down.
It’s important to note that core security actions for your wallet (e.g. adding / removing Guardians, recovery, etc.) will always stay free.
5. Exchange improvements
The last couple of days showed we can do a better job of helping people exchange during high market volatility. Some trades failed as even with 1% slippage the market moved too fast.
What are we doing to improve it?
We’re implementing token to token transactions without the need to go through ETH. So you can go from DAI to USDC, for example, and not DAI-ETH-USDC.
We’re also working on exchange routing to seamlessly connect to several DEXs within Argent. Depending on what’s best for you we’ll route the trade to the best DEX or even split it amongst multiple DEXs to limit slippage.
The conclusion
To wrap up, we’re grateful to all our users for weathering the volatility and we’re excited about an even stronger Argent in the months to come.