This referendum performs two Root-gated actions in one utility.batch:
IntentGatewayV2 implementation on all nineintentsCoprocessor.upgradeGateway cross-chain dispatches.system.authorizeUpgrade.The new implementation is already deployed and explorer-verified at the deterministic CREATE2
address 0x976B268b06f545c4A2BF44866Aa2465bd8B3C67d on ethereum, arbitrum, optimism, base, bsc,
gnosis, soneium, polygon and Polkadot Hub (24,502 bytes of identical bytecode on every chain,
recorded in PR #1113). The ERC-1967
proxies at 0xAe041F7B0CB581876832830baeB6a2Aa2a3C9716 still point at the previous implementation
(0x7b4b4Bf42B6f822D95D11877699A4bf9216cd6cE), so nothing has changed on mainnet yet — this
referendum is the activation step.
What the new implementation changes: the OrderPlaced event carries the full order call payloads
and graffiti (predispatchCall, outputCall, graffiti) — see
PR #1093. The order commitment is
unchanged; only the event schema, and therefore its topic0, changes from 0x34509e62… to0x76dc946f….
Each call is a zero-fee ISMP POST from pallet-intents-coprocessor to the gateway on the
destination chain, authorized on the contract by source == hyperbridge. init_data is empty — no
storage migration is required. The upgrades take effect per-chain as relayers deliver each request,
so activation is not simultaneous across the nine chains.
Integrator prerequisite. Because topic0 changes, an integrator or filler running pre-upgrade
software sees no OrderPlaced logs at all against an upgraded gateway, and a pre-upgradeplaceOrder reverts at receipt parsing after funds are escrowed. @hyperbridge/sdk 2.8.0 is
published; the filler 0.9.0 rollout to active fillers must be confirmed before this referendum is
enacted.
Authorizes the runtime published as
nexus-v8300:
0xa8489747e3bb99ec7c247592130826a64919164b895cce182edb34808fe742eenexus-8300, metadata V14, 2,090,728 bytesed61e7d7e), reproducible via ./scripts/build_release_runtime.sh nexus-runtimeContents: bundling of phantom pairs into a single order plus pair-centric liquidity pool indexing
(PR #1086), and the runtime version bump.
system.authorizeUpgrade only records the authorization; the WASM itself is not carried in this
proposal. After enactment anyone may submit the (free, unsigned) system.enactAuthorizedUpgrade(code)
with the matching blob to apply it.
intentsCoprocessor.upgradeGateway is gated by EnsureRoot, as issystem.authorizeUpgrade), i.e. the root track, or the whitelisted_caller track after a technicalutility.batch (0x12c2adbe…) / utility.batchAll (0xc668756b…), 289 bytes.GatewayNotFound.utility.batch. A failing call is skipped and the batch continues (emittingBatchInterrupted), which could leave some chains upgraded and others not. utility.batchAll is420420419; the implementation there has sinceenactAuthorizedUpgrade ischeck_version = true, so the blob is validatedThreshold
Threshold