#25·Tech Collective motion: whitelist a runtime upgrade + connected-chain configuration batch

20d ago
0 Comments
Executed

Summary

This motion whitelists a single utility.batchAll so it can subsequently be enacted as a Root-origin call via the public Whitelisted Caller track. The batch combines a runtime upgrade authorization with the configuration updates that need to ship alongside it.

Why whitelist

The batch contains operations that must execute atomically as a single Root dispatch — partially applying them (e.g., authorizing the upgrade without updating the EVM host parameters) would leave the system in an inconsistent state between bridged chains. Whitelisting lets the public referendum on the faster whitelisted_caller track approve the bundle in one shot rather than requiring 22 separate Root-track referenda.

What is being whitelisted

A 22-call utility.batchAll performing the following, in order:

  1. System.authorize_upgrade(code_hash = 0x40a1391c8a4b2a68144bac2bd6667bbd1c2a6ff95f3f34209ae2a25c58b491f4) — authorizes the runtime to upgrade to the code with the given hash once applyAuthorizedUpgrade is sent in a subsequent block.
  2. BeefyConsensusProofs.set_reward_curve([(100,100), (50,100), (30,100), (20,100), (10,100), (5,100)]) — sets the decreasing uncle-reward curve for BEEFY consensus proofs: position 0 (first prover) gets 100% of the base reward, position 1 gets 50%, then 30%, 20%, 10%, 5%.
    3–11. HostExecutive.update_host_params(state_machine, { consensus_client: Some(0x446f3de1Aff18c2494ab4B27b921f657A468Ab30) }) for each of: Base, Ethereum, Arbitrum, Optimism, Gnosis, BNB, Polygon, Soneium, Polkadot Hub — points all nine EVM hosts at the new ConsensusClient contract address. Each call dispatches a host-manager ISMP message to the corresponding chain.
  3. IsmpOptimism.set_dispute_game_factories(Base, factory = 0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e, configs = [...]) — registers the Base DisputeGameFactory plus the three currently-supported game-type implementations:
    • CANNON (gameType = 0) → 0x6dDBa09bc4cCB0D6Ca9Fc5350580f74165707499 (FaultDisputeGame layout)
    • PERMISSIONED (gameType = 1) → 0x58bf355C5d4EdFc723eF89d99582ECCfd143266A (FaultDisputeGame layout)
    • Base AggregateVerifier (gameType = 621) → 0x4c0DAF5d9ABe92e8A26a60698a657B03538a3028 (AggregateVerifier layout)
      13–21. Relayer.set_outbound_consensus_delivery_reward(state_machine, amount) for each EVM destination — sets the per-chain reward paid to the relayer that delivers a mandatory consensus update:
    • Ethereum → 50 BRIDGE
    • Base, Arbitrum, Optimism, Gnosis, BNB, Polygon, Soneium, Polkadot Hub → 20 BRIDGE each
  4. Scheduler.schedule_named_after(id = "nexus/sp1_vkey_hash_update", after = 500, call = BeefyConsensusProofs.set_sp1_vkey_hash(0x007d1720c695842ed647a1a72e981751f9b5e26fc5ca038523b23430a1292f08)) — queues the SP1 verifying-key rotation to run 500 blocks after enactment, giving the proving infrastructure a window to roll over.

Artifacts

Encoded batch length 818 bytes
Batch call hash (keccak-256) 0x92406cbd37fab40bb8cfa8c04448defdc6f0be6e859ff1006685fdf74347b2b2
Declared weight (with 10% buffer) ref_time = 2_831_825_383, proof_size = 46_671
Preimage status Noted via Preimage.note_preimage(...) — preimage hash matches the call hash above

Motion call

TechnicalCollective.propose(
    threshold = 2,
    proposal  = Whitelist.whitelist_call(0x92406cbd37fab40bb8cfa8c04448defdc6f0be6e859ff1006685fdf74347b2b2),
    length_bound = 34,
)

encoded calldata (38 bytes):
0x500208530092406cbd37fab40bb8cfa8c04448defdc6f0be6e859ff1006685fdf74347b2b288

Tech Collective members can verify the inner call by decoding 0x530092406cbd37fab40bb8cfa8c04448defdc6f0be6e859ff1006685fdf74347b2b2 (Whitelist.whitelist_call with the batch's call hash).

Motion proposal hash (used to vote and close): 0xc55d43565629cae9d106ab616792398ebc07f6651a62b5a450c1498e8e498ca0.

Edited
Reply
Up
Share
This vote has been closed.
Call
Metadata
Timeline4
Comments