paritytech / parity-bridges-common

Collection of Useful Bridge Building Tools 🏗️
GNU General Public License v3.0
270 stars 132 forks source link

[P-K Bridge] BridgeHub Kusama & BridgeHub Polkadot parachains story (bridge active and live) #2455

Closed bkontur closed 3 months ago

bkontur commented 1 year ago

Components

BridgeHubKusama BridgeHubPolkadot substrate-relay
Code Cumulus Cumulus Bridges
Live endpoint polkadot-js-org polkadot-js-org TODO:
Logs loki loki TODO:
Telemetry here here TODO:
Monitoring Grafana Grafana TODO:

Local testing

Check here

Going live / cutover and timeline for bridge

Because of asynchronous and disconnected governances for Polkadot vs Kusama, we want to allow bridge operations step-by-step in few iterations - to minimalize risk and avoid getting stuck or losing messages/assets. The end goal is to allow message transfer via bridge, only after both sides can operate and are ready to process incoming messages.


  1. Governance motion for BridgeHubKusama upgrade
  2. Governance motion for BridgeHubPolkadot upgrade
  3. Prepare deployment of (Parity) relayers https://github.com/paritytech/parity-bridges-common/issues/2417

  4. Enact BridgeHubKusama runtime
  5. New governance motion for BridgeHubKusama with calls:
    • pallet_bridge_grandpa::Call::initialize - enables relaying Polkadot relaychain finality (which enables receiving extrinsics for other pallet_bridge_parachains + pallet_bridge_message)
    • frame_system::Call::set_storage(DeliveryRewardInBalance)
    • frame_system::Call::set_storage(RequiredStakeForStakeAndSlash)
    • (optional - there is a possiblity to disable other pallets, e.g. disabled sending outbound messages)

  6. Enact BridgeHubPolkadot runtime
  7. New governance motion for BridgeHubPolkadot with calls:
    • pallet_bridge_grandpa::Call::initialize - enables relaying Kusama relaychain finality (which enables receiving extrinsics for other pallet_bridge_parachains + pallet_bridge_message)
    • frame_system::Call::set_storage(DeliveryRewardInBalance)
    • frame_system::Call::set_storage(RequiredStakeForStakeAndSlash)
    • (optional - there is a possiblity to disable other pallets, e.g. disabled sending outbound messages)

  8. When 9. and 11. is done, start relayers (finality, parachains, messages)
  9. At this point, Kusama <> Polkadot bridge is operational, can relay messages (at least we can verify finality relaying)

Going live / cutover and timeline for asset transfer via bridge use-case


  1. Review and merge Cumulus PR https://github.com/paritytech/cumulus/pull/2762
  2. Pass security audit for that PR

  3. Governance motion for AssetHubKusama upgrade
  4. Governance motion for AssetHubPolkadot upgrade

  5. Enact AssetHubKusama runtime

  6. Enact AssetHubPolkadot runtime

  7. When 18. and 19. is done, at this point both sides (AssetHubKusama, AssetHubPolkadot) can receive and transfer assets DOTs/KSMs over bridge

Note: HRMP channels between AssetHubs and BridgeHubs are already opened. Note: Some governance calls can be added directly to runtime as Migrations/OnRuntimeUpgrade. _Note: Creation of ForeignAssets for wrappedDOT/wrappedKSM will be done simultaneously: https://github.com/paritytech/parity-bridges-common/issues/2401


Issues/TODOs:

bkontur commented 1 year ago

Initial setup for Kusama is ready and all PRs are merged, And will be deployed in coming release 9360 https://github.com/paritytech/devops/issues/2196

Polkadot-Forum commented 1 year ago

This issue has been mentioned on Polkadot Forum. There might be relevant details there:

https://forum.polkadot.network/t/polkadot-kusama-bridge/2971/2

svyatonik commented 3 months ago

I think we may close it, since the bridge is launched :)