-
Notifications
You must be signed in to change notification settings - Fork 147
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: add Choosing a Smart Account page * chore: lint * feat: benchmarks * feat: add mav2 overview * docs: update table to display diff from MAv2 as a percentage increase * docs: adding in feature table and other account details * docs: updating copy * docs: updating multisig * chore: cleanup gas benchmarks, remove runtime column * docs: clarify safe 4337 module * docs: remove sidebar link * docs: remove repeated table, add details * docs: mention ERC-4337 * docs: link audits, clarify legacy contracts * docs: rename legacy to other * docs: specify MAv2 breaking the sub-100k gas barrier * chore: format --------- Co-authored-by: Ava Robinson <[email protected]>
- Loading branch information
1 parent
ef1b3ae
commit 199eee0
Showing
4 changed files
with
159 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
--- | ||
title: Gas Benchmarks | ||
description: See gas benchmarks for multiple popular accounts and how they stack up. | ||
--- | ||
|
||
# UserOp Gas Benchmarks Table | ||
|
||
Below is a collection of gas benchmarks resulting from the open-source [aa-benchmarks repository.](https://github.com/alchemyplatform/aa-benchmarks/blob/master/README.md) Each of these tables presents the gas costs for specific operations done via userOps-- the key feature of ERC-4337 account abstraction. | ||
|
||
Note that these benchmarks are denominated in EVM gas units. For reference, a simple Uniswap swap without smart accounts typically costs in the ballpark of `150,000` gas. | ||
|
||
## Deployment | ||
|
||
| | Gas Cost | | ||
| :------------------------- | --------: | | ||
| Alchemy Modular Account v2 | `233,004` | | ||
| Biconomy Nexus | `342,381` | | ||
| ZeroDev Kernel v3.1 | `338,419` | | ||
| Safe v1.4.1 | `435,486` | | ||
| Coinbase Smart Wallet | `317,904` | | ||
| Simple Account | `297,367` | | ||
|
||
## Native Transfer | ||
|
||
| | Gas Cost | | ||
| :------------------------- | --------: | | ||
| Alchemy Modular Account v2 | `158,725` | | ||
| Biconomy Nexus | `164,351` | | ||
| ZeroDev Kernel v3.1 | `190,912` | | ||
| Safe v1.4.1 | `176,479` | | ||
| Coinbase Smart Wallet | `156,812` | | ||
| Simple Account | `151,045` | | ||
|
||
## ERC-20 Transfer | ||
|
||
| | Gas Cost | | ||
| :------------------------- | --------: | | ||
| Alchemy Modular Account v2 | `182,665` | | ||
| Biconomy Nexus | `188,136` | | ||
| ZeroDev Kernel v3.1 | `214,817` | | ||
| Safe v1.4.1 | `200,732` | | ||
| Coinbase Smart Wallet | `181,014` | | ||
| Simple Account | `175,283` | | ||
|
||
## Uniswap V3 Swap | ||
|
||
| | Gas Cost | | ||
| :------------------------- | --------: | | ||
| Alchemy Modular Account v2 | `201,790` | | ||
| Biconomy Nexus | `207,286` | | ||
| ZeroDev Kernel v3.1 | `234,378` | | ||
| Safe v1.4.1 | `220,464` | | ||
| Coinbase Smart Wallet | `200,573` | | ||
| Simple Account | `194,829` | | ||
|
||
Take a look at more detailed benchmarks as well as $USD-denominated examples [here!](https://github.com/alchemyplatform/aa-benchmarks/blob/master/README.md) |
53 changes: 53 additions & 0 deletions
53
site/pages/smart-contracts/modular-account-v2/overview.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
--- | ||
title: Modular Account V2 | ||
description: An overview of the Modular Account V2 smart account. | ||
--- | ||
|
||
# Modular Account V2 Overview | ||
|
||
Alchemy's Modular Account V2 is the most robust and feature-rich smart account on the market with top-tier enterprise grade security. Being an ERC-6900 account, MAv2 can tap into a rich ecosystem of modules comprising different authentication methods like multisig or webauthn, as well as permissions and more! | ||
|
||
With multiple developer-years of work and two comprehensive audits from [ChainLight](https://github.com/alchemyplatform/modular-account/blob/develop/audits/2024-12-03_chainlight_14afcd8.pdf) and [Quantstamp](https://github.com/alchemyplatform/modular-account/blob/develop/audits/2024-12-11_quantstamp_14afcd8.pdf), MAv2 is the most advanced smart account available: | ||
|
||
- 40%+ reduced gas costs | ||
- Rich ecosystem of modules from teams like Circle | ||
- Super simple & clean developer experience | ||
|
||
## Cost | ||
|
||
Cost matters, so gas optimization was essential throughout the whole development process. As a result, MAv2 is one of the most optimized smart contracts ever written. | ||
|
||
As an example, see the gas comparison for deployment execution costs below: | ||
|
||
| | **Runtime gas for account creation** | **% More expensive than MAv2** | | ||
| ------------------------------ | ------------------------------------ | ------------------------------ | | ||
| **Alchemy Modular Account v2** | **97,764** | - | | ||
| **ZeroDev Kernel v3** | 180,465 | 84.6% | | ||
| **Safe (with 4337 module)** | 289,207 | 195.8% | | ||
|
||
We have a whole host of open-source benchmarks [here!](/smart-contracts/gas-benchmarks.mdx) | ||
|
||
At scale, these optimizations could save tens of thousands of dollars in gas fees if not more-- all without compromising on features or security. | ||
|
||
## Modularity | ||
|
||
Along with Circle, Trust Wallet, Quantstamp and the Ethereum Foundation, we've already developed multiple plug & play modules for use with ERC-6900 accounts like MAv2. Out of the box, on the validation side, MAv2 supports session keys, Webauthn validation (passkeys/biometrics). | ||
|
||
On the permissions front, MAv2 already has first-class support for the following: | ||
|
||
- Allowlists, ensuring a validation can only access what you want it to and nothing else. | ||
- ERC-20 spend limits, think session keys with spend limits! | ||
- Native spend limits, which take gas into account. | ||
- Enforcing expiries, so your session keys can last as short or as long as you need them to. | ||
|
||
Note that these features are only possible thanks to the modular nature of ERC-6900, as they're all separate modules. This also means it's possible to combine any number of modules to perfectly fine-tune your permission set. | ||
|
||
Want a session key that's only valid for 24 hours, can only spend up to 0.001 ETH (incl. gas) and 100 USDC, all the while it's only able to authenticate calls to one specific address with one specific function? Go for it! | ||
|
||
## Simplicity | ||
|
||
Regardless of how feature-rich MAv2 is, it's all for nothing if it's not easy to use. The account standard MAv2 adheres to has over 5,000 words-- it's understandably intimidating. However, the depth of ERC-6900 allows each feature in MAv2 to be secure and ultimately extremely simple for you, the developer. | ||
|
||
Leveraging the standard's lack of ambiguity, aa-sdk can safely create high-level zero-cost abstractions, which translate down to RPC calls exactly how you expect them to. No more fighting with your tools. | ||
|
||
The SDK is designed from the ground up to get out of your way so you can focus on what matters-- building the best smart wallet experience for your app! |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.