Native AA vs EIP 4337
The native account abstraction of ZKsync and Ethereum's EIP 4337 aim to enhance accounts' flexibility and user experience, but they differ in critical aspects listed below:
- Implementation Level: ZKsync's account abstraction is integrated at the protocol level; however, EIP 4337 avoids the implementation at the protocol level.
- Account Types: on ZKsync Era, smart contract accounts and paymasters are first-class citizens. Under the hood, all accounts (even EOAs) behave like smart contract accounts; all accounts support paymasters.
- Transaction Processing: EIP 4337 introduces a separate transaction flow for smart contract accounts, which relies on a separate mempool for user operations, and Bundlers - nodes that bundle user operations and sends them to be processed by the EntryPoint contract, resulting in two separate transaction flows. In contrast, on ZKsync Era there is a unified mempool for transactions from both Externally Owned Accounts (EOAs) and smart contract accounts. On ZKsync Era, the Operator takes on the role of bundling transactions, irrespective of the account type, and sends them to the Bootloader (similar to the EntryPoint contract), which results in a single mempool and transaction flow.
- Paymasters support: ZKsync Era allows both EOAs and smart contract accounts to benefit from paymasters thanks to its single transaction flow. On the other hand, EIP 4337 does not support paymasters for EOAs because paymasters are only implemented in the new transaction flow for smart contract accounts.