zkVM vs EVM Differences
Sophon’s native zkVM is fundamentally different from Ethereum’s EVM as it’s designed to generate zero-knowledge proofs while executing smart contracts. While the EVM Bytecode Interpreter enables EVM compatibility (see limitations), here are the core differences between zkVM and EVM:Execution Model
- Proof Generation: zkVM operations must be ZK-proof friendly, affecting how certain operations work
- Gas Model: Uses “ergs” instead of gas, with different cost calculations for operations
- State Management: Different approach to handling state changes due to ZK-proof requirements
EVM Instruction Differences
To check what opcodes differ in behavior between Sophon and Ethereum, see the official EVM Instructions page.Native Features
Account Abstraction
Unlike EVM which requires EIP-4337 for AA, Sophon’s zkVM:- Has native account abstraction built into the VM
- Provides better performance for AA operations
- Handles nonces differently for AA accounts
Paymasters
zkVM has native support for paymasters:- Built-in paymaster functionality
- More efficient fee abstraction
- Different gas accounting for sponsored transactions
System Contracts
- Additional precompiled contracts specific to zkVM
- Different handling of system-level operations
- Native multi-transaction support
State and Storage
Nonce Handling
- Separate nonces for deployments and transactions
- Different nonce management for smart contract accounts
- Unique nonce behavior for batched transactions
Storage Layout
- Different storage slot calculation
- Unique handling of immutable references
- Modified library linking process
Contract Lifecycle
Deployment
- Different bytecode format for native zkVM contracts
- Unique contract creation flow
- Modified CREATE/CREATE2 behavior for zkVM contracts
Code Execution
- Different handling of contract calls
- Modified return data handling
- Unique error propagation model