feat(exithatch): Admit Forced Exit requests into the ZonePortal - #1445
adityapk00 wants to merge 4 commits into
Conversation
|
cyclops audit |
|
cc @adityapk00 Cyclops audit event published. View workflow run Config: config: |
tempoxyz-bot
left a comment
There was a problem hiding this comment.
👁️ Cyclops Review
PR #1445 stages TIP-1012 forced-exit admission. The admission path is gated today, but the review found activation-blocking integration issues around queue observation, TIP-20 receive-policy semantics, runtime size, capacity sizing, ABI/checker coverage, and ECIES domain separation. Findings are inline.
Reviewer Callouts
- ⚡ Activation coupling:
forcedExitVersionis an L1 storage gate with no production setter, not a zone-hardfork gate. The PR that activates it should make L1 ingestion, zone execution, settlement, and checker support a code-level precondition. - ⚡ Observer asymmetry:
crates/l1/src/event.rsfails open on unknown portal topics whilecrates/checker/src/l1/events.rsfails closed. Structurally couple these observer tables to the portal ABI/queue types. - ⚡ Storage layout conflict resolution:
_reservedT13TokenCursoratcrates/contracts/src/runtime/tempo/ZonePortal.sol:231-234is load-bearing; preserve slot 28 during the T13/TIP-1096 merge. - ⚡ ECIES caller compatibility:
encrypt_payloadnow accepts only SEC1 parity bytes0x02/0x03; out-of-tree SDKs using0/1parity conventions will start receivingNone. - ⚡ Future settlement invariant: Keep replay protection keyed on
auth.nonceand ensure future withdrawal helpers enforce the nonzero fallback nonce required by the README.
| } | ||
|
|
||
| /// @inheritdoc IZonePortal | ||
| function requestForcedExit( |
There was a problem hiding this comment.
ZonePortal runtime bytecode exceeds the EIP-170 deployment limit
The forced-exit additions push the compiled deployed runtime to 24,651 bytes, which is 75 bytes over EIP-170's 24,576-byte limit. forge build --sizes fails and CREATE/CREATE2 deployment of this implementation would revert on EIP-170-enforcing EVMs, even if the current genesis/hardfork install path can bypass CREATE.
Recommended Fix:
Reduce runtime size before merge and leave headroom for the remaining TIP-1012 work; move/de-duplicate reusable forced-exit validation and re-run forge build --sizes plus ABI/storage conformance.
Add authorization codecs, encrypted request helpers, queue commitments, and activation-gated portal admission with weighted capacity and atomic compensation. Include checker event handling, ABI declarations, and forced-exit ECIES domain separation while preserving legacy deposit encryption.
99e8389 to
6cb7364
Compare
Implements the first part of TIP-1012: protocol types, root authorization, and admission of encrypted forced-exit requests through ZonePortal.
Admission remains disabled until coordinated protocol activation. L1 ingestion, execution, and outcome settlement follow in stacked PRs; prover integration is deferred.