This referendum executes a single Utility.batch_all of 21 calls that:
Cross-chain governance deliveries to EVM hosts and to IntentGatewayV2 are now gated behind a whitelisted relayer. HostManager no longer carries a separate relayer key: its admin is the only account allowed to deliver governance actions, and it is rotated through a dedicated SetAdmin action. IntentGatewayV2 likewise accepts deliveries only from a host-set relayer and is now versioned under an ERC-1967 reinitializer.
The contracts currently registered on Nexus predate this model. This proposal migrates every live deployment onto the new HostManager and the new gateway implementation atomically, so no chain is left with an unarmed gateway or an outdated manager.
Separately, BRIDGE is being made available on BNB Chain and Polygon through HyperFungibleToken. BRIDGE is native to Nexus, so transfers out lock supply on Nexus and mint on the destination, and transfers back burn and release.
Ethereum (1), Arbitrum One (42161), OP Mainnet (10), Base (8453), BNB Chain (56), Gnosis (100), Soneium (1868), Polygon (137), Polkadot Hub (420420419).
Calls 1 to 18: HostManager rotation and gateway upgrade, per chain
For each of the nine chains above, two calls are issued:
HostExecutive.update_host_params(Evm(chain), { host_manager: 0xc09a8229e2c18dead6a2795154d7d8c7f1ac5dfa }). All other host parameters are left unchanged. The update is dispatched through the current HostManager, which is the only manager the destination EvmHost accepts updates from, and the EvmHost then switches to the new manager.IntentsCoprocessor.upgrade_gateway(Evm(chain), new_impl: 0x9d82b05156d0da273d66c5ccbdccef2b00ee06a7, init_data: migrate(0xd15007f5ff5c8c5ccc77339a03a3ea60d1ece854)). The gateway proxy is pointed at the new implementation and migrate(address) runs as migration calldata in the same upgradeToAndCall. migrate is host-only and one-shot: it sets the whitelisted relayer to 0xd15007f5ff5c8c5ccc77339a03a3ea60d1ece854 and lands the proxy at implementation version 2.Call 19: register BRIDGE with HyperFungibleToken
HyperFungibleToken.register_token with local asset id 0x08fb31c3e81624356c3314088aa971b73bcc82d22bc3e3b184b4593077ae3278 (which is keccak256("BRIDGE"), the native asset id), native: true, and ERC20 peers at 0x5b0c50fdd52ecc0d4c682c441eabad41ffdeabbb with 18 decimals on both BNB Chain and Polygon. Nexus BRIDGE has 12 decimals, so amounts are scaled by 10^6 on the way out and back.Calls 20 and 21: Bandwidth allowlist
Bandwidth.set_allowlist(Evm(56), 0x5b0c50fdd52ecc0d4c682c441eabad41ffdeabbb, true)Bandwidth.set_allowlist(Evm(137), 0x5b0c50fdd52ecc0d4c682c441eabad41ffdeabbb, true)These allow the BRIDGE token contracts on BNB Chain and Polygon to send messages to Nexus without purchasing bandwidth.
| Role | Address | Chains |
|---|---|---|
| New HostManager | 0xc09a8229e2c18dead6a2795154d7d8c7f1ac5dfa |
all nine |
| New IntentGatewayV2 implementation | 0x9d82b05156d0da273d66c5ccbdccef2b00ee06a7 |
all nine |
| Gateway delivery relayer | 0xd15007f5ff5c8c5ccc77339a03a3ea60d1ece854 |
all nine |
| BRIDGE ERC20 | 0x5b0c50fdd52ecc0d4c682c441eabad41ffdeabbb |
BNB Chain, Polygon |
Explorer links: Ethereum, Arbitrum, Optimism, Base, BNB Chain, Gnosis, Soneium, Polygon, Polkadot Hub for the HostManager. Substitute the other addresses into the same explorer paths. The BRIDGE ERC20 is on bscscan and polygonscan.
The batch is batch_all, so if any call fails on Nexus the whole referendum reverts. The 18 EVM-side effects are delivered as ISMP post requests and take effect on each destination once relayed. The gateway upgrade and relayer arming on a given chain happen in one destination transaction, so there is no window where a gateway runs the new implementation without a relayer.
Voters can verify the call by decoding the preimage against the Nexus runtime: pallet 4 is Utility, 53 is HostExecutive, 94 is IntentsCoprocessor, 98 is HyperFungibleToken and 96 is Bandwidth. The migration selector 0xce5494bb is keccak256("migrate(address)")[:4].
Two notes for you, not for the proposal. The new implementation at 0x9d82…06a7 must be deployed from code that includes migrate(address), which as of this checkout exists only in local commit f221e7fe and not on any remote branch. And the relayer at 0xd150…e854 is described above as an account rather than a contract, since it is passed as a plain address and I could not confirm it on chain. Adjust either statement if you know otherwise.
Threshold
Threshold