- Notifications
You must be signed in to change notification settings - Fork12
mds1/convex-shutdown-simulation
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This repository benchmarks performance of various Ethereum developmentframeworks by simulating a call to Convex'ssystemShutdown
method. This methoduses about 16M gas and performs a number of token transfers
Benchmarks were run at mainnet block 14,445,961. Blocknative only simulates against the latest block (support for simulation at historical blocks is planned), so the Blocknative simulation was run first and other benchmarks were run against the same block.
Notes on benchmarks:
- "Remote RPC" benchmarks used Alchemy as the RPC provider, connected over HTTP.
- "Local RPC" benchmarks used a local Erigon node.
- "Cached" benchmarks use RPC responses that the framework caches locally instead of making HTTP requests. We assume that since Blocknative and Tenderly are infrastructure providers, they aggressively cache and load hot data in-memory to improve performance, which is why their results are also in the "Cached" column.
- Benchmarks were performed on macOS 11.6.2 with a 2.3 GHz 8-Core Intel Core i9 and 32 GB 2667 MHz DDR4.
Framework | Version |
---|---|
Blocknative | HTTP request on 2021-03-23 |
Dapptools | dapp 0.35.0, hevm 0.49.0 |
Ganache | 7.5.0 |
Hardhat | 2.12.3 |
Foundry | forge 0.2.0 (250cc85 2022-12-02T00:18:26.200251Z) |
Tenderly | HTTP request on 2021-03-23 |
Framework | Remote RPC | Local RPC | Cached |
---|---|---|---|
Blocknative | N/A | N/A | 0m3.529s |
Dapptools | 52m17.447s | 17m34.869s | 3m25.896s |
Ganache | 7m24.070s | 0m29.631s | 0m15.665s |
Hardhat | 6m17.896s | 0m25.642s | 0m9.110s |
Foundry | 5m55.141s | 0m11.606s | 0m0.999s |
Tenderly | N/A | N/A | 0m1.9315s |
Notes on gas usage:
- Ganache, Hardhat, and Tenderly all agree on gas usage after refunds and are therefore likely the truth value.
- Foundry usage matches those values: The debugger shows the actual call costs 22,558,945 gas. Adding 21,000 intrinsic gas and 64 gas for calldata (both are excluded from the reported gas number by default) gives the same amount reported by Hardhat and others. The remaining 2995 gas is overhead from the contract based setup and Solidity-generated call checks.
- Blocknative's gas usage does not account for refunds as this is not yet supported by their platform.
- Dapptools' gas usage also does not account for refunds.
Framework | Gas Used |
---|---|
Blocknative | 26,668,845 |
Dapptools | 24,066,128 |
Ganache | 22,580,009 |
Hardhat | 22,580,009 |
Foundry | 22,561,940 |
Tenderly | 22,580,009 |
Run
cp .env.example .env
, and in the resulting.env
file enter a URL to an Ethereum archive node in theETH_RPC_URL
environment variable. (Alchemy provides free archive node data). Also fill out theTENDERLY_*
variables to benchmark the Tenderly APIRun
yarn
to install dependencies for Ganache and HardhatInstall Foundry's forge and Dapptools using the installation instructionshere andhere respectively
Run
dapp update
to install dependencies for Dapptools and FoundryRun any command in the
Makefile
to benchmark that tool. For example, usemake benchmark-hardhat
to run the simulation against Hardhat. Alternatively, runmake benchmark-all
to run all tools
- Set
export CLEAR_CACHE=1
in your.env
file to clear the Ganache and Hardhat caches - Consider running the benchmarks via Docker. See the comment header inthe Dockerfile for details.
About
Simulates a call to Convex Finance's system shutdown method, which uses about 16M gas
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors6
Uh oh!
There was an error while loading.Please reload this page.