-
Notifications
You must be signed in to change notification settings - Fork 2.1k
feat(api): Allow EVM bytecode overrides #3761
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(api): Allow EVM bytecode overrides #3761
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just want to highlight that IMHO we should not extend auto-detection any further and any additional bytecode kind we might accept in the future should be supplied with a marker. It's not ideal that we are baking this extra modification into an existing ETH method but I understand the reasoning behind it.
One extra thing I would love to see is metrics for bytecode kinds: specifically if the request contained a marker vs we had to detect one automatically (and what it resulted into). Assuming ZKsync tooling starts using markers as soon as this gets rolled out to the vast majority of envs, we will start seeing the gradual decline of auto-detections resulting into EraVM kind. And, at some point, we will (potentially) have an avenue of enforcing purely EVM bytecode in this endpoint (when no marker is supplied ofc).
But no strong opinion - leaving the decision on metrics up to you
🤖 I have created a release *beep* *boop* --- ## [27.2.0](core-v27.1.0...core-v27.2.0) (2025-04-03) ### Features * **api:** Allow EVM bytecode overrides ([#3761](#3761)) ([8aee9f8](8aee9f8)) * **en:** Allow tree / state keeper cache recovery for genesis ([#3781](#3781)) ([dd18c48](dd18c48)) * **eth_signer:** Support eip712 txs ([#3752](#3752)) ([e278ab5](e278ab5)) * **gateway:** Handle server shutting down error ([#3777](#3777)) ([8e11adc](8e11adc)) * **gateway:** Migration to Gateway ([#3654](#3654)) ([2858ba0](2858ba0)) * **main:** Eigenda add custom quorum params ([#3719](#3719)) ([dac58ad](dac58ad)) * Update zksync-protocol deps to 0.151.5 ([#3790](#3790)) ([92beffe](92beffe)) * **zkos:** remove prev index pointer from leaves ([#3771](#3771)) ([5b8fd29](5b8fd29)) ### Bug Fixes * insert tokens without PG copy ([#3778](#3778)) ([b7a8152](b7a8152)) * **prover:** Force set all the `prover_job` labels to 0 ([#3787](#3787)) ([3ecc8db](3ecc8db)) * **prover:** Reevaluation of 'heavy' jobs for WVG ([#3754](#3754)) ([2a8d33b](2a8d33b)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: zksync-era-bot <zksync-era-bot@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- ## [27.2.0](core-v27.1.0...core-v27.2.0) (2025-04-03) ### Features * **api:** Allow EVM bytecode overrides ([#3761](#3761)) ([8aee9f8](8aee9f8)) * **en:** Allow tree / state keeper cache recovery for genesis ([#3781](#3781)) ([dd18c48](dd18c48)) * **eth_signer:** Support eip712 txs ([#3752](#3752)) ([e278ab5](e278ab5)) * **gateway:** Handle server shutting down error ([#3777](#3777)) ([8e11adc](8e11adc)) * **gateway:** Migration to Gateway ([#3654](#3654)) ([c861ce1](c861ce1)) * **main:** Eigenda add custom quorum params ([#3719](#3719)) ([dac58ad](dac58ad)) * Update zksync-protocol deps to 0.151.5 ([#3790](#3790)) ([92beffe](92beffe)) * **zkos:** remove prev index pointer from leaves ([#3771](#3771)) ([5b8fd29](5b8fd29)) ### Bug Fixes * insert tokens without PG copy ([#3778](#3778)) ([b7a8152](b7a8152)) * **prover:** Force set all the `prover_job` labels to 0 ([#3787](#3787)) ([3ecc8db](3ecc8db)) * **prover:** Reevaluation of 'heavy' jobs for WVG ([#3754](#3754)) ([2a8d33b](2a8d33b)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: zksync-era-bot <zksync-era-bot@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- ## [27.2.0](matter-labs/zksync-era@core-v27.1.0...core-v27.2.0) (2025-04-03) ### Features * **api:** Allow EVM bytecode overrides ([#3761](matter-labs/zksync-era#3761)) ([8aee9f8](matter-labs/zksync-era@8aee9f8)) * **en:** Allow tree / state keeper cache recovery for genesis ([#3781](matter-labs/zksync-era#3781)) ([dd18c48](matter-labs/zksync-era@dd18c48)) * **eth_signer:** Support eip712 txs ([#3752](matter-labs/zksync-era#3752)) ([e278ab5](matter-labs/zksync-era@e278ab5)) * **gateway:** Handle server shutting down error ([#3777](matter-labs/zksync-era#3777)) ([8e11adc](matter-labs/zksync-era@8e11adc)) * **gateway:** Migration to Gateway ([#3654](matter-labs/zksync-era#3654)) ([3c5e3c1](matter-labs/zksync-era@3c5e3c1)) * **main:** Eigenda add custom quorum params ([#3719](matter-labs/zksync-era#3719)) ([dac58ad](matter-labs/zksync-era@dac58ad)) * Update zksync-protocol deps to 0.151.5 ([#3790](matter-labs/zksync-era#3790)) ([92beffe](matter-labs/zksync-era@92beffe)) * **zkos:** remove prev index pointer from leaves ([#3771](matter-labs/zksync-era#3771)) ([5b8fd29](matter-labs/zksync-era@5b8fd29)) ### Bug Fixes * insert tokens without PG copy ([#3778](matter-labs/zksync-era#3778)) ([b7a8152](matter-labs/zksync-era@b7a8152)) * **prover:** Force set all the `prover_job` labels to 0 ([#3787](matter-labs/zksync-era#3787)) ([3ecc8db](matter-labs/zksync-era@3ecc8db)) * **prover:** Reevaluation of 'heavy' jobs for WVG ([#3754](matter-labs/zksync-era#3754)) ([2a8d33b](matter-labs/zksync-era@2a8d33b)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: zksync-era-bot <zksync-era-bot@users.noreply.github.com>
What ❔
Allows to accept EVM bytecode overrides in the relevant API server methods like
eth_call
andeth_estimateGas
.Why ❔
With EVM emulator, we want to support EVM bytecodes everywhere, including in state overrides.
Is this a breaking change?
Technically, a highly unusual EraVM bytecode can be incorrectly detected as an EVM bytecode, but the possibility of this occurring in practice is vanishingly small. E.g., there doesn't seem to be a single functional "unusual" bytecode deployed on the Era mainnet.
Operational changes
No operational changes.
Checklist
zkstack dev fmt
andzkstack dev lint
.