Upgrade Snowbridge Gateway Contract
This proposal aims to upgrade the Snowbridge Gateway Proxy contract on Ethereum, which is remotely governed by OpenGov utilizing Snowbridge itself as a cross-chain governance bridge.
New Features
The upgraded gateway supports new features:
- Adopted the Fiat-Shamir approach in
BeefyClient, reducing message delivery latency from 30 minutes to just 1–2 minutes. - Revamped the
InboundMessagesubmission flow, allowing the UI to dry-run the entire message process.
Technical Details
This proposal will update the Gateway proxy with:
- a new implementation contract at 0x36e74FCAAcb07773b144Ca19Ef2e32Fc972aC50b
- a new BeefyClient at 0x7cfc5C8b341991993080Af67D940B6aD19a010E1
This contract was built and deployed using:
- Repository: https://github.com/Snowfork/snowbridge
- Commit: 1201293e482ef052b9c3989dcf680046704fef3d
- Command:
cd contracts; scripts/deploy-gateway.sh
The preimage that will be executed on Bridge Hub for this ref was created using the Snowbridge Control tool.
➜ control git:(main) ✗ cargo run --release --features polkadot --bin snowbridge-preimage -- --format hex upgrade-202603
Preimage Hash: 0xd96bca57bceb4bcb60aed68b6e844a1b86800b8705f172afc3812305b98a883d
Preimage Size: 90
0x1f0005010100a90f050c2f000006020102a7d7d589700101530036e74fcaacb07773b144ca19ef2e32fc972ac50be3cfcc0042ad4c819c627fb2a84ba0822d67747a8618a4e1c4eb0c5112b179030100a0860100000000002000
Testing
The upgrade proposal was thoroughly tested using simulations on forked instances of both Polkadot and Ethereum mainnet, leveraging Chopsticks and Foundry for Polkadot and Ethereum respectively.
- Generate referenda and whitelist calls using
opengov-cli
./target/release/opengov-cli submit-referendum --proposal 0x1f0005010100a90f050c2f000006020102a7d7d589700101530036e74fcaacb07773b144ca19ef2e32fc972ac50be3cfcc0042ad4c819c627fb2a84ba0822d67747a8618a4e1c4eb0c5112b179030100a0860100000000002000 --network polkadot --track whitelisted-caller --after 100 --output calldata
- Ran
polkadot-referenda-testerand verified thatEthereumSystem.Upgradeevent emitted as expected.
npx github:karolk91/polkadot-referenda-tester test \
--governance-chain-url wss://asset-hub-polkadot-rpc.n.dwellir.com \
--fellowship-chain-url wss://polkadot-collectives-rpc.polkadot.io \
--call-to-create-governance-referendum 0x2804080500710140031f0005010100a90f050c2f000006020102a7d7d589700101530036e74fcaacb07773b144ca19ef2e32fc972ac50be3cfcc0042ad4c819c627fb2a84ba0822d67747a8618a4e1c4eb0c5112b179030100a08601000000000020003e003f0d02cd80f1c35b9403c6c87535dca34692a818067389e59500279a830457910e56295c0000000164000000 \
--call-to-create-fellowship-referendum 0x2804043d003e0201cc1f0005010100a10f05082f0000060300884000d96bca57bceb4bcb60aed68b6e844a1b86800b8705f172afc3812305b98a883d010a000000 \
--additional-chains wss://bridge-hub-polkadot-rpc.n.dwellir.com \
--verbose
...
ℹ • EthereumOutboundQueue.MessageQueued
▸ Data: {
"id": "0x2d7325254a91cb620f30d18e814410bdc5c82640fa54fd61064a8832dfc181c3"
}
ℹ • EthereumSystem.Upgrade
▸ Data: {
"impl_address": "0x36e74fcaacb07773b144ca19ef2e32fc972ac50b",
"impl_code_hash": "0xe3cfcc0042ad4c819c627fb2a84ba0822d67747a8618a4e1c4eb0c5112b17903",
"initializer_params_hash": "0x0e5751c026e543b2e8ab2eb06099daa1d1e5df47778f7787faab45cdf12fe3a8"
}
- Forked Ethereum Upgrade contract verification
Since the Ethereum side of snowbridge has no fallback governance or centralized escape mechanisms, it is critical to ensure that the upgrade does not compromise the ongoing viability of the gateway. In this context, the fork tests in ForkUpgrade202603.t.sol verify that cross-chain signalling is preserved.
Audits
The Ethereum contracts were audited by Oak Security, with the full Audit Report available for reference.
Following this, we also received several HackenProof reports and implemented the recommended changes and fixes accordingly.
Comments (0)