Skip to content

test(l1): bump zkevm tests to v0.8.4 - #7253

Open
ilitteri wants to merge 4 commits into
fix/eip8037-repay-state-gas-spillfrom
chore/bump-tests-zkevm-v0.8.3
Open

test(l1): bump zkevm tests to v0.8.4#7253
ilitteri wants to merge 4 commits into
fix/eip8037-repay-state-gas-spillfrom
chore/bump-tests-zkevm-v0.8.3

Conversation

@ilitteri

@ilitteri ilitteri commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Stacked on #7254. Base is fix/eip8037-repay-state-gas-spill; GitHub retargets this to main automatically once that merges. Review the last commits only — the LEVM changes shown belong to #7254.

Motivation

tests-zkevm@v0.8.4 is refilled on top of tests-glamsterdam-devnet@v8.1.4, which is where #7254 moves .fixtures_url_amsterdam. The zkEVM bundle is the Amsterdam fixtures plus the EIP-8025 stateless witness fields, so the two pins should name the same upstream content; v0.8.2 trailed at v8.1.0. Upstream reports no spec or test changes in the zkEVM project itself across these releases.

Description

  • Bump tooling/ef_tests/.fixtures_url_zkevm to tests-zkevm@v0.8.4.
  • Rewrite the bundle comments in crates/common/types/stateless_ssz.rs and the blockchain Makefile to state the invariant that survives a bump — the schema id does not identify the encoding, and the zkEVM pin has to track the Amsterdam pin's upstream content — rather than narrating what each release changed. Which release is pinned is stated once, in .fixtures_url_zkevm.
  • Follow the spec links in docs/eip-8025.md: upstream deleted stateless_ssz.py, folding the SSZ containers into annotations on the dataclasses in stateless.py, so the old path 404s at the new tag.

Why this is stacked rather than independent

v0.8.4 does not stand on its own. Without the reservoir-repay fix in #7254 it fails nine cases under eip8037_state_creation_gas_cost_increase/state_gas_cross_frame_refundcross_frame_refund_repays_spill_at_merge, repaid_credit_funds_execution and friends — which are exactly the behaviour that fix implements. With it, the suite is 3259/3259, up from 3240 at v0.8.3.

Worth noting the dependency is new coverage, not a regression: v0.8.3 passes both with and without #7254, because v8.1.3 has no cross-frame case. EXTRA_SKIPS in tooling/ef_tests/blockchain/tests/all.rs stays empty.

Nothing in the guest contract moves: the schema id is still 0x1501, state, codes and public_keys are still progressive lists, and headers is still bounded at 256.

Checklist

  • Updated STORE_SCHEMA_VERSION (crates/storage/lib.rs) if the PR includes breaking changes to the Store requiring a re-sync. — not applicable, no Store changes.

The bundle is refilled against tests-glamsterdam-devnet@v8.1.3, which is what
.fixtures_url_amsterdam already points at; v0.8.2 was filled against v8.1.0, so
the two bundles were describing slightly different chains.

Nothing in the guest contract moves. The schema id is still 0x1501, `state`,
`codes` and `public_keys` are still progressive lists and `headers` is still
bounded. Upstream did delete stateless_ssz.py, but only by folding the container
definitions into annotations on the dataclasses in stateless.py; SSZ encoding is
positional, so the wire is unchanged. The docs link to that spec file had to
follow the move, since the old path 404s at the new tag.

The suite passes in full at 3240/3240 fixture files, up from 3218, with
EXTRA_SKIPS still empty.
@ilitteri
ilitteri requested a review from a team as a code owner September 3, 2026 14:49
@github-actions github-actions Bot added the L1 Ethereum client label Sep 3, 2026
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

⚠️ Known Issues — intentionally skipped tests

Source: docs/known_issues.md

rpc-compat log-bearing cases excluded

Where: KNOWN_EXCLUDED_TESTS in .github/scripts/check-hive-results.sh counts out
eight hive rpc-compat cases — the four eth_getLogs cases, eth_getBlockReceipts/get-block-receipts-latest,
and three eth_getTransactionReceipt cases. They are exactly the cases whose recorded
response contains at least one log object; every case with an empty log array still runs.
Note this leaves eth_getLogs with no rpc-compat coverage at all, since all four of its
cases are in the set.

