This is a legacy Sophon v1 technical reference. The chain is being wound down and
should not be used for a new production deployment.
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
Learn more about execution differences