Skip to content

feat(evm): align Zones with Tempo T11 precompile decoding - #1372

Open
legion2002 wants to merge 5 commits into
mainfrom
tanishk/tempo-7444-precompiles
Open

feat(evm): align Zones with Tempo T11 precompile decoding#1372
legion2002 wants to merge 5 commits into
mainfrom
tanishk/tempo-7444-precompiles

Conversation

@legion2002

Copy link
Copy Markdown
Contributor

Summary

Updates the Zones EVM integration to Tempo PR #7444 and makes Zone precompile admission follow the active Tempo hardfork.

  • aligns Tempo, Reth, Alloy, Commonware, and lockfile revisions
  • passes the active TempoHardfork into precompile input-gas calculation
  • uses the Tempo fork-aware ABI decoder configuration in every Zone admission wrapper
  • retains permissive decoding before T11 and enables strict decoding at T11

Why

Tempo precompile input cost and ABI decoding are now hardfork-dependent. Zones wraps Tempo precompiles with its own authorization layer, so decoding calldata with a different configuration before forwarding can produce caller-dependent results for malformed input.

Using the same Tempo configuration in both layers ensures historical pre-T11 blocks retain their old decoding and gas behavior, while T11 blocks use the increased input cost, strict ABI validation, and the allocation limit selected by Tempo.

Zone chain specs already inherit Tempo fork activation times, and ZoneEvmConfig selects the Tempo spec from each block timestamp. This change carries that selected spec through the wrapper admission paths.

Reexecution

  • pre-T11: 6 gas per calldata word and permissive ABI decoding
  • T11+: 30 gas per calldata word and strict ABI decoding
  • historical blocks derive behavior from their original block timestamp

Validation

  • cargo test -p zone-precompiles --lib --no-fail-fast: 152 passed, 1 existing ignored
  • cargo check -p zone-evm
  • T10/T11 input-gas boundary regression
  • pre-T11 noncanonical-address privacy regression
  • T11 owner/outsider malformed-calldata consistency regression
  • existing timestamp-based Tempo fork-selection coverage

Stack note

This is the base of a two-PR stack.

The dependency alignment includes a newer Reth revision that removed the old HashedStorage.wiped and sparse-trie wipe APIs. As a result, the full workspace check stops at the expected zone-spf compatibility errors on this PR alone. The stacked child adapts stateless proof execution and the node APIs to the new Reth revision, and restores the full workspace build.

This split keeps the Tempo/T11 behavior change independently reviewable.

@socket-security

socket-security Bot commented Sep 3, 2026

Copy link
Copy Markdown

Caution

Review the following alerts detected in dependencies.

According to your organization's Security Policy, you must resolve all "Block" alerts before proceeding. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Block Medium
Recently published: cargo alloy-dyn-abi published 9 hours ago

Location: Package overview

From: ?cargo/alloy-contract@2.4.1cargo/alloy@2.4.1cargo/alloy-dyn-abi@1.7.2

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/alloy-dyn-abi@1.7.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Recently published: cargo alloy-json-abi published 9 hours ago

Location: Package overview

From: ?cargo/alloy-contract@2.4.1cargo/alloy@2.4.1cargo/alloy-sol-types@1.7.2cargo/alloy-json-abi@1.7.2

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/alloy-json-abi@1.7.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Recently published: cargo alloy-primitives published 9 hours ago

Location: Package overview

From: bin/prover/enclave/Cargo.tomlcargo/alloy-primitives@1.7.2

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/alloy-primitives@1.7.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Recently published: cargo alloy-sol-macro-expander published 9 hours ago

Location: Package overview

From: ?cargo/alloy-sol-types@1.7.2cargo/alloy-sol-macro-expander@1.7.2

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/alloy-sol-macro-expander@1.7.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Recently published: cargo alloy-sol-macro-input published 9 hours ago

Location: Package overview

From: ?cargo/alloy-sol-types@1.7.2cargo/alloy-sol-macro-input@1.7.2

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/alloy-sol-macro-input@1.7.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Recently published: cargo alloy-sol-macro published 9 hours ago

Location: Package overview

From: ?cargo/alloy-sol-types@1.7.2cargo/alloy-sol-macro@1.7.2

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/alloy-sol-macro@1.7.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Recently published: cargo alloy-sol-type-parser published 9 hours ago

Location: Package overview

From: ?cargo/alloy-contract@2.4.1cargo/alloy@2.4.1cargo/alloy-sol-types@1.7.2cargo/alloy-sol-type-parser@1.7.2

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/alloy-sol-type-parser@1.7.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Recently published: cargo alloy-sol-types published 9 hours ago

Location: Package overview

From: bin/prover/utils/Cargo.tomlcargo/alloy-sol-types@1.7.2

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/alloy-sol-types@1.7.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Recently published: cargo lru published 19 hours ago

Location: Package overview

From: ?cargo/alloy-provider@2.4.1cargo/lru@0.18.4

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/lru@0.18.4. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Medium
Recently published: cargo syn-solidity published 9 hours ago

Location: Package overview

From: ?cargo/alloy-sol-types@1.7.2cargo/syn-solidity@1.7.2

ℹ Read more on: This package | This alert | What are recently published artifacts?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should either be allowlisted to allow recently-published versions, or an older version should be used instead.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore cargo/syn-solidity@1.7.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@legion2002
legion2002 force-pushed the tanishk/tempo-7444-precompiles branch from 28f9480 to 4d12736 Compare September 3, 2026 14:30
Comment thread crates/precompiles/src/tip403_proxy/mod.rs Outdated
legion2002 and others added 2 commits September 3, 2026 15:38
Co-authored-by: Derek Cofausper <256792747+decofe@users.noreply.github.com>
Co-authored-by: Derek Cofausper <256792747+decofe@users.noreply.github.com>
Comment on lines 43 to 58
check_caller(caller, &[call.account])
}
IAccountKeychain::IAccountKeychainCalls::isAdminKey(call) => {
check_caller(caller, &[call.account])
}
IAccountKeychain::IAccountKeychainCalls::authorizeKey_0(_)
| IAccountKeychain::IAccountKeychainCalls::authorizeKey_1(_)
| IAccountKeychain::IAccountKeychainCalls::authorizeKey_2(_)
| IAccountKeychain::IAccountKeychainCalls::authorizeAdminKey(_)
| IAccountKeychain::IAccountKeychainCalls::burnKeyAuthorizationWitness(_)
| IAccountKeychain::IAccountKeychainCalls::revokeKey(_)
| IAccountKeychain::IAccountKeychainCalls::updateSpendingLimit(_)
| IAccountKeychain::IAccountKeychainCalls::setAllowedCalls(_)
| IAccountKeychain::IAccountKeychainCalls::removeAllowedCalls(_)
| IAccountKeychain::IAccountKeychainCalls::getTransactionKey(_) => CallCheck::Continue,
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

we can only check these selectors using .get(..4) after T11

@legion2002
legion2002 marked this pull request as ready for review September 3, 2026 19:15
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 3, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-03T19:19:40.655419Z af16f93 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants