The EVM Bytecode Interpreter is a key component of Sophon’s v27 upgrade, enabling true EVM equivalence by allowing the direct execution of unmodified EVM bytecode on Sophon’s zkEVM.
EVM equivalence means that a blockchain can execute standard EVM bytecode directly, providing:
Identical behavior to Ethereum’s EVM in all aspects
Identical address derivation for contract deployments
Full compatibility with standard Ethereum development tools
No requirement for special compilation or adaptation
This is different from mere “EVM compatibility,” which typically requires specialized tooling or compilation steps. For more details, see the official EVM Interpreter page.
The EVM Bytecode Interpreter serves as a crucial system contract that enables the execution of standard EVM bytecode on Sophon’s zkEVM, ensuring EVM equivalence. This involves:
Effortless Contract Deployment: Deploy contracts just as you would on Ethereum, using transactions without a to field and embedding contract initialization code as calldata. This process guarantees identical address derivation and behavior as on Ethereum.
Comprehensive Tool Compatibility: Utilize standard Ethereum development tools like Hardhat and Foundry without needing additional plugins or modifications.
Transparent Execution: The interpreter operates behind the scenes, invoked automatically by the protocol.
Contracts deployed in this manner are flagged as EVM bytecode and executed through the EVM interpreter. During execution, the contract’s EVM opcodes are translated into the ZKsync VM’s instruction set and executed by the ZKsync VM.
Contracts in Sophon are identified through their “versioned hash” in the AccountCodeStorage:
zkEVM contracts: Version 0x01
EVM contracts: Version 0x02
You can check if a contract was deployed with EVM bytecode by calling the isAccountEVM(address) function on the AccountCodeStorage system contract at 0x0000000000000000000000000000000000008002.
The EVM Bytecode Interpreter targets the Cancun EVM version. This means it includes Cancun’s opcodes and features, but may not include future Ethereum upgrades immediately.
While the v27 upgrade with the EVM Bytecode Interpreter brings Sophon much closer to true EVM equivalence, complete equivalence is expected with the next proving system. The current implementation covers most developers’ needs but does have some limitations due to the underlying zkEVM architecture.
Sophon’s zkEVM is a specialized virtual machine designed to execute smart contracts while generating zero-knowledge proofs of execution. It:
Maintains compatibility with most Ethereum smart contracts
Optimizes operations for efficient ZK-proof generation
Extends functionality with features like paymasters and account abstraction
The EVM Bytecode Interpreter builds on this foundation to provide true EVM equivalence while maintaining the benefits of the underlying zkEVM architecture.
Was this page helpful?
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Sophon","colors":{"primary":"#175aad","light":"#2b95ff","dark":"#1710a1"},"favicon":"https://mintcdn.com/sophon-29bed8dc/H_vTEXh6tSwXlF5E/favicon.svg?fit=max\u0026auto=format\u0026n=H_vTEXh6tSwXlF5E\u0026q=85\u0026s=34a706a5d568b29f649fe1f0bef22c98","logo":{"light":"https://mintcdn.com/sophon-29bed8dc/H_vTEXh6tSwXlF5E/logo/light.svg?fit=max\u0026auto=format\u0026n=H_vTEXh6tSwXlF5E\u0026q=85\u0026s=a49869449255758e1035ef7541684e80","dark":"https://mintcdn.com/sophon-29bed8dc/H_vTEXh6tSwXlF5E/logo/dark.svg?fit=max\u0026auto=format\u0026n=H_vTEXh6tSwXlF5E\u0026q=85\u0026s=6bce2c0943ef511e574729744f589bca"},"background":{"decoration":"gradient"},"seo":{"metatags":{"og:title":"Sophon Documentation","og:description":"Sophon Chain migration, SOPH, and legacy chain documentation","og:image":"/images/og.png","twitter:image":"/images/og.png","og:image:width":"1200","og:image:height":"675","twitter:image:width":"1200","twitter:image:height":"675","og:image:type":"image/png","og:image:alt":"Sophon Docs","keywords":"Sophon, SOPH, Chain Migration, Guardian Rewards, Tokenomics, Legacy Chain"},"indexing":"navigable"},"footer":{"socials":{"x":"https://x.com/sophon","github":"https://github.com/sophon-org","linkedin":"https://www.linkedin.com/company/sophon-labs"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"sophon-29bed8dc","hasAudioNarration":false,"actualSubdomain":"sophon-29bed8dc","customDomains":["docs.sophon.xyz"],"gitSource":{"type":"github","owner":"sophon-org","repo":"sophon-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6acb75ebe1b639bd58c22c76","collectionId":"8ec26fc6-c128-43bf-88d3-703f62a57b55","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6acb75ebe1b639bd58c22c76"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6acb75ebe1b639bd58c22c76","clientVersion":"0.0.3952","searchFilterCounts":[{"language":"default","tag":"Legacy Build","count":26},{"language":"default","tag":"Introduction","count":20},{"language":"default","tag":"Account","count":18},{"language":"default","tag":"Chain Exit","count":13},{"language":"default","tag":"Guardians","count":11},{"language":"default","tag":"Partners","count":8},{"language":"default","tag":"Legacy Farming","count":8},{"language":"default","tag":"Legacy Chain Architecture","count":6},{"language":"default","tag":"Deploy \u0026 Interact","count":6},{"language":"default","tag":"Authentication","count":6}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":".soph-button{padding:14px 20px;color:#fff;background-color:#0096f7;font-size:14px;font-weight:700;border-radius:24px;cursor:pointer;margin:8px 0;display:inline-block}.wallet-related{display:none}.visible{display:inline-block}"}],"page":{"pagePath":"build/evm-compatibility/evm-interpreter","slug":"/build/evm-compatibility/evm-interpreter","pageMetadata":{"title":"EVM Bytecode Interpreter","description":"How Sophon's EVM equivalence module works","href":"/build/evm-compatibility/evm-interpreter"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How Sophon’s EVM equivalence module works\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,OptimizedImage,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This is a legacy Sophon v1 technical reference. The chain is being wound down and\nshould not be used for a new production deployment.`})}),`\n`,_jsx(Heading,{level:`1`,id:`evm-bytecode-interpreter`,children:`EVM Bytecode Interpreter`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`EVM Bytecode Interpreter`}),` is a key component of Sophon’s `,_jsx(_components.strong,{children:`v27 upgrade`}),`, enabling true `,_jsx(_components.strong,{children:`EVM equivalence`}),` by allowing the direct execution of unmodified EVM bytecode on Sophon’s zkEVM.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-is-evm-equivalence`,children:`What is EVM Equivalence?`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`EVM equivalence`}),` means that a blockchain can execute standard EVM bytecode directly, providing:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Identical behavior`}),` to Ethereum’s EVM in all aspects`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Identical address derivation`}),` for contract deployments`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Full compatibility`}),` with standard Ethereum development tools`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No requirement`}),` for special compilation or adaptation`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This is different from mere “EVM compatibility,” which typically requires specialized tooling or compilation steps. For more details, see the official `,_jsx(_components.a,{href:`https://docs.zksync.io/zksync-era/unique-features/evm-interpreter/evm-interpreter`,children:`EVM Interpreter`}),` page.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-the-evm-bytecode-interpreter-works`,children:`How the EVM Bytecode Interpreter Works`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`EVM Bytecode Interpreter`}),` serves as a crucial system contract that enables the execution of standard EVM bytecode on Sophon’s zkEVM, ensuring EVM equivalence. This involves:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Effortless Contract Deployment`}),`: Deploy contracts just as you would on Ethereum, using transactions without a `,_jsx(_components.code,{children:`to`}),` field and embedding contract initialization code as calldata. This process guarantees identical address derivation and behavior as on Ethereum.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Comprehensive Tool Compatibility`}),`: Utilize standard Ethereum development tools like Hardhat and Foundry without needing additional plugins or modifications.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Transparent Execution`}),`: The interpreter operates behind the scenes, invoked automatically by the protocol.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Contracts deployed in this manner are flagged as EVM bytecode and executed through the EVM interpreter. During execution, the contract’s EVM opcodes are translated into the ZKsync VM’s instruction set and executed by the ZKsync VM.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/sophon-29bed8dc/0txbnStdv27i3LeR/images/evm-equivalence/contract-deployment.png?fit=max\u0026auto=format\u0026n=0txbnStdv27i3LeR\u0026q=85\u0026s=3f9c57dc5a3f33d5dc30b6d7f5761813`,alt:`Contract Deployment`,\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`2160`,height:`2160`,\"data-path\":`images/evm-equivalence/contract-deployment.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/sophon-29bed8dc/0txbnStdv27i3LeR/images/evm-equivalence/contract-deployment.png?w=280\u0026fit=max\u0026auto=format\u0026n=0txbnStdv27i3LeR\u0026q=85\u0026s=74794727310e958e1ce5ad7c00695ec4 280w, https://mintcdn.com/sophon-29bed8dc/0txbnStdv27i3LeR/images/evm-equivalence/contract-deployment.png?w=560\u0026fit=max\u0026auto=format\u0026n=0txbnStdv27i3LeR\u0026q=85\u0026s=75eb522d7e4ff767f749a52d7541ae84 560w, https://mintcdn.com/sophon-29bed8dc/0txbnStdv27i3LeR/images/evm-equivalence/contract-deployment.png?w=840\u0026fit=max\u0026auto=format\u0026n=0txbnStdv27i3LeR\u0026q=85\u0026s=be71b9bbdc3fc539abb1a932a2fd9231 840w, https://mintcdn.com/sophon-29bed8dc/0txbnStdv27i3LeR/images/evm-equivalence/contract-deployment.png?w=1100\u0026fit=max\u0026auto=format\u0026n=0txbnStdv27i3LeR\u0026q=85\u0026s=984d7398206cae79a9b44174b69ef773 1100w, https://mintcdn.com/sophon-29bed8dc/0txbnStdv27i3LeR/images/evm-equivalence/contract-deployment.png?w=1650\u0026fit=max\u0026auto=format\u0026n=0txbnStdv27i3LeR\u0026q=85\u0026s=c46a9ac33e697ae2d4c67679ab2d70d5 1650w, https://mintcdn.com/sophon-29bed8dc/0txbnStdv27i3LeR/images/evm-equivalence/contract-deployment.png?w=2500\u0026fit=max\u0026auto=format\u0026n=0txbnStdv27i3LeR\u0026q=85\u0026s=42ba9193b071f28679f9b0b11d96ad83 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`versioned-contract-storage`,children:`Versioned Contract Storage`}),`\n`,_jsxs(_components.p,{children:[`Contracts in Sophon are identified through their `,_jsx(_components.strong,{children:`“versioned hash”`}),` in the `,_jsx(_components.code,{children:`AccountCodeStorage`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`zkEVM contracts`}),`: Version `,_jsx(_components.code,{children:`0x01`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`EVM contracts`}),`: Version `,_jsx(_components.code,{children:`0x02`})]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`You can check if a contract was deployed with EVM bytecode by calling the `,_jsx(_components.code,{children:`isAccountEVM(address)`}),` function on the `,_jsx(_components.code,{children:`AccountCodeStorage`}),` system contract at `,_jsx(_components.code,{children:`0x0000000000000000000000000000000000008002`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`benefits-for-developers`,children:`Benefits for Developers`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`EVM equivalence`}),` provides significant advantages for developers:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Standard Solidity/Vyper Deployment`}),`: Deploy contracts compiled with standard Solidity/Vyper compilers`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Same Address Derivation`}),`: Get the same contract addresses from `,_jsx(_components.code,{children:`create`}),` and `,_jsx(_components.code,{children:`create2`}),` as on Ethereum`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Familiar Debugging`}),`: Use standard Ethereum debugging tools with deployed contracts`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cross-VM Interoperability`}),`: EVM and zkEVM contracts can interact (with some limitations)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Simplified Migration`}),`: Move existing Ethereum contracts to Sophon without code changes`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Code Reuse`}),`: Leverage existing libraries and patterns without modification`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`limitations`,children:`Limitations`}),`\n`,_jsx(Heading,{level:`3`,id:`evm-version-support`,children:`EVM Version Support`}),`\n`,_jsxs(_components.p,{children:[`The EVM Bytecode Interpreter targets the `,_jsx(_components.strong,{children:`Cancun`}),` EVM version. This means it includes Cancun’s opcodes and features, but may not include future Ethereum upgrades immediately.`]}),`\n`,_jsx(Heading,{level:`3`,id:`unsupported-opcodes`,children:`Unsupported Opcodes`}),`\n`,_jsx(_components.p,{children:`The following opcodes are not supported due to underlying limitations of ZKsync VM:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`CALLCODE`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`SELFDESTRUCT`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`BLOBHASH`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`BLOBBASEFEE`})}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`gas-handling`,children:`Gas Handling`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Block Gas Limit`}),`: `,_jsx(_components.code,{children:`block.gaslimit`}),` returns `,_jsx(_components.code,{children:`1125899906842624n`}),`, which differs from EVM chains (`,_jsx(_components.code,{children:`36000000n`}),`)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Gas Conversion`}),`: A fixed ratio (5:1) is used to convert between EVM gas and native zkEVM gas (ergs)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Higher Costs`}),`: EVM contracts have 150-400% higher gas fees than native zkEVM contracts`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Out-of-Gas Behavior`}),`: If an EVM contract runs out of native zkEVM gas, it triggers a revert of the entire EVM call stack`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`contract-interactions`,children:`Contract Interactions`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`EVM-zkEVM Interaction`}),`: Standard calls between EVM and zkEVM contracts work, but `,_jsx(_components.code,{children:`delegatecall`}),` operations are not supported`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`tools-and-verification`,children:`Tools and Verification`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Foundry Scripts`}),`: Require the `,_jsx(_components.code,{children:`--skip-simulation`}),` flag due to gas model differences`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Contract Verification`}),`: Must use Sophon’s native block explorer API`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-road-to-full-evm-equivalence`,children:`The Road to Full EVM Equivalence`}),`\n`,_jsxs(_components.p,{children:[`While the `,_jsx(_components.strong,{children:`v27 upgrade`}),` with the `,_jsx(_components.strong,{children:`EVM Bytecode Interpreter`}),` brings Sophon much closer to true EVM equivalence, complete equivalence is expected with the next proving system. The current implementation covers most developers’ needs but does have some limitations due to the underlying zkEVM architecture.`]}),`\n`,_jsx(Heading,{level:`2`,id:`zkevm-the-foundation`,children:`zkEVM: The Foundation`}),`\n`,_jsx(_components.p,{children:`Sophon’s zkEVM is a specialized virtual machine designed to execute smart contracts while generating zero-knowledge proofs of execution. It:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Maintains compatibility with most Ethereum smart contracts`}),`\n`,_jsx(_components.li,{children:`Optimizes operations for efficient ZK-proof generation`}),`\n`,_jsx(_components.li,{children:`Extends functionality with features like paymasters and account abstraction`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The EVM Bytecode Interpreter builds on this foundation to provide true EVM equivalence while maintaining the benefits of the underlying zkEVM architecture.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"EVM Bytecode Interpreter","description":"How Sophon's EVM equivalence module works","href":"/build/evm-compatibility/evm-interpreter"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"EVM Bytecode Interpreter","slug":"evm-bytecode-interpreter","depth":1,"children":[]},{"title":"What is EVM Equivalence?","slug":"what-is-evm-equivalence","depth":2,"children":[]},{"title":"How the EVM Bytecode Interpreter Works","slug":"how-the-evm-bytecode-interpreter-works","depth":2,"children":[]},{"title":"Versioned Contract Storage","slug":"versioned-contract-storage","depth":2,"children":[]},{"title":"Benefits for Developers","slug":"benefits-for-developers","depth":2,"children":[]},{"title":"Limitations","slug":"limitations","depth":2,"children":[{"title":"EVM Version Support","slug":"evm-version-support","depth":3,"children":[]},{"title":"Unsupported Opcodes","slug":"unsupported-opcodes","depth":3,"children":[]},{"title":"Gas Handling","slug":"gas-handling","depth":3,"children":[]},{"title":"Contract Interactions","slug":"contract-interactions","depth":3,"children":[]},{"title":"Tools and Verification","slug":"tools-and-verification","depth":3,"children":[]}]},{"title":"The Road to Full EVM Equivalence","slug":"the-road-to-full-evm-equivalence","depth":2,"children":[]},{"title":"zkEVM: The Foundation","slug":"zkevm-the-foundation","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/sophon-29bed8dc/8465623af85b6903/wallet.js"],"subdomain":"sophon-29bed8dc","siteName":"Sophon","title":"Sophon Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-16T16:12:07.698Z","originalFileLocation":"build/evm-compatibility/evm-interpreter.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How Sophon\u0026#x27;s EVM equivalence module works\">\u003cmeta data-mint-head name=\"keywords\" content=\"Sophon, SOPH, Chain Migration, Guardian Rewards, Tokenomics, Legacy Chain\">\u003cmeta data-mint-head name=\"application-name\" content=\"Sophon\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Sophon Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sophon Chain migration, SOPH, and legacy chain documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Sophon\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://sophon-29bed8dc.mintlify.app/images/og.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Sophon Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sophon Chain migration, SOPH, and legacy chain documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://sophon-29bed8dc.mintlify.app/images/og.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/sophon-29bed8dc/b0RpH67SbVbcWfVy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Sophon\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#175aad\">\u003cmeta data-mint-head name=\"og:image:type\" content=\"image/png\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"Sophon Docs\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/build/evm-compatibility/evm-interpreter.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.sophon.xyz/#organization\",\"name\":\"Sophon\",\"url\":\"https://docs.sophon.xyz\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/sophon-29bed8dc/H_vTEXh6tSwXlF5E/logo/light.svg?fit=max\u0026auto=format\u0026n=H_vTEXh6tSwXlF5E\u0026q=85\u0026s=a49869449255758e1035ef7541684e80\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.sophon.xyz#website\",\"name\":\"Sophon\",\"url\":\"https://docs.sophon.xyz\",\"publisher\":{\"@id\":\"https://docs.sophon.xyz/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter#webpage\",\"url\":\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter\",\"name\":\"EVM Bytecode Interpreter\",\"description\":\"How Sophon's EVM equivalence module works\",\"dateModified\":\"2026-07-16T16:12:07.698Z\",\"isPartOf\":{\"@id\":\"https://docs.sophon.xyz#website\"},\"breadcrumb\":{\"@id\":\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"EVM Compatibility\",\"item\":\"https://docs.sophon.xyz/build/evm-compatibility/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"EVM Bytecode Interpreter\",\"item\":\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter#article\",\"headline\":\"EVM Bytecode Interpreter\",\"name\":\"EVM Bytecode Interpreter\",\"description\":\"How Sophon's EVM equivalence module works\",\"url\":\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter\",\"mainEntityOfPage\":{\"@id\":\"https://docs.sophon.xyz/build/evm-compatibility/evm-interpreter#webpage\"},\"image\":\"https://docs.sophon.xyz/images/og.png\",\"dateModified\":\"2026-07-16T16:12:07.698Z\",\"publisher\":{\"@id\":\"https://docs.sophon.xyz/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.sophon.xyz#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Sophon\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Sophon","nav":{"global":null,"tabs":[{"tab":"Introduction","pages":[{"title":"Introduction","href":"/welcome"}]},{"tab":"Legacy Build","groups":[{"group":"Legacy Chain Development","pages":[{"title":"Legacy Chain Development","href":"/build/start-building"}]},{"group":"Setup","pages":[{"title":"Early Partners Program","href":"/build/early-partners"},{"title":"Network Information","href":"/build/network-information"},{"title":"Paymasters","href":"/build/setting-up-paymasters"}]},{"group":"EVM Compatibility","pages":[{"title":"Overview","description":"Understanding how Sophon's EVM implementation compares to Ethereum","href":"/build/evm-compatibility/index"},{"title":"EVM Bytecode Interpreter","href":"/build/evm-compatibility/evm-interpreter"},{"title":"zkVM vs EVM Differences","description":"Core differences between Sophon's native zkVM and Ethereum's EVM","href":"/build/evm-compatibility/differences"}]},{"group":"Deploy \u0026 Interact","pages":[{"title":"Hardhat/Ethers","href":"/build/interact/hardhat"},{"title":"Viem/Wagmi","href":"/build/interact/viem-wagmi"},{"title":"Foundry","href":"/build/interact/foundry"},{"title":"ZKsync CLI","href":"/build/interact/zksync-cli"},{"title":"Tenderly","href":"/build/interact/tenderly"},{"title":"SDKs","href":"/build/interact/sdks"}]},{"group":"Contracts","pages":[{"title":"Mainnet","href":"/build/mainnet"},{"title":"Testnet","href":"/build/testnet"}]},{"group":"Tokens","pages":[{"title":"SOPH Bridging","mode":"wide","href":"/build/tokens/soph-bridging"},{"title":"USDC (Legacy)","href":"/build/tokens/USDC"},{"title":"Bridge SOPH with LayerZero","href":"/build/tokens/layerzero_integration"}]},{"group":"Partners","pages":[{"title":"Overview","href":"/build/partners/overview"},{"title":"Block Explorers","icon":"magnifying-glass-chart","iconType":"solid","href":"/build/partners/block-explorers"},{"title":"Indexers","icon":"database","iconType":"solid","href":"/build/partners/indexers"},{"title":"Infrastructure","icon":"server","iconType":"solid","href":"/build/partners/infrastructure"},{"title":"Account Abstraction","icon":"wallet","iconType":"solid","href":"/build/partners/account-abstraction"},{"title":"Oracles \u0026 zkTLS","icon":"satellite-dish","iconType":"solid","href":"/build/partners/oracles"},{"title":"Gaming","icon":"gamepad","iconType":"solid","href":"/build/partners/gaming"},{"title":"Payment Solutions","icon":"credit-card","iconType":"solid","href":"/build/partners/payments"}]}]},{"tab":"Account","pages":[{"title":"Account","href":"/sophon-account/intro"}]},{"tab":"Chain Exit","pages":[{"title":"Chain Exit","href":"/discover/our-universe"}]},{"tab":"Guardians","pages":[{"title":"Guardians","href":"/nodes/our-infra"}]}]},"title":"Sophon Documentation","buildId":"dpl_7GUK3ixdQTF3BSNUQYJm8ibGxQWw","deploymentId":"dpl_7GUK3ixdQTF3BSNUQYJm8ibGxQWw","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BVI9Chd9.js","PlusIcon-dPxQtROk.js","lightbox-handle-r17bVUz3.js"]}