Why: ethrex populates blockTimestamp on log objects, as geth, besu, nethermind, reth
and erigon all do. hive's rpc-compat compares responses byte-exactly (jsondiff.FullMatch;
the lenient checkJSONStructure path applies only to cases upstream marks speconly), and
the corpus is pinned to execution-apis d08382ae (2025-02-10), whose recordings predate the
field — it entered the schema in execution-apis#639 and the fixtures in #846 (2026-07-22).
So the extra key cannot match, and this is a property of the pin rather than of the response.

The pin cannot move, and this is not temporary. The pin sits one commit before
execution-apis#627, which moved the test chain to a pre-merge genesis: the current corpus has
~36 proof-of-work blocks before its terminal total difficulty. ethrex does not support
pre-merge chains and will not, so importing that chain.rlp fails at block 1 —
validate_block_header has no pre-London base-fee path. Every revision carrying
blockTimestamp in its fixtures also carries that chain, so there is no revision that
satisfies both. Nor can the corpus be patched locally: rpc-compat's Dockerfile clones
ethereum/execution-apis by hard-coded URL, so the branch buildarg cannot point at a fork.

Coverage: the field itself is pinned by
block_timestamp_is_on_the_log_and_not_on_the_receipt in
crates/networking/rpc/types/receipt.rs, which asserts it is present on each log and absent
from the receipt level.

Removal: delete the entries if ethrex ever gains pre-merge chain import, or if upstream
marks these cases speconly so they are type-checked instead of compared byte-for-byte.


The stateless schema id does not identify the encoding

Where: STATELESS_INPUT_SCHEMA_ID in crates/common/types/stateless_ssz.rs.

Upstream keeps the stateless input schema id at 0x1501
(fork_index 0x15 << 8 | revision 0x01) across incompatible body changes. Three
encodings have now shipped under it: tests-zkevm@v0.6.2, then #3248 + #3278,
then #3356, which moved state, codes and public_keys from SszList to
ProgressiveList. ethrex speaks the last one.

The consequence is that the 2-byte prefix cannot be used to detect a stale or
mismatched bundle. A wrong-dialect input is accepted by the id check and then
fails later — in SSZ decode, or on a root that does not match — rather than being
rejected up front for what it is. only_amsterdam_schema_id_decodes therefore
proves less than its name suggests.

Worth raising upstream: a revision field that does not move across a body change
provides no version negotiation at all.


ZisK guest program hash changes with the unsync_cell gate

Where: crates/common/types/block.rs, transaction.rs.

The gate on the single-threaded unsync_cell::OnceCell moved from
all(feature = "eip-8025", target_arch = "riscv64") to
all(feature = "zisk", target_arch = "riscv64") when the eip-8025 feature was removed.

The guest ELFs were previously built --features "<zkvm>-build-elf,ci", which never enabled
eip-8025, so they compiled the atomic once_cell variant. bin/zisk/Cargo.toml does enable
ethrex-common/zisk, so the ZisK guest now compiles the unsafe impl Sync cell instead.
That changes the ELF bytes and therefore the program hash and verification key.

This is intended (the guest is single-threaded, so the unsync cell is sound and cheaper), but it
is a VK change rather than a no-op refactor, and the diffstat presents it as a file rename
(eip8025_cell.rsunsync_cell.rs). Anyone pinning a ZisK VK across this change must
re-register it. The stateless-validator crate now forwards ethrex-common/zisk from its own
zisk feature so the two ZisK guests do not disagree on the cell type.


Release signing key is an unprotected repository secret

Where: .github/workflows/tag_release.yaml.

MINISIGN_SECRET_KEY is a plain repository secret. There is no environment: on
finalize-release or dry-run-release-assets, and gh api repos/lambdaclass/ethrex/rulesets
shows only branch-targeted rulesets, so the github.ref_type == 'tag' condition is a workflow
check rather than an enforced boundary: anyone who can push a tag can reach the signing key.

This is a repository-settings change, not a code change, so it is recorded here rather than
fixed in the tree. Recommended:

  1. Move MINISIGN_SECRET_KEY / MINISIGN_PASSWORD into a GitHub Environment with required
    reviewers, and add environment: to the two jobs that sign.
  2. Add a ruleset targeting refs/tags/v* restricting who may create release tags.

Until then, the compromise of that key is silent and durable: signatures would still verify
against the committed .github/minisign.pub.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

🤖 Kimi Code Review

I'll review this PR which updates documentation and test fixture references from tests-zkevm@v0.8.2 to v0.8.3.

Review

