ERC-4337 is a standard designed to bring Account Abstraction (AA) to Ethereum. Under Ethereum’s existing account model, user accounts (externally owned accounts, or EOAs) and contract accounts (CAs) are strictly separated, and a CA cannot issue transactions on its own. This means that whenever developers want to implement advanced features such as multisig or social recovery they typically have to rely on an EOA to trigger those contract functions and pay transaction fees, which can lead to a less streamlined user experience.
To address this, ERC-4337 introduces a separate mempool and “bundler” (block producer) mechanism that does not require major protocol-layer changes. Through this system, contract accounts (CAs) can directly initiate and sign transactions. In doing so, developers gain the flexibility to implement features like social recovery, fee sponsorship, session keys, and other custom security models, ultimately making Account Abstraction a reality on Ethereum.
In contrast to Ethereum’s approach, Solana was designed from the outset to support account abstraction at a protocol level. Below are the main reasons why Solana inherently addresses many of the issues that ERC-4337 seeks to solve:
Solana treats every account as a flexible “storage bucket,” capable of holding arbitrary data. In other words, an account on Solana is not limited to storing a simple balance or nonce:
This design naturally allows for much broader state management compared to traditional EOAs on Ethereum, which are restricted to storing only balances and nonces.
Solana smart contracts are called programs, and each program is also an account, specifically, an executable account. By contrast, a non-executable (data) account is used to store actual state (e.g., user balances, configuration data, or other custom info):
Because programs exist as dedicated accounts, developers can easily separate a contract’s logic from the storage of user or application data. In many ways, this is more modular than Ethereum’s approach, where code and state reside within the same contract account.
Eine enge Parallele zu ERC-4337s „Vertragskonto als Transaktionsinitiator“ ist Solanas Program Derived Address (PDA)-Funktion. Eine PDA ist eine Adresse, die von einem Solana-Programm selbst generiert wird, anstatt von einem privaten Schlüssel abgeleitet zu werden. Dies hat wichtige Auswirkungen:
Kein privater Schlüssel erforderlich
Benutzerdefinierte Regeln und Logik
Selbstausführende Verträge
Von der Zahlung von Transaktionsgebühren im Namen von Benutzern bis hin zur Ermöglichung fortgeschrittener Multisig-Abläufe oder automatisierter Neuausrichtung in DeFi-Protokollen bieten PDAs eine Reihe von Möglichkeiten, die nativ zu Solana gehören.
Solana also supports Cross-Program Invocation (CPI), which allows programs, and by extension their PDAs, to interact directly with one another. This is essential for composability:
For account abstraction, CPI means seamless composability among different programs and PDAs precisely the kind of flexibility ERC-4337 is designed to enable on Ethereum.
When viewed side by side, Solana’s account model and Ethereum’s ERC-4337 solution both aim to provide more dynamic, programmable user accounts. However:
| Category | Ethereum (ERC-4337) | Solana |
|---|---|---|
| Architecture | Uses bundlers and a specialized mempool | Natively supported via PDAs at the protocol level |
| Transaction Origination | Contract accounts can’t initiate transactions directly - rely on bundlers | Programs can initiate transactions directly through PDAs |
| State Storage | EOAs can only store balances and nonces | All accounts can store arbitrary custom data |
| Logic – Data Structure | Logic and state are combined in a single contract account | Logic (program) and data (account) are separated |
| Flexibility | Extended via a Layer-2-like structure | Built-in as a native feature of the core design |
Beide Ansätze zielen darauf ab, die Benutzererfahrung zu verbessern und den Umfang von Onchain-Anwendungen zu erweitern. Aber Solanas Design ist nativ und erfordert keine zusätzlichen Standards oder Vorschläge, um ähnliche Funktionalität zu erreichen.