Dispatch utility.batchAll (call hash 0x378378e79494d3eadbef8a9e651c6a7753ca5b7bd1fbbbadb80c5c4ec977a196)
to move consensusClient on all 9 EVM hosts from the current ConsensusRouter0xfb9D64c710298DF88B959d3248a8C3eE69f71f05 to the newly deployed0x8FEe4eeEB9dD15247A2b8D0aC05fCaEcad710280.
pallet_ismp_host_executive requires Root, so this needs to reach Root origin
(whitelist + fast-track). The batch contains 9 × hostExecutive.update_host_params,
one per chain: Ethereum, Arbitrum, Optimism, Base, BSC, Gnosis, Soneium, Polygon,
Polkadot Hub.
This activates a hardening fix to consensus proof validation in the SP1 BEEFY client.
It is a security fix and should be treated as time-sensitive. A full write-up will be
published once the upgrade is live on all chains.
| Address | |
|---|---|
| New SP1Beefy | 0x3683CD18CDb7C5C223F9489Ac33c9c97EB176cB1 |
| New ConsensusRouter | 0x8FEe4eeEB9dD15247A2b8D0aC05fCaEcad710280 |
| EcdsaBeefy (reused, unchanged) | 0xBb5dbAA19b20DD5A2CE523c9437781F9236DF2B0 |
| SP1Verifier (reused, unchanged) | 0x70303aA3434e13B64F150CE72bad43e13c8eD186 |
Only the SP1 BEEFY client changed. The ECDSA client and the Groth16 verifier are the
existing deployments, reused at their current addresses.
The SP1 verification key is unchanged (0x007d1720…): the change is enforced on-chain,
not in-circuit, so no re-proving is required and relayers need no changes. Both new
contracts are deployed and source-verified at identical addresses on all 9 chains.
No legitimate consensus proof is affected. The change was validated against the most
recent mainnet submissions across successive validator-set rotations, and a mainnet fork
test replays a real proof — including an authority-set rotation — through the new client
unchanged.
batchAll is atomic: either all 9 hosts move or none do. update_host_params re-encodes
the full param struct from the values stored on Nexus, so drift would rewrite other fields;
all ten fields were diffed against the live hostParams() on all 9 chains and are in sync,
so this changes consensusClient only.
cast call 0x8FEe4eeEB9dD15247A2b8D0aC05fCaEcad710280 "sp1Beefy()(address)"0x3683CD18…, and "ecdsaBeefy()(address)" → 0xBb5dbAA1… (existing client, reused).cast call 0x3683CD18CDb7C5C223F9489Ac33c9c97EB176cB1 "verificationKey()(bytes32)"0x007d1720c695842ed647a1a72e981751f9b5e26fc5ca038523b23430a1292f08 (unchanged).consensusClient and nothing else.0x040224350100010000000000000000000000018fee4eeeb9dd15247a2b8d0ac05fcaecad7102800000350100b1a400000000000000000000018fee4eeeb9dd15247a2b8d0ac05fcaecad71028000003501000a0000000000000000000000018fee4eeeb9dd15247a2b8d0ac05fcaecad7102800000350100052100000000000000000000018fee4eeeb9dd15247a2b8d0ac05fcaecad7102800000350100380000000000000000000000018fee4eeeb9dd15247a2b8d0ac05fcaecad7102800000350100640000000000000000000000018fee4eeeb9dd15247a2b8d0ac05fcaecad71028000003501004c0700000000000000000000018fee4eeeb9dd15247a2b8d0ac05fcaecad7102800000350100890000000000000000000000018fee4eeeb9dd15247a2b8d0ac05fcaecad7102800000350100431b0f190000000000000000018fee4eeeb9dd15247a2b8d0ac05fcaecad7102800000