General Assessment

This is a documentation and configuration-only PR with no code logic changes. The changes correctly track an upstream release bump where the wire format remained identical (schema ID 0x1501 unchanged, SSZ encoding positional, only Python module reorganization occurred).

Detailed Feedback

1. Documentation Accuracy — docs/eip-8025.md lines 329-331

`tests-zkevm@v0.8.3`, which is filled against the same
`tests-glamsterdam-devnet@v8.1.3` content as the Amsterdam bundle.

Issue: The Amsterdam bundle is referenced as using v8.1.3, but tooling/ef_tests/.fixtures_url (not shown in diff) should be verified to match this claim. The Makefile comment at line 31 says "the same content the Amsterdam bundle above is pinned to" — ensure this is actually true in the committed .fixtures_url file, not just in the Makefile comment.

2. Makefile Comment Consistency — tooling/ef_tests/blockchain/Makefile lines 31-38

The comment states v0.8.2 "trailed it at v8.1.0" and v0.8.3 uses v8.1.3. However, the previous comment (deleted lines 31-34) said v0.8.2 was "filled against the same tests-glamsterdam-devnet@v8.1.0 content as v0.8.0."

Question: Was v0.8.0 also at v8.1.0? The docs at line 330 say v0.8.0 was "the first zkEVM release carrying both this schema... and the glamsterdam-devnet-8 gas schedule." This implies v0.8.0 might have been at a different devnet version. The comment history could be clearer about whether v0.8.0 was at v8.1.0 or something else.

Not a bug, but the devnet version lineage (v0.8.0 → ? → v0.8.2 @ v8.1.0 → v0.8.3 @ v8.1.3) is slightly muddled across docs.

3. Test Count Verification — docs/eip-8025.md line 349

3240/3240 fixture files

Action needed: Verify this count was actually measured, not extrapolated. The increase from 3218 to 3240 (22 new fixtures) is plausible for a devnet content bump from v8.1.0 to v8.1.3, but should be confirmed by running make test-stateless.

4. URL Encoding Correctness — tooling/ef_tests/.fixtures_url_zkevm

https://github.com/ethereum/execution-specs/releases/download/tests-zkevm%40v0.8.3/fixtures_zkevm.tar.gz

Verified correct: The %40 encoding for @ is properly preserved from the previous version. The URL pattern matches the prior format exactly.

5. Schema ID Stability — crates/common/types/stateless_ssz.rs line 420

pub const STATELESS_INPUT_SCHEMA_ID: u16 = 0x1501;

Good: No change to the schema ID. The comment update correctly emphasizes this stability.

Suggestions

  1. Line 330 of docs/eip-8025.md: Consider clarifying whether v0.8.0 was at v8.1.0 or an earlier devnet version, for historical accuracy.

  2. Line 349 of docs/eip-8025.md: If the 3240 count is confirmed by CI, no action needed. If not yet run, run make test-stateless before merge.

Security & Correctness

  • No runtime code changes → no new attack surface
  • No SSZ schema changes → no consensus risks
  • URL points to official ethereum/execution-specs releases → supply chain unchanged

Verdict

Approve with minor note. The PR correctly handles a no-wire-change upstream bump. Ensure the 3240 test count is validated and consider clarifying the v0.8.0 devnet version lineage in docs.


Automated review by Kimi (Moonshot AI) · kimi-k2.6 · custom prompt

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

🤖 Claude Code Review

Only a minor prose-wrapping nit found (line 332-333 has an unwrapped long line). Everything else checks out. Here's the review:

Review: bump zkevm tests to v0.8.3 (PR 7253)

This is a version-pin/documentation-only change — no logic, opcode, gas, RLP, or trie code is touched. Scope matches the stated intent: bump tests-zkevm from v0.8.2 to v0.8.3 and update the comments/docs that recorded the previous baseline.

Findings:

  1. docs/eip-8025.md:332-333 — Minor prose formatting: the new sentence "which is filled against the same tests-glamsterdam-devnet@v8.1.3 content as the Amsterdam bundle. v0.8.0 was the first zkEVM release..." isn't wrapped consistently with the rest of the paragraph's line width (other lines wrap ~80 cols, this one runs long before wrapping again). Cosmetic only, no functional impact.

