EVM Compatibility
zkVM vs EVM Differences
Core differences between Sophon’s native zkVM and Ethereum’s EVM
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
Learn more about AA differences
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
Learn more about precompile differences
State and Storage
Nonce Handling
- Separate nonces for deployments and transactions
- Different nonce management for smart contract accounts
- Unique nonce behavior for batched transactions
Learn more about nonce differences
Storage Layout
- Different storage slot calculation
- Unique handling of immutable references
- Modified library linking process
Learn more about storage differences
Contract Lifecycle
Deployment
- Different bytecode format for native zkVM contracts
- Unique contract creation flow
- Modified CREATE/CREATE2 behavior for zkVM contracts
Learn more about deployment differences
Code Execution
- Different handling of contract calls
- Modified return data handling
- Unique error propagation model