chore(l1,l2): bump version to 12.0.0#6602
Conversation
restore_cache_state restored info, status, and has_storage from the backup but omitted exists. mark_modified() unconditionally sets exists=true, so a reverted transaction that touched a non-existent account leaves stale exists=true in the cache. A subsequent EIP-7702 SetCode tx whose authority is that address then sees exists=true and applies the spurious REFUND_AUTH_PER_EXISTING_ACCOUNT (or the EIP-8037 STATE_GAS_NEW_ACCOUNT refund on Amsterdam+). Restoring exists is only effective if the backup carries the pre-modification state. VM::get_account_mut and the SELFDESTRUCT hook both backed up via &mut returned from db.get_account_mut, which runs mark_modified before the backup is taken. Reorder so the backup captures the immutable account state and mark_modified runs after.
…0" to "ethrex 12.0.0" so the documented default matches the bumped workspace version.
🤖 Kimi Code ReviewThis PR contains a version bump (11.0.0 → 12.0.0) and a critical bugfix in the LEVM account backup/restore logic. The VM changes fix a consensus-critical issue where account backups were capturing post-modification state rather than pre-modification state. Critical Fix Review (LEVM)
Lines 537-542: The reordering to backup before Lines 551-553, 582-584: The zero-amount early returns are safe optimizations for balance operations. However, verify this doesn't skip required account "touching" for state trie clearance (EIP-158/161). If
Lines 365-370: Consistent application of the backup fix for self-destruct operations. Good.
Line 85: Adding Suggestions
VerdictThe VM changes are a correct and necessary bugfix. The version bump is mechanical and consistent across the workspace. Approve pending confirmation that zero-value optimization doesn't violate any EIP-161 state clearing rules. Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
🤖 Claude Code ReviewHere is my review of PR #6602: PR #6602 —
|
Greptile SummaryThis PR bumps the workspace version from 11.0.0 to 12.0.0 across all
Confidence Score: 5/5This PR is safe to merge — the version bumps are consistent across all manifests and the two levm fixes address well-scoped correctness bugs in the revert and balance-change paths. The version bump is mechanical and consistent across all Cargo.toml files and the CLI docs. The two cherry-picked levm fixes are narrowly scoped: restoring the No files require special attention.
|
| Filename | Overview |
|---|---|
| crates/vm/levm/src/utils.rs | Adds restoration of the exists field in restore_cache_state, closing the bug where a reverted transaction could leave a stale exists = true in the account cache. |
| crates/vm/levm/src/db/gen_db.rs | Reorders backup capture before get_account_mut/mark_modified in VM::get_account_mut; adds zero-delta early returns in increase_account_balance and decrease_account_balance. |
| crates/vm/levm/src/hooks/default_hook.rs | Applies the same backup-before-mark_modified pattern to the SELFDESTRUCT hook, ensuring the backup captures the immutable pre-modification account state. |
| docs/CLI.md | Updates two occurrences of the --builder.extra-data default from ethrex 11.0.0 to ethrex 12.0.0. |
| Cargo.toml | Bumps workspace version from 11.0.0 to 12.0.0. |
Reviews (1): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile
🤖 Codex Code ReviewReview No findings. This is a mechanical release bump, and the exposed version surfaces are consistent: Cargo.toml moves the workspace to The diff does not touch EVM execution, gas accounting, consensus checks, trie/storage code, or RLP logic, so I don’t see protocol or security risk in this PR. Static review only; Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
There was a problem hiding this comment.
Pull request overview
Prepares the v12.0.0 release by bumping the workspace/crate versions across the project, updating user-facing CLI documentation, and refreshing the relevant Cargo lockfiles to reflect the new workspace version.
Changes:
- Bump workspace and crate versions from
11.0.0to12.0.0across root, guest-program binaries, and quote-gen. - Update
docs/CLI.mddefault for--builder.extra-datatoethrex 12.0.0(L1 and L2 sections). - Refresh lockfiles (
Cargo.lockand several sub-lockfiles) to reflect the12.0.0workspace package set.
Reviewed changes
Copilot reviewed 3 out of 15 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tooling/Cargo.lock | Updates tooling lockfile entries to workspace version 12.0.0. |
| docs/CLI.md | Updates documented default --builder.extra-data to ethrex 12.0.0 (L1 + L2). |
| crates/vm/levm/bench/revm_comparison/Cargo.lock | Updates bench lockfile entries to 12.0.0. |
| crates/l2/tee/quote-gen/Cargo.toml | Bumps quote-gen crate version to 12.0.0. |
| crates/l2/tee/quote-gen/Cargo.lock | Refreshes quote-gen lockfile to 12.0.0 workspace crates. |
| crates/guest-program/bin/zisk/Cargo.toml | Bumps guest zisk package version to 12.0.0. |
| crates/guest-program/bin/zisk/Cargo.lock | Refreshes zisk guest lockfile to 12.0.0 workspace crates. |
| crates/guest-program/bin/sp1/Cargo.toml | Bumps guest sp1 package version to 12.0.0. |
| crates/guest-program/bin/sp1/Cargo.lock | Refreshes sp1 guest lockfile to 12.0.0 workspace crates. |
| crates/guest-program/bin/risc0/Cargo.toml | Bumps guest risc0 package version to 12.0.0. |
| crates/guest-program/bin/risc0/Cargo.lock | Refreshes risc0 guest lockfile to 12.0.0 workspace crates. |
| crates/guest-program/bin/openvm/Cargo.toml | Bumps guest openvm package version to 12.0.0. |
| crates/guest-program/bin/openvm/Cargo.lock | Refreshes openvm guest lockfile to 12.0.0 workspace crates. |
| Cargo.toml | Bumps [workspace.package] version to 12.0.0. |
| Cargo.lock | Refreshes workspace lockfile entries to version 12.0.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Lines of code reportTotal lines added: Detailed view |
Benchmark Results ComparisonNo significant difference was registered for any benchmark run. Detailed ResultsBenchmark Results: BubbleSort
Benchmark Results: ERC20Approval
Benchmark Results: ERC20Mint
Benchmark Results: ERC20Transfer
Benchmark Results: Factorial
Benchmark Results: FactorialRecursive
Benchmark Results: Fibonacci
Benchmark Results: FibonacciRecursive
Benchmark Results: ManyHashes
Benchmark Results: MstoreBench
Benchmark Results: Push
Benchmark Results: SstoreBench_no_opt
|
Motivation
Prepare the v12.0.0 release by bumping the workspace version and merging the release branch back to main.
Description
Bump workspace version from 11.0.0 to 12.0.0 in the root
Cargo.toml, the guest-programCargo.tomlfiles (sp1, risc0, openvm, zisk) andcrates/l2/tee/quote-gen/Cargo.toml; refresh lockfiles viamake update-cargo-lock.Update the
--builder.extra-datadefault indocs/CLI.mdtoethrex 12.0.0in both ethrex and ethrex L2 sections.Merge
maininto the release branch, picking up the two levm fixes that landed during release stabilization (fix(levm): account erroneously considered as existing after zero-value transfer #6591, fix(levm): revert doesn't unmark the account as existing #6592) along with their tests:fix(levm): account erroneously considered as existing after zero-value transfer(fix(levm): account erroneously considered as existing after zero-value transfer #6591) — avoids marking an account as modified when a balance increase/decrease is zero.fix(levm): revert doesn't unmark the account as existing(fix(levm): revert doesn't unmark the account as existing #6592) —restore_cache_statenow restoresexistsalongsideinfo,status, andhas_storageso a reverted transaction no longer leaves a staleexists = truein the cache (which would cause a later EIP-7702 SetCode tx to apply a spuriousREFUND_AUTH_PER_EXISTING_ACCOUNT/ EIP-8037STATE_GAS_NEW_ACCOUNTrefund). Also reorders the backup inVM::get_account_mutand the SELFDESTRUCT hook so the backup captures pre-modification state.These fixes were also cherry-picked directly onto the release branch before the merge; the merge from
mainadds their tests.Checklist
STORE_SCHEMA_VERSION— N/A, no storage schema change.