An open API service indexing awesome lists of open source software.

https://github.com/alchemyplatform/aa-benchmarks


https://github.com/alchemyplatform/aa-benchmarks

Last synced: 12 months ago
JSON representation

Awesome Lists containing this project

README

          

# Smart Account Benchmarks

These comprehensive benchmarks are intended to serve as a resource for evaluating popular ERC-4337 compatible smart contract accounts. They are built on Hardhat for accurate, transaction-based fee measurements (see [Methodology](#methodology)) and for use of existing TypeScript utilities around fee calculations.

## Methodology

When using smart contract accounts, it's important to consider both deployment gas costs and transaction gas costs which are dependent on the contract implementation. Unlike EOAs, smart contract accounts incur gas costs when being deployed on each chain.
This tool seeks to measure the cost of the entire transaction landed on-chain for each action, including associated L1 fees. As smart accounts are expected to proliferate on L2s, it's important to consider L1 fees (measured as a function of the RLP-encoded signed transaction and the blob gas market) on top of L2 execution costs. L1 fees can impact the cost of transactions on L2s, so optimizing the size of calldata is important.

The L1 fee calculations are done following the formula and constants specified in [Optimism Ecotone](https://docs.optimism.io/stack/transactions/fees#ecotone).

There are two different categories of benchmarks measured in this test: **User Operation** and **Runtime**.

- **User Operation**: This test measures the onchain cost for a bundler to execute the user operation in a bundle of size 1, to present a lower-bound fee required for the user operation to land in an exclusive bundle. The cost per individual user operation can vary, because each bundler may calculate pre-verification gas differently and the costs can differ based on the number of user operations in a bundle. This benchmark, much like most other benchmarks, calculates fees based on the transaction receipt and the serialized signed EIP-1559 transaction for `entryPoint.handleUserOp([userOp])`. As multi-user-op bundles become more prevalent, we can expect actual fees to undercut the data presented here.
- **Runtime**: Runtime transactions are defined as those performed outside of the ERC-4337 flow. This can be done by calling from one smart account into another during the execution phase in ERC-4337, or by using an EOA account to initiate a transaction and skip the ERC-4337 EntryPoint contract. While this is a possible flow with smart accounts, it is uncommon in practice. Runtime benchmarks can be found within each chain's benchmark page. For this flow, fees are also calculated based on the transaction's receipt and the serialized signed EIP-1559 transaction.

Below, we compare the deployment costs and various transaction costs across multiple popular smart contract account implementations.

## Results

These numbers are derived from local simulations with fixed inputs (see [Run benchmark](#run-benchmark) below to try different inputs) and actual on-chain numbers may differ.

Relative costs are computed relative to Alchemy Modular Account v2. Latest fees were benchmarked on 2025-01-30. High blob fees were benchmarked on 2024-03-31.

#### ⛽️ Benchmarks for other networks

[Ethereum Mainnet](/benchmarks/ethereum.md) | [Arbitrum Mainnet](/benchmarks/arbitrum.md) | [Polygon Mainnet](/benchmarks/polygon.md) | **Optimism Mainnet** | [Base Mainnet](/benchmarks/base.md) | [Zora Mainnet](/benchmarks/zora.md)

---

### Optimism Mainnet

#### Run parameters

| Parameter | Latest | High Blob Fees |
| :------------------- | ------------: | -------------: |
| Gas price (gwei) | `0.001000555` | `0.060233618` |
| L1 base fee (gwei) | `1.121228232` | `24.05` |
| L1 base fee scalar | `5227` | `1368` |
| Blob base fee (wei) | `7736427` | `46930000000` |
| Blob base fee scalar | `1014213` | `810949` |
| ETH price (USD) | `$3192.59` | `-` |

#### Account creation

##### Total fee (USD)

| | Absolute - Latest | Absolute - High Blob Fees | Relative - Latest | Relative - High Blob Fees |
| :------------------------------------- | ----------------: | ------------------------: | ----------------: | ------------------------: |
| Alchemy Modular Account v2 | `$0.00036` | `$0.03651` | `100.00%` | `100.00%` |
| Biconomy Nexus | `$0.00074` | `$0.06471` | `204.96%` | `177.24%` |
| ZeroDev Kernel v3.1 | `$0.00067` | `$0.06984` | `186.38%` | `191.30%` |
| Safe v1.4.1 (non-modular) | `$0.00104` | `$0.10092` | `290.60%` | `276.41%` |
| Alchemy Light Account v2 (non-modular) | `$0.00059` | `$0.05033` | `163.97%` | `137.86%` |
| Coinbase Smart Wallet (non-modular) | `$0.00067` | `$0.05933` | `186.20%` | `162.52%` |
| Simple Account (non-modular) | `$0.00060` | `$0.05176` | `168.44%` | `141.78%` |

Details

##### Latest

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `97772` | `0.000000098` | `2300` | `0.000000015` | `0.000000112` | `$0.00036` |
| Biconomy Nexus | `210309` | `0.000000210` | `3152` | `0.000000020` | `0.000000230` | `$0.00074` |
| ZeroDev Kernel v3.1 | `180465` | `0.000000181` | `4564` | `0.000000029` | `0.000000210` | `$0.00067` |
| Safe v1.4.1 (non-modular) | `289207` | `0.000000289` | `5884` | `0.000000037` | `0.000000327` | `$0.00104` |
| Alchemy Light Account v2 (non-modular) | `169655` | `0.000000170` | `2300` | `0.000000015` | `0.000000184` | `$0.00059` |
| Coinbase Smart Wallet (non-modular) | `190525` | `0.000000191` | `2948` | `0.000000019` | `0.000000209` | `$0.00067` |
| Simple Account (non-modular) | `174219` | `0.000000174` | `2372` | `0.000000015` | `0.000000189` | `$0.00060` |

##### High Blob Fees

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `97772` | `0.000005889` | `2300` | `0.000005546` | `0.000011436` | `$0.03651` |
| Biconomy Nexus | `210309` | `0.000012668` | `3152` | `0.000007601` | `0.000020269` | `$0.06471` |
| ZeroDev Kernel v3.1 | `180465` | `0.000010870` | `4564` | `0.000011006` | `0.000021876` | `$0.06984` |
| Safe v1.4.1 (non-modular) | `289207` | `0.000017420` | `5884` | `0.000014189` | `0.000031609` | `$0.10092` |
| Alchemy Light Account v2 (non-modular) | `169655` | `0.000010219` | `2300` | `0.000005546` | `0.000015765` | `$0.05033` |
| Coinbase Smart Wallet (non-modular) | `190525` | `0.000011476` | `2948` | `0.000007109` | `0.000018585` | `$0.05933` |
| Simple Account (non-modular) | `174219` | `0.000010494` | `2372` | `0.000005720` | `0.000016214` | `$0.05176` |

#### User Operation: Native transfer

##### Total fee (USD)

| | Absolute - Latest | Absolute - High Blob Fees | Relative - Latest | Relative - High Blob Fees |
| :------------------------------------- | ----------------: | ------------------------: | ----------------: | ------------------------: |
| Alchemy Modular Account v2 | `$0.00065` | `$0.08408` | `100.00%` | `100.00%` |
| Biconomy Nexus | `$0.00067` | `$0.08772` | `103.81%` | `104.33%` |
| ZeroDev Kernel v3.1 | `$0.00076` | `$0.09319` | `117.05%` | `110.84%` |
| Safe v1.4.1 (non-modular) | `$0.00071` | `$0.09137` | `110.33%` | `108.68%` |
| Alchemy Light Account v2 (non-modular) | `$0.00062` | `$0.08253` | `96.23%` | `98.16%` |
| Coinbase Smart Wallet (non-modular) | `$0.00066` | `$0.09018` | `101.69%` | `107.25%` |
| Simple Account (non-modular) | `$0.00062` | `$0.08242` | `96.14%` | `98.02%` |

Details

##### Latest

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `158725` | `0.000000159` | `6956` | `0.000000044` | `0.000000203` | `$0.00065` |
| Biconomy Nexus | `164351` | `0.000000164` | `7288` | `0.000000046` | `0.000000211` | `$0.00067` |
| ZeroDev Kernel v3.1 | `190912` | `0.000000191` | `7336` | `0.000000047` | `0.000000238` | `$0.00076` |
| Safe v1.4.1 (non-modular) | `176479` | `0.000000177` | `7460` | `0.000000047` | `0.000000224` | `$0.00071` |
| Alchemy Light Account v2 (non-modular) | `151148` | `0.000000151` | `6944` | `0.000000044` | `0.000000195` | `$0.00062` |
| Coinbase Smart Wallet (non-modular) | `156812` | `0.000000157` | `7796` | `0.000000050` | `0.000000206` | `$0.00066` |
| Simple Account (non-modular) | `151045` | `0.000000151` | `6932` | `0.000000044` | `0.000000195` | `$0.00062` |

##### High Blob Fees

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `158725` | `0.000009561` | `6956` | `0.000016774` | `0.000026335` | `$0.08408` |
| Biconomy Nexus | `164351` | `0.000009899` | `7288` | `0.000017575` | `0.000027475` | `$0.08772` |
| ZeroDev Kernel v3.1 | `190912` | `0.000011499` | `7336` | `0.000017691` | `0.000029190` | `$0.09319` |
| Safe v1.4.1 (non-modular) | `176479` | `0.000010630` | `7460` | `0.000017990` | `0.000028620` | `$0.09137` |
| Alchemy Light Account v2 (non-modular) | `151148` | `0.000009104` | `6944` | `0.000016746` | `0.000025850` | `$0.08253` |
| Coinbase Smart Wallet (non-modular) | `156812` | `0.000009445` | `7796` | `0.000018800` | `0.000028246` | `$0.09018` |
| Simple Account (non-modular) | `151045` | `0.000009098` | `6932` | `0.000016717` | `0.000025815` | `$0.08242` |

#### User Operation: ERC-20 transfer

##### Total fee (USD)

| | Absolute - Latest | Absolute - High Blob Fees | Relative - Latest | Relative - High Blob Fees |
| :------------------------------------- | ----------------: | ------------------------: | ----------------: | ------------------------: |
| Alchemy Modular Account v2 | `$0.00074` | `$0.09385` | `100.00%` | `100.00%` |
| Biconomy Nexus | `$0.00076` | `$0.09638` | `102.89%` | `102.70%` |
| ZeroDev Kernel v3.1 | `$0.00085` | `$0.10179` | `114.54%` | `108.46%` |
| Safe v1.4.1 (non-modular) | `$0.00081` | `$0.10112` | `109.17%` | `107.74%` |
| Alchemy Light Account v2 (non-modular) | `$0.00071` | `$0.09234` | `96.78%` | `98.39%` |
| Coinbase Smart Wallet (non-modular) | `$0.00075` | `$0.09991` | `101.56%` | `106.45%` |
| Simple Account (non-modular) | `$0.00071` | `$0.09234` | `96.77%` | `98.39%` |

Details

##### Latest

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `182665` | `0.000000183` | `7628` | `0.000000048` | `0.000000231` | `$0.00074` |
| Biconomy Nexus | `188136` | `0.000000188` | `7820` | `0.000000050` | `0.000000238` | `$0.00076` |
| ZeroDev Kernel v3.1 | `214817` | `0.000000215` | `7856` | `0.000000050` | `0.000000265` | `$0.00085` |
| Safe v1.4.1 (non-modular) | `200732` | `0.000000201` | `8120` | `0.000000052` | `0.000000252` | `$0.00081` |
| Alchemy Light Account v2 (non-modular) | `175294` | `0.000000175` | `7616` | `0.000000048` | `0.000000224` | `$0.00071` |
| Coinbase Smart Wallet (non-modular) | `181014` | `0.000000181` | `8456` | `0.000000054` | `0.000000235` | `$0.00075` |
| Simple Account (non-modular) | `175283` | `0.000000175` | `7616` | `0.000000048` | `0.000000224` | `$0.00071` |

##### High Blob Fees

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `182665` | `0.000011003` | `7628` | `0.000018395` | `0.000029398` | `$0.09385` |
| Biconomy Nexus | `188136` | `0.000011332` | `7820` | `0.000018858` | `0.000030190` | `$0.09638` |
| ZeroDev Kernel v3.1 | `214817` | `0.000012939` | `7856` | `0.000018945` | `0.000031884` | `$0.10179` |
| Safe v1.4.1 (non-modular) | `200732` | `0.000012091` | `8120` | `0.000019582` | `0.000031672` | `$0.10112` |
| Alchemy Light Account v2 (non-modular) | `175294` | `0.000010559` | `7616` | `0.000018366` | `0.000028925` | `$0.09234` |
| Coinbase Smart Wallet (non-modular) | `181014` | `0.000010903` | `8456` | `0.000020392` | `0.000031295` | `$0.09991` |
| Simple Account (non-modular) | `175283` | `0.000010558` | `7616` | `0.000018366` | `0.000028924` | `$0.09234` |

#### User Operation: Uniswap V3 ERC-20 swap

##### Total fee (USD)

| | Absolute - Latest | Absolute - High Blob Fees | Relative - Latest | Relative - High Blob Fees |
| :------------------------------------- | ----------------: | ------------------------: | ----------------: | ------------------------: |
| Alchemy Modular Account v2 | `$0.00083` | `$0.10825` | `100.00%` | `100.00%` |
| Biconomy Nexus | `$0.00085` | `$0.11060` | `102.53%` | `102.17%` |
| ZeroDev Kernel v3.1 | `$0.00094` | `$0.11599` | `113.05%` | `107.15%` |
| Safe v1.4.1 (non-modular) | `$0.00090` | `$0.11554` | `108.38%` | `106.73%` |
| Alchemy Light Account v2 (non-modular) | `$0.00080` | `$0.10646` | `97.03%` | `98.35%` |
| Coinbase Smart Wallet (non-modular) | `$0.00084` | `$0.11430` | `101.53%` | `105.59%` |
| Simple Account (non-modular) | `$0.00080` | `$0.10673` | `97.25%` | `98.59%` |

Details

##### Latest

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `201790` | `0.000000202` | `9020` | `0.000000057` | `0.000000259` | `$0.00083` |
| Biconomy Nexus | `207286` | `0.000000207` | `9188` | `0.000000058` | `0.000000266` | `$0.00085` |
| ZeroDev Kernel v3.1 | `234378` | `0.000000235` | `9212` | `0.000000059` | `0.000000293` | `$0.00094` |
| Safe v1.4.1 (non-modular) | `220464` | `0.000000221` | `9500` | `0.000000060` | `0.000000281` | `$0.00090` |
| Alchemy Light Account v2 (non-modular) | `194407` | `0.000000195` | `8972` | `0.000000057` | `0.000000251` | `$0.00080` |
| Coinbase Smart Wallet (non-modular) | `200573` | `0.000000201` | `9836` | `0.000000062` | `0.000000263` | `$0.00084` |
| Simple Account (non-modular) | `194829` | `0.000000195` | `8996` | `0.000000057` | `0.000000252` | `$0.00080` |

##### High Blob Fees

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `201790` | `0.000012155` | `9020` | `0.000021752` | `0.000033906` | `$0.10825` |
| Biconomy Nexus | `207286` | `0.000012486` | `9188` | `0.000022157` | `0.000034643` | `$0.11060` |
| ZeroDev Kernel v3.1 | `234378` | `0.000014117` | `9212` | `0.000022215` | `0.000036332` | `$0.11599` |
| Safe v1.4.1 (non-modular) | `220464` | `0.000013279` | `9500` | `0.000022909` | `0.000036189` | `$0.11554` |
| Alchemy Light Account v2 (non-modular) | `194407` | `0.000011710` | `8972` | `0.000021636` | `0.000033346` | `$0.10646` |
| Coinbase Smart Wallet (non-modular) | `200573` | `0.000012081` | `9836` | `0.000023720` | `0.000035801` | `$0.11430` |
| Simple Account (non-modular) | `194829` | `0.000011735` | `8996` | `0.000021694` | `0.000033429` | `$0.10673` |

#### User Operation: Account creation and empty call

##### Total fee (USD)

| | Absolute - Latest | Absolute - High Blob Fees | Relative - Latest | Relative - High Blob Fees |
| :------------------------------------- | ----------------: | ------------------------: | ----------------: | ------------------------: |
| Alchemy Modular Account v2 | `$0.00090` | `$0.10261` | `100.00%` | `100.00%` |
| Biconomy Nexus | `$0.00127` | `$0.13254` | `141.59%` | `129.17%` |
| ZeroDev Kernel v3.1 | `$0.00129` | `$0.14290` | `143.44%` | `139.26%` |
| Safe v1.4.1 (non-modular) | `$0.00163` | `$0.17268` | `181.29%` | `168.29%` |
| Alchemy Light Account v2 (non-modular) | `$0.00109` | `$0.11393` | `121.26%` | `111.03%` |
| Coinbase Smart Wallet (non-modular) | `$0.00120` | `$0.13015` | `133.54%` | `126.84%` |
| Simple Account (non-modular) | `$0.00110` | `$0.11545` | `123.07%` | `112.51%` |

Details

##### Latest

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | ------: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `233004` | `0.000000233` | `7508` | `0.000000048` | `0.000000281` | `$0.00090` |
| Biconomy Nexus | `342381` | `0.000000343` | `8664` | `0.000000055` | `0.000000398` | `$0.00127` |
| ZeroDev Kernel v3.1 | `338419` | `0.000000339` | `10108` | `0.000000064` | `0.000000403` | `$0.00129` |
| Safe v1.4.1 (non-modular) | `435486` | `0.000000436` | `11552` | `0.000000073` | `0.000000509` | `$0.00163` |
| Alchemy Light Account v2 (non-modular) | `292822` | `0.000000293` | `7484` | `0.000000048` | `0.000000341` | `$0.00109` |
| Coinbase Smart Wallet (non-modular) | `317904` | `0.000000318` | `8964` | `0.000000057` | `0.000000375` | `$0.00120` |
| Simple Account (non-modular) | `297367` | `0.000000298` | `7568` | `0.000000048` | `0.000000346` | `$0.00110` |

##### High Blob Fees

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | ------: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `233004` | `0.000014035` | `7508` | `0.000018106` | `0.000032140` | `$0.10261` |
| Biconomy Nexus | `342381` | `0.000020623` | `8664` | `0.000020893` | `0.000041516` | `$0.13254` |
| ZeroDev Kernel v3.1 | `338419` | `0.000020384` | `10108` | `0.000024376` | `0.000044760` | `$0.14290` |
| Safe v1.4.1 (non-modular) | `435486` | `0.000026231` | `11552` | `0.000027858` | `0.000054089` | `$0.17268` |
| Alchemy Light Account v2 (non-modular) | `292822` | `0.000017638` | `7484` | `0.000018048` | `0.000035686` | `$0.11393` |
| Coinbase Smart Wallet (non-modular) | `317904` | `0.000019149` | `8964` | `0.000021617` | `0.000040765` | `$0.13015` |
| Simple Account (non-modular) | `297367` | `0.000017911` | `7568` | `0.000018250` | `0.000036162` | `$0.11545` |

#### User Operation: Session key creation

##### Total fee (USD)

| | Absolute - Latest | Absolute - High Blob Fees | Relative - Latest | Relative - High Blob Fees |
| :------------------------------------- | ----------------: | ------------------------: | ----------------: | ------------------------: |
| Alchemy Modular Account v2 | `$0.00186` | `$0.20104` | `100.00%` | `100.00%` |
| Biconomy Nexus | `Unsupported` | `Unsupported` | | |
| ZeroDev Kernel v3.1 | `Unsupported` | `Unsupported` | | |
| Safe v1.4.1 (non-modular) | `Unsupported` | `Unsupported` | | |
| Alchemy Light Account v2 (non-modular) | `Unsupported` | `Unsupported` | | |
| Coinbase Smart Wallet (non-modular) | `Unsupported` | `Unsupported` | | |
| Simple Account (non-modular) | `Unsupported` | `Unsupported` | | |

Details

##### Latest

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | ------: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `495041` | `0.000000495` | `13748` | `0.000000087` | `0.000000583` | `$0.00186` |
| Biconomy Nexus | `-` | `-` | `-` | `-` | `-` | `-` |
| ZeroDev Kernel v3.1 | `-` | `-` | `-` | `-` | `-` | `-` |
| Safe v1.4.1 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Alchemy Light Account v2 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Coinbase Smart Wallet (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Simple Account (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |

##### High Blob Fees

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | ------: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `495041` | `0.000029818` | `13748` | `0.000033154` | `0.000062972` | `$0.20104` |
| Biconomy Nexus | `-` | `-` | `-` | `-` | `-` | `-` |
| ZeroDev Kernel v3.1 | `-` | `-` | `-` | `-` | `-` | `-` |
| Safe v1.4.1 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Alchemy Light Account v2 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Coinbase Smart Wallet (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Simple Account (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |

#### User Operation: Session key native transfer

##### Total fee (USD)

| | Absolute - Latest | Absolute - High Blob Fees | Relative - Latest | Relative - High Blob Fees |
| :------------------------------------- | ----------------: | ------------------------: | ----------------: | ------------------------: |
| Alchemy Modular Account v2 | `$0.00069` | `$0.08719` | `100.00%` | `100.00%` |
| Biconomy Nexus | `Unsupported` | `Unsupported` | | |
| ZeroDev Kernel v3.1 | `Unsupported` | `Unsupported` | | |
| Safe v1.4.1 (non-modular) | `Unsupported` | `Unsupported` | | |
| Alchemy Light Account v2 (non-modular) | `Unsupported` | `Unsupported` | | |
| Coinbase Smart Wallet (non-modular) | `Unsupported` | `Unsupported` | | |
| Simple Account (non-modular) | `Unsupported` | `Unsupported` | | |

Details

##### Latest

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `172036` | `0.000000172` | `7028` | `0.000000045` | `0.000000217` | `$0.00069` |
| Biconomy Nexus | `-` | `-` | `-` | `-` | `-` | `-` |
| ZeroDev Kernel v3.1 | `-` | `-` | `-` | `-` | `-` | `-` |
| Safe v1.4.1 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Alchemy Light Account v2 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Coinbase Smart Wallet (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Simple Account (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |

##### High Blob Fees

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `172036` | `0.000010362` | `7028` | `0.000016948` | `0.000027310` | `$0.08719` |
| Biconomy Nexus | `-` | `-` | `-` | `-` | `-` | `-` |
| ZeroDev Kernel v3.1 | `-` | `-` | `-` | `-` | `-` | `-` |
| Safe v1.4.1 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Alchemy Light Account v2 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Coinbase Smart Wallet (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Simple Account (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |

#### User Operation: Session key ERC-20 transfer

##### Total fee (USD)

| | Absolute - Latest | Absolute - High Blob Fees | Relative - Latest | Relative - High Blob Fees |
| :------------------------------------- | ----------------: | ------------------------: | ----------------: | ------------------------: |
| Alchemy Modular Account v2 | `$0.00079` | `$0.09722` | `100.00%` | `100.00%` |
| Biconomy Nexus | `Unsupported` | `Unsupported` | | |
| ZeroDev Kernel v3.1 | `Unsupported` | `Unsupported` | | |
| Safe v1.4.1 (non-modular) | `Unsupported` | `Unsupported` | | |
| Alchemy Light Account v2 (non-modular) | `Unsupported` | `Unsupported` | | |
| Coinbase Smart Wallet (non-modular) | `Unsupported` | `Unsupported` | | |
| Simple Account (non-modular) | `Unsupported` | `Unsupported` | | |

Details

##### Latest

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `197295` | `0.000000197` | `7700` | `0.000000049` | `0.000000246` | `$0.00079` |
| Biconomy Nexus | `-` | `-` | `-` | `-` | `-` | `-` |
| ZeroDev Kernel v3.1 | `-` | `-` | `-` | `-` | `-` | `-` |
| Safe v1.4.1 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Alchemy Light Account v2 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Coinbase Smart Wallet (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Simple Account (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |

##### High Blob Fees

| | Execution gas | Execution fee (ETH) | L1 gas | L1 fee (ETH) | Total fee (ETH) | Total fee (USD) |
| :------------------------------------- | ------------: | ------------------: | -----: | ------------: | --------------: | --------------: |
| Alchemy Modular Account v2 | `197295` | `0.000011884` | `7700` | `0.000018569` | `0.000030452` | `$0.09722` |
| Biconomy Nexus | `-` | `-` | `-` | `-` | `-` | `-` |
| ZeroDev Kernel v3.1 | `-` | `-` | `-` | `-` | `-` | `-` |
| Safe v1.4.1 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Alchemy Light Account v2 (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Coinbase Smart Wallet (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |
| Simple Account (non-modular) | `-` | `-` | `-` | `-` | `-` | `-` |

## Run benchmark

Copy `.env.sample` to `.env` and update the values within `.env`:

```bash
cp .env.sample .env
```

Test running the benchmarks over the supported accounts and see the results in your terminal:

```bash
pnpm benchmark
```

Run the benchmarks and update this file with the new results:

```bash
pnpm benchmark:write
```

## Scripts

### Fetch fee snapshot

Fetch the current fee snapshot for the supported chains. This will output the most up-to-date values for the environment variables that you can copy into your `.env` file.

```bash
pnpm fetch-fee-snapshot
```

### Verify L1 gas

Verify the L1 gas used and the L1 fee paid for a given transaction hash. Run this script with a recent transaction hash to validate that the logic for calculating the L1 gas and L1 fee is correct.

```bash
pnpm verify-l1-gas
```

## Contributing

To add a new smart account to this repo, follow the steps below.

1. Fork this repo.
2. Add the account's artifacts under [test/artifacts](test/artifacts/).
3. Implement the account's fixture and export an object matching the `AccountConfig` interface. Add this file under [test/accounts](test/accounts/).
4. Add your account under [test/accounts.ts](test/accounts.ts) to include your account in the benchmarks.
5. Generate the results and write to the README by running `pnpm benchmark:write`.
6. Open a PR against this repo.