Things verified and look correct:

  • tooling/ef_tests/.fixtures_url_zkevm correctly points at the new tests-zkevm%40v0.8.3 release asset URL, consistent with how .fixtures_url_amsterdam/.fixtures_url are consumed by the Makefile (ZKEVM_URL := $(shell cat $(ZKEVM_FIXTURES_FILE))).
  • The STATELESS_INPUT_SCHEMA_ID comment in crates/common/types/stateless_ssz.rs:415-423 is updated but the constant value (0x1501) is unchanged, matching the PR's claim that the guest-facing wire format didn't move — this is the important invariant for Store/consensus compatibility, and it's correctly left alone (checklist item about STORE_SCHEMA_VERSION is correctly marked not applicable).
  • The Makefile comment rewrite (tooling/ef_tests/blockchain/Makefile:31-38) accurately reflects that v0.8.2 was pinned to v8.1.0 while the Amsterdam bundle and now v0.8.3 are both pinned to v8.1.3, which was the actual motivation cited in the PR description (aligning the two bundles' underlying chain content).
  • Doc updates in docs/eip-8025.md (schema history table, references table, measured baseline count) are internally consistent with each other and with the Makefile/lock-file changes — the stateless.py vs stateless_ssz.py link swap correctly follows the file's actual move upstream, with a parenthetical noting the old path for readers who land on it via history.
  • No EXTRA_SKIPS additions were needed per the PR description, and the diff doesn't touch tooling/ef_tests/blockchain/tests/all.rs, consistent with the claim that nothing new needs skipping in the larger fixture set (3218 → 3240 files).

Nothing here poses a correctness, security, or consensus risk — it's a straightforward, well-documented dependency bump with an accurate paper trail explaining why the wire format is provably unaffected.


Automated review by Claude (Anthropic) · sonnet · custom prompt

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

🤖 Codex Code Review

  1. tooling/ef_tests/blockchain/Makefile:109-112 still extracts only fixtures/blockchain_tests/for_amsterdam, but this PR changes the pin to tests-zkevm@v0.8.3 and explicitly says that bundle is filled from the same tests-glamsterdam-devnet@v8.1.3 content as the Amsterdam bundle (docs/eip-8025.md:331-350, tooling/ef_tests/blockchain/Makefile:31-39). In the same Makefile, for_bpo2toamsterdamattime15k is called out as required to cover the fork boundary and “omitting it leaves the whole fork boundary untested” (tooling/ef_tests/blockchain/Makefile:24-28). If the new zkEVM bundle now carries that subtree too, stateless CI will silently skip those fixtures while the docs claim 3240/3240 coverage. I’d either extract the same subtree set for zkevm-vectors or document, with evidence, that tests-zkevm@v0.8.3 does not include the transition subtree.

Other than that, I didn’t see Rust runtime logic changes in this diff; the remaining edits are comments/docs and look fine.


Automated review by OpenAI Codex · gpt-5.4 · custom prompt

Comment thread crates/common/types/stateless_ssz.rs Outdated
/// releases only moved Python around: #3372 renamed the classes, and v0.8.3
/// deleted `stateless_ssz.py` by folding those definitions into annotations on
/// the dataclasses in `stateless.py`. SSZ encoding is positional, so neither
/// touched the wire. A bundle from an older dialect will not be caught by this

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's simplify this message so it doesn't require updating on each version bump.

Comment thread tooling/ef_tests/blockchain/Makefile Outdated
Comment on lines +31 to +38
# zkevm@v0.8.3 is filled against tests-glamsterdam-devnet@v8.1.3, the same content
# the Amsterdam bundle above is pinned to; v0.8.2 trailed it at v8.1.0. It carries
# the EIP-8025 stateless witness fields on top (executionWitness /
# statelessInputBytes / statelessOutputBytes). The v0.8.2 → v0.8.3 upstream delta
# leaves the guest contract alone: the schema id is still 0x1501, and `state`,
# `codes` and `public_keys` stay progressive lists with `headers` bounded. What
# moved is where the spec declares those types — a separate SSZ mirror module was
# folded into annotations on the dataclasses themselves.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for this

@github-project-automation github-project-automation Bot moved this to In Review in ethrex_l1 Sep 3, 2026
@jsign

jsign commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

@ilitteri, maybe you want to jump directly to https://github.com/ethereum/execution-specs/releases/tag/tests-zkevm%40v0.8.4 whenever Ethrex is ready for https://github.com/ethereum/execution-specs/releases/tag/tests-glamsterdam-devnet%40v8.1.4
edit: ah, i see waiting for #7254

But I see no prob in merging this PR anyway; just a ping :)

