Definition of trustless security
Before contrasting Snowbridge to other solutions, I think it’s important for us to align on what we believe trustless security means in a Polkadot context. We define a trustless, secure polkadot bridge as one in which users and applications need to trust only:
- Polkadot itself, ie, it’s consensus algorithm and state transition machine, and that it’s code is bug-free
- Ethereum, ie, it’s consensus algorithm and state transition machine, and that it’s code is bug-free
- The governance and upgrade process of Polkadot itself (ie, council/gov2 root origin/DOT token holder votes)
- The governance and upgrade process of Ethereum itself (ie, ETH staking and their rough community consensus)
- All on-chain code involved in the bridge is bug-free (ie: any code on any chain or parachain involved in the bridge and any smart contract code)
In addition to the above, most designs in some component of their stack require a single honest party (eg: All parachains today do require at least one single honest node running the parachain). We consider this requirement acceptabe too, provided that this role is fairly permissionless and openly accessible for anyone to participate as.
There should be no other trust required in any part of the bridge or parachains involved.
On evaluating trustlessness
Another important thing to understand is that, in most cases, the security of a system is only as strong as it’s weakest link. This means that any trustless bridge needs to be full stack trustless, across all of its code, contracts, chains, parachains, governance and upgrade processes. If any of these pieces do not meet the above definition of trustless, then the bridge’s trustlessness and decentralization will likely degrade to that of the lowest common denominator.
We’ll also talk about what we believe common good means, but that’s for another post. This one is focused on trustlessness.
Why is trustless security critically important for a Polkadot Ethereum bridge?
Of course, there are tons of reasons why a trustless bridge is important, but in the Polkadot context we believe it is even more critical than typical, specifically because:
- Bridges are infectious. Their assets, messages and applications will spread through the ecosystem into other parachains and applications. This means that their flaws are infectious too, and issues with a bridge, especially the Ethereum bridge which is likely to have the most assets/usage of any other bridge will become issues for Polkadot as a whole.
- If the Ethereum bridge is not trustless, there is significant risk that its assets infects most Polkadot dapps and all of Polkadot and all parachains have their security degraded to that of the bridge.
- Even if the Ethereum bridge is decentralized, if it does not meet the exact 1 - 5 criteria above, this means that it is getting some of it’s decentralization/trustless from somewhere else, that isn’t Polkadot. This means that Polkadots security and the security that staking the DOT token provides is at risk of being undermined not just for the bridge, but for all apps on all parachains.
Common Polkadot Bridge components
Most polkadot ethereum bridges today involve some combination of all the below components:
- A: Ethereum smart contracts for the bridge
- B: Ethereum smart contracts for any asset-related applications
- C: Bridge-related parachain logic
- D: Parachain consensus/verification
- E: Governance and upgrade process for the smart contracts
- F: Governance and upgrade process for the parachain and bridge-related code on it
- G: Other components that do not run on Polkadot nor Ethereum (eg: relayers, oracles, other blockchains with different security)
Snowbridge
For Snowbridge, we have the following:
- A: Ethereum smart contracts for the bridge
- Run on ethereum and use light client verification for all headers based on BEEFY proofs, merkle proofs for all messages and permissionless access channels
- B: Ethereum smart contracts for any asset or monetary related applications (eg: Bridged tokens)
- Run on ethereum and use the above bridge verifications to mint wrapped assets, with access only via the above bridge verification channels
- C: Bridge-related parachain logic
- Runs in a Rust pallet and uses light client verification for all headers based on Ethereum’s Proof of Stake, merkle proofs for all messages and permissionless access channels
- D: Parachain consensus/verification
- Expected to run as a parachain on polkadot, using the bridge hub built on Cumulus with single-honest-party based consensus and fairly permissionless validators.
- E: Governance and upgrade process for the smart contracts
- Gov2 root origin only, propogated to Ethereum via cross-chain governance
- F: Governance and upgrade process for the parachain and bridge-related code on it
- G: Other components that do not run on Polkadot nor Ethereum (eg: relayers, oracles, other blockchains with different security)
- Offchain relayers, with single-honest-party requirements and fully permissionless access to anyone
Based on the above definition, besides for the always-present and unavoidable risk of bugs in the code, Snowbridge meets all requirements 1 - 5
Also, in addition to further audits to mitigate the bug risk, we also plan to implement additional mechanisms within the bridge to limit the blast radius of attacks, for example a circuit breaker.
We can provide our assessment of other projects, but we’d rather not dish out harsh critiques before other teams have a chance to share their thoughts on their terms :).