eth-infinitism/account-abstraction
eth-infinitism/account-abstraction has 1,941 GitHub stars and 840 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-07 00:58 UTC. Last push 2026-01-25.
This repository contains the tools and resources for working with ERC-4337 Account Abstraction smart contracts. This includes the code for the singleton EntryPoint contract that is deployed by our team on most EVM-compatible networks.
Measured star growth
- in 24h
- +1
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalDescription
This repository contains the tools and resources for working with ERC-4337 Account Abstraction smart contracts. This includes the code for the singleton EntryPoint contract that is deployed by our team on most EVM-compatible networks.
Overview
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
Repository Structure
Core Components
- 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
Sample Implementations
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
Developer setup
Installation
Clone the repository:
git clone https://github.com/eth-infinitism/account-abstraction.git
cd account-abstraction
yarn install
Compilation:
yarn compile
Testing:
yarn test
Entrypoint Deployment
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 address 0x4337084d9e255ff0702461cf8895ce9e3b5ff108
This repository also includes a number of audited base classes and utilities that can simplify the development of AA related contracts.
Usage
For projects integrating the library
If you are building a project that uses account abstraction and want to integrate our contracts:
yarn add @account-abstraction/contracts
For Paymaster development
import "@account-abstraction/contracts/core/BasePaymaster.sol";
contract MyCustomPaymaster is BasePaymaster {
/// implement your gas payment logic here
function _validatePaymasterUserOp(
PackedUserOperation calldata userOp,
bytes32 userOpHash,
uint256 maxCost
) internal virtual override returns (bytes memory context, uint256 validationData) {
context = “”; // specify “context” if needed in postOp call.
validationData = _packValidationData(
false,
validUntil,
validAfter
);
}
}
For Smart Contract Account development
import "@account-abstraction/contracts/core/BaseAccount.sol";
contract MyAccount is BaseAccount {
/// implement your authentication logic here
function _validateSignature(PackedUserOperation calldata userOp, bytes32 userOpHash)
internal override virtual returns (uint256 validationData) {
// UserOpHash can be generated using eth_signTypedData_v4
if (owner != ECDSA.recover(userOpHash, userOp.signature))
return SIG_VALIDATION_FAILED;
return SIG_VALIDATION_SUCCESS;
}
}
Resources
- 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
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,541 starspublic-apis/public-apis
A collective list of free APIs
496,818 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
438,945 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,094 stars