@ilitteri

ilitteri commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator Author

@ilitteri, maybe you want to jump directly to https://github.com/ethereum/execution-specs/releases/tag/tests-zkevm%40v0.8.4 whenever Ethrex is ready for https://github.com/ethereum/execution-specs/releases/tag/tests-glamsterdam-devnet%40v8.1.4

edit: ah, i see waiting for #7254

But I see no prob in merging this PR anyway; just a ping :)

Thanks for pointing this out. We are ready as of #7254 we are passing all v8.1.4 tests, so I can stack on that one.

…arrating each

release.

Both comments described what specific releases changed, which meant editing prose
on every bump for no lasting gain. They now say the part that stays true: the
schema id does not identify the encoding and only an incompatible body change is
worth recording next to it, and the zkevm bundle has to be filled against the same
tests-glamsterdam-devnet content the Amsterdam pin names. Which release is pinned
is already stated once, in .fixtures_url_zkevm.

The same narration had been copied into docs/eip-8025.md, so it is trimmed there
too.
v0.8.4 is filled against tests-glamsterdam-devnet@v8.1.4, which is where #7254
moves the Amsterdam pin. Landing v0.8.3 instead would leave the two bundles on
different upstream content the moment that merges, which is the drift the comment
in the blockchain Makefile warns about.

v0.8.4 cannot stand on its own: without the reservoir-repay fix it fails the nine
new state_gas_cross_frame_refund cases, which cover exactly the behaviour that fix
implements. With it the suite is 3259/3259, up from 3240 at v0.8.3. v0.8.3 passed
either way, so the dependency is new coverage rather than a regression.
@ilitteri ilitteri changed the title test(l1): bump zkevm tests to v0.8.3 test(l1): bump zkevm tests to v0.8.4 Sep 3, 2026
@ilitteri
ilitteri changed the base branch from main to fix/eip8037-repay-state-gas-spill September 3, 2026 21:11
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Lines of code report

Total lines added: 37
Total lines removed: 0
Total lines changed: 37

Detailed view
+-----------------------------------------------------+-------+------+
| File                                                | Lines | Diff |
+-----------------------------------------------------+-------+------+
| ethrex/crates/vm/levm/src/opcode_handlers/system.rs | 1124  | +6   |
+-----------------------------------------------------+-------+------+
| ethrex/crates/vm/levm/src/vm.rs                     | 2214  | +31  |
+-----------------------------------------------------+-------+------+

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

EF Tests Comparison

Test Name MAIN PR DIFF
Summary: 76394/76394 (100.00%) 76435/76435 (100.00%) ➖️ 41
Osaka: 14516/14516 (100.00%) 14516/14516 (100.00%) ➖️
Prague: 16484/16484 (100.00%) 16484/16484 (100.00%) ➖️
Cancun: 17770/17770 (100.00%) 17770/17770 (100.00%) ➖️
Shanghai: 6050/6050 (100.00%) 6050/6050 (100.00%) ➖️
Paris: 5697/5697 (100.00%) 5697/5697 (100.00%) ➖️

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Benchmark Results Comparison

No significant difference was registered for any benchmark run.

Detailed Results

Benchmark Results: BubbleSort

Command Mean [s] Min [s] Max [s] Relative
main_revm_BubbleSort 3.052 ± 0.137 2.969 3.433 1.21 ± 0.06
main_levm_BubbleSort 2.519 ± 0.026 2.498 2.580 1.00
pr_revm_BubbleSort 3.038 ± 0.012 3.022 3.060 1.21 ± 0.01
pr_levm_BubbleSort 2.543 ± 0.026 2.516 2.581 1.01 ± 0.01

Benchmark Results: ERC20Approval

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Approval 984.3 ± 10.2 971.1 1002.7 1.04 ± 0.01
main_levm_ERC20Approval 946.9 ± 6.4 938.5 956.0 1.00
pr_revm_ERC20Approval 980.2 ± 10.4 970.9 1000.6 1.04 ± 0.01
pr_levm_ERC20Approval 963.0 ± 8.8 954.5 977.2 1.02 ± 0.01

Benchmark Results: ERC20Mint

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Mint 136.2 ± 3.2 133.1 143.8 1.01 ± 0.03
main_levm_ERC20Mint 141.9 ± 1.0 140.8 143.4 1.06 ± 0.03
pr_revm_ERC20Mint 134.5 ± 3.2 132.5 143.1 1.00
pr_levm_ERC20Mint 145.2 ± 5.3 142.5 160.2 1.08 ± 0.05

Benchmark Results: ERC20Transfer

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ERC20Transfer 238.0 ± 2.5 235.7 244.1 1.02 ± 0.01
main_levm_ERC20Transfer 236.0 ± 2.5 233.6 240.5 1.01 ± 0.01
pr_revm_ERC20Transfer 233.1 ± 1.0 230.8 234.4 1.00
pr_levm_ERC20Transfer 240.2 ± 4.2 237.2 249.3 1.03 ± 0.02

Benchmark Results: Factorial

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Factorial 232.6 ± 4.5 229.4 243.8 1.01 ± 0.03
main_levm_Factorial 239.5 ± 3.2 237.0 245.9 1.04 ± 0.03
pr_revm_Factorial 230.2 ± 5.3 226.6 245.0 1.00
pr_levm_Factorial 237.9 ± 1.7 235.3 241.7 1.03 ± 0.02

Benchmark Results: FactorialRecursive

Command Mean [s] Min [s] Max [s] Relative
main_revm_FactorialRecursive 1.615 ± 0.039 1.560 1.675 1.00
main_levm_FactorialRecursive 8.393 ± 0.027 8.361 8.440 5.20 ± 0.13
pr_revm_FactorialRecursive 1.637 ± 0.014 1.616 1.656 1.01 ± 0.03
pr_levm_FactorialRecursive 8.375 ± 0.016 8.354 8.402 5.19 ± 0.13

Benchmark Results: Fibonacci

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Fibonacci 213.2 ± 2.4 208.5 217.6 1.04 ± 0.01
main_levm_Fibonacci 206.3 ± 4.2 201.7 216.3 1.01 ± 0.02
pr_revm_Fibonacci 211.9 ± 3.0 210.1 220.3 1.04 ± 0.02
pr_levm_Fibonacci 204.2 ± 1.7 201.8 207.0 1.00

Benchmark Results: FibonacciRecursive

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_FibonacciRecursive 869.3 ± 9.8 855.5 884.7 1.31 ± 0.02
main_levm_FibonacciRecursive 668.6 ± 10.3 657.3 691.3 1.01 ± 0.02
pr_revm_FibonacciRecursive 851.9 ± 7.1 839.3 861.9 1.28 ± 0.01
pr_levm_FibonacciRecursive 665.0 ± 3.6 660.1 671.9 1.00

Benchmark Results: ManyHashes

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_ManyHashes 8.4 ± 0.0 8.4 8.5 1.00
main_levm_ManyHashes 9.2 ± 0.2 8.9 9.5 1.09 ± 0.02
pr_revm_ManyHashes 8.5 ± 0.1 8.4 8.6 1.00 ± 0.01
pr_levm_ManyHashes 9.1 ± 0.2 8.9 9.5 1.08 ± 0.02

Benchmark Results: MstoreBench

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_MstoreBench 266.1 ± 6.8 262.7 285.3 1.55 ± 0.05
main_levm_MstoreBench 171.6 ± 3.6 168.8 180.9 1.00
pr_revm_MstoreBench 264.7 ± 2.7 262.6 270.0 1.54 ± 0.04
pr_levm_MstoreBench 171.8 ± 3.6 168.8 181.4 1.00 ± 0.03

Benchmark Results: Push

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_Push 297.9 ± 1.2 296.4 300.8 1.29 ± 0.02
main_levm_Push 231.2 ± 5.8 226.9 247.0 1.00 ± 0.03
pr_revm_Push 297.0 ± 1.3 294.9 299.6 1.29 ± 0.02
pr_levm_Push 230.4 ± 4.0 226.9 239.8 1.00

Benchmark Results: SstoreBench_no_opt

Command Mean [ms] Min [ms] Max [ms] Relative
main_revm_SstoreBench_no_opt 165.5 ± 3.4 161.1 169.6 1.61 ± 0.04
main_levm_SstoreBench_no_opt 102.6 ± 1.2 100.8 104.4 1.00
pr_revm_SstoreBench_no_opt 170.8 ± 11.1 161.5 200.7 1.67 ± 0.11
pr_levm_SstoreBench_no_opt 103.1 ± 1.0 101.6 104.4 1.01 ± 0.02

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

L1 Ethereum client

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

4 participants