Polkassembly Logo

Create Pencil IconCreate
OpenGov
View All Whitelisted Caller

Upgrade Snowbridge Gateway Contract

inWhitelisted Caller
5 days ago
Deciding

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 InboundMessage submission 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-tester and verified that EthereumSystem.Upgrade event 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)

PleaseLogin to comment

Voting Period

Decision Period

4 / 28 days

Confirmation Period

0 / 10 minutes

Help Center

Report an Issue
Feedback
Terms and Conditions
Github

Our Services

Docs
Terms of Website
Privacy Policy

Polkassembly · Archived 2026 · polkassembly.io

Terms and ConditionsTerms of Website
Privacy Policy