- Notifications
You must be signed in to change notification settings - Fork724
License
eth-infinitism/account-abstraction
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This repository contains the tools and resources for working withERC-4337 Account Abstraction smart contracts. This includes the code for the singletonEntryPoint
contract that is deployed by our team on most EVM-compatible networks.
Account abstraction allows users to interact with Ethereum using smart contract wallets instead of EOAs, without compromising decentralization, providing benefits like:
- Social recovery
- Batched transactions
- Sponsored transactions (gas abstraction)
- Signature abstraction
- Advanced authorization logic
- EntryPoint Contract (
contracts/core/EntryPoint.sol
): The central contract that processes UserOperations - BaseAccount (
contracts/core/BaseAccount.sol
): Base implementation for smart contract accounts - BasePaymaster (
contracts/core/BasePaymaster.sol
): Helper class for creating a paymaster - StakeManager (
contracts/core/StakeManager.sol
): Manages deposits and stakes for accounts and paymasters - NonceManager (
contracts/core/NonceManager.sol
): Handles nonce management for accounts - UserOperationLib (
contracts/core/UserOperationLib.sol
): Utilities for working with UserOperations - Helpers (
contracts/core/Helpers.sol
): Common constants and helper functions
SimpleAccount (
contracts/accounts/SimpleAccount.sol
): Basic implementation of an ERC-4337 accountSimple7702Account (
contracts/accounts/Simple7702Account.sol
): A minimal account to be used with EIP-7702 (for batching) and ERC-4337 (for gas sponsoring)SimpleAccountFactory (
contracts/accounts/SimpleAccountFactory.sol
): A sample factory contract for SimpleAccount
git clone https://github.com/eth-infinitism/account-abstraction.gitcd account-abstractionyarn install
yarn compile
yarntest
The EntryPoint contract is the central hub for processing UserOperations. It:
- Validates UserOperations
- Handles account creation (if needed)
- Executes the requested operations
- Manages gas payments and refunds
The EntryPoint is deployed by using
hardhat deploy --network {net}
EntryPoint v0.8 is always deployed at address0x4337084d9e255ff0702461cf8895ce9e3b5ff108
This repository also includes a number of audited base classes and utilities that can simplify the development of AA related contracts.
If you are building a project that uses account abstraction and want to integrate our contracts:
yarn add @account-abstraction/contracts
import"@account-abstraction/contracts/core/BasePaymaster.sol";contractMyCustomPaymasterisBasePaymaster {/// implement your gas payment logic herefunction _validatePaymasterUserOp( PackedUserOperationcalldatauserOp,bytes32userOpHash,uint256maxCost )internalvirtualoverridereturns (bytesmemorycontext,uint256validationData) { context= “”;// specify “context” if needed in postOp call. validationData=_packValidationData(false, validUntil, validAfter ); }}
import"@account-abstraction/contracts/core/BaseAccount.sol";contract MyAccount is BaseAccount { /// implement your authentication logic herefunction_validateSignature(PackedUserOperation calldata userOp, bytes32 userOpHash) internal override virtual returns (uint256 validationData) { // UserOpHash can be generated using eth_signTypedData_v4if (owner!= ECDSA.recover(userOpHash, userOp.signature))return SIG_VALIDATION_FAILED;return SIG_VALIDATION_SUCCESS; }}
- Homepage
- Blog
- X Account
- YouTube Channel
- Bundlebear
- Vitalik Buterin - a history of account abstraction
- Beyond 4337: Vitalik Buterin's Vision for the Future of Account Abstraction
- Exploring the Future of Account Abstraction by Yoav Weiss
- Native Account Abstraction in Pectra, rollups and beyond
- Vitalik Buterin - account abstraction without Ethereum protocol changes
- Unified ERC-4337 mempool
- Bundler reference implementation
- Discord server
About
Resources
License
Uh oh!
There was an error while loading.Please reload this page.