feat(precompiles): add native multisig storage - #7237
Conversation
✅ Changelog found on PR. |
d129995 to
2373a37
Compare
2373a37 to
7c523f3
Compare
📊 Tempo Precompiles CoverageprecompilesCoverage: 6446/10883 lines (59.23%) File details
contractsCoverage: 1/223 lines (0.45%) File details
Total: 6447/11106 lines (58.05%) |
7c523f3 to
9e96b16
Compare
|
cyclops audit fast note="this belongs to the GH stack #7243 and the TIP 1061 is specified in the PR 7242. any bug not introduced by this PR should be clearly marked" |
tempoxyz-bot
left a comment
There was a problem hiding this comment.
👁️ Cyclops Review
This change adds native multisig configuration storage, authorization helpers, and ABI dispatch scaffolding. The core quorum, storage, and versioning logic is well bounded, but three low-severity issues remain around reserved-address eligibility, state-dependent error classification, and authorization/config binding.
Reviewer Callouts
- ⚡ T11 activation wiring: The precompile is not registered or boundary-deployed in this PR, and its dispatch selectors have no local T11 gate. When wiring lands, ensure lookup and deployment activate together at T11 to avoid transaction-validity divergence.
- ⚡ Bootstrap preconditions:
store_initial_configdoes not enforce the TIP's zero-nonce, empty-code, and no-EIP-7702-delegation requirements. Confirm the eventual caller enforces all three and preserves bootstrap writes across later call reverts. - ⚡ Nested owner checks: The eventual nested-config callback must also reject nested owners with bytecode or EIP-7702 delegation.
- ⚡ Canonical owner source: Future authorization code must use the canonical ordered owner list rather than raw
read_owner_weightmapping rows. - ⚡ Reconstructed config salt:
load_registered_configreconstructsInitMultisigwith a zero salt, soaccount()does not recover the registered account. Consider a dedicated type or explicit API documentation before adding consumers.
9e96b16 to
c457982
Compare
c457982 to
3265c34
Compare
|
cyclops audit fast note="this belongs to the GH stack #7243 and the TIP 1061 is specified in the PR 7242. any bug not introduced by this PR should be clearly marked" |
tempoxyz-bot
left a comment
There was a problem hiding this comment.
👁️ Cyclops Review
Two verified Low-severity correctness issues were found. No exploitable consensus or state-transition vulnerability was identified.
Reviewer Callouts
- ⚡ Authorization/config binding:
NativeMultisigAuthConfig::matches_signaturedoes not bindRegisteredorBootstrapCompanionconfigurations tosignature.account(). Current planned callers enforce this, but future pool or RPC callers must preserve the implicit contract. - ⚡ Transient bootstrap guard:
bootstrapped_accountrelies on transient storage being cleared between transactions rather than an explicit reset. Confirm that integration preserves this lifecycle assumption. - ⚡ Storage-credit accounting: Bootstrap owner-set writes bypass TIP-1060 accounting while updates use the metered path. Confirm that intrinsic gas covers bootstrap slots as TIP-1061 requires.
2fc8dd7 to
66ca6c2
Compare
66ca6c2 to
33720c0
Compare
|
cyclops audit fast note="this belongs to the GH stack #7243 and the TIP 1061 is specified in the PR 7242. any bug not introduced by this PR should be clearly marked" |
tempoxyz-bot
left a comment
There was a problem hiding this comment.
👁️ Cyclops Review
This PR adds the storage, validation, and authorization foundations for TIP-1061 native multisig accounts. The precompile is not registered yet, so the two defense-in-depth findings are latent rather than exploitable on the current production path.
Reviewer Callouts
- ⚡ T11 wiring: Add the hardfork-gated lookup, reserve
NATIVE_MULTISIG_ADDRESSinSYSTEM_PRECOMPILES, and seedtx_origintogether. - ⚡ Bootstrap preconditions: Confirm the handler checks zero nonce, empty code, and no delegation before storage writes or nonce consumption.
- ⚡ Authorization error contract: Re-check
InvalidTransaction/ValidationFailed/Fatalclassifications when the handler consumer lands.
60adf8e to
c77f82c
Compare
83fff21 to
7120b94
Compare
|
cyclops audit fast note="this belongs to the GH stack #7243 and the TIP 1061 is specified in the PR 7242. any bug not introduced by this PR should be clearly marked" |
b48bf9f to
7115892
Compare
7115892 to
c699150
Compare
c0c662a to
3e4e6fd
Compare
3e4e6fd to
58409d3
Compare
Adds the unregistered native multisig precompile with one-slot commitment storage, ABI dispatch, state validation, and quorum verification.
Stacked on #7236; reference implementation: #4069.