Exploration of how can batch transactions save up to 90% in gas on Ethereum.
Transactions on Ethereum can easily cost more than $200 in gas. Many projects work hard to solve this problem. Some say you need alternative chains outside of Ethereum. Others say L2s are the solution, and everything needs to stay tightly connected to Ethereum.
Regardless of which camp you support, the truth is that most value is still sitting on Ethereum L1, where gas is unbearable. According to DeFiLlama, $113.89B is locked on Ethereum, with Terra as second and third BSC. In the Ethereum Layer 2 space, Arbitrum leads the charts with $3.65B locked, followed by dYdX ($1.00B TVL) and Optimism ($686M TVL). Most interesting apps and opportunities are still on Ethereum.
Many of us have deposits inside protocols on Ethereum. Sometimes, those deposits are not large, and it is economically infeasible to withdraw (gas costs more than the deposit is worth). Or we want to deposit into some smart contract that only exists on Ethereum today, but high gas prices are holding us off.
A question arises:
Batch transactions let people save up to 90% in gas on Ethereum L1. Instead of sending a costly transaction on your own, you can batch it with other people and split the gas. Let me explain how batch transactions work using the following diagram:
The left part of the diagram shows a single (non-batch) transaction which costs 1M in gas for the user.
The right part shows when multiple users join a batch transaction. Extra “batch smart contract” is involved, which serves as a proxy between the users and the “expensive smart contract”. In this case, funds are pulled into the batch smart contract (gas cost is only 90k) from all batch users and deposited into the “expensive smart contract” as a single transaction.
The result is that in the case of batch transactions, each user only pays 363.33k in gas. This equals 69% in gas savings with just 3 batch participants. Savings increase with more people in the batch.
At Wido, we built batch transactions for deposits and withdrawals into yearn.finance and pickle.finance vaults.
Following are examples of recent batch transactions and gas savings:
(1) Withdraw USDC from yvCurve-stETH
(2) Withdraw USDC from yvUSDC 0.3.0 and deposit into yvUSDC 0.4.3 (vault migration)
You can see more recent batches and learn more about the product on the Wido Batch Transactions page. If you are interested in more details on how it works, check this article.
Below is a chart showing the ratio between gas savings and batch size. It was calculated for this transaction (deposit USDC into the Curve Frax vault by yearn.finance using a Zap). The numbers will differ slightly for different transactions.
As you can see, with just three people in the batch, everyone saves 60% in gas. With 20 batch participants, the gas savings are almost 90% for each batch participant.
We are happy with the initial results and would love to take Wido batch transactions to the next level to let more people and protocols benefit from gas savings.
We are looking for:
We think we can extend batch transactions to pretty much any transaction on Ethereum L1, and we need your help to get there.
Go to app.joinwido.com, filter vaults on Ethereum and look for gasless deposits, withdrawals or migrations.