polkadot-sdk icon indicating copy to clipboard operation
polkadot-sdk copied to clipboard

[bridges-v2] Permissionless lanes

Open bkontur opened this issue 1 year ago • 5 comments

Relates to: https://github.com/paritytech/parity-bridges-common/issues/2451 Closes: https://github.com/paritytech/parity-bridges-common/issues/2500

Summary

Now, the bridging pallet supports only static lanes, which means lanes that are hard-coded in the runtime files. This PR fixes that and adds support for dynamic, also known as permissionless, lanes. This means that allowed origins (relay chain, sibling parachains) can open and close bridges (through BridgeHubs) with another bridged (substrate-like) consensus using just xcm::Transact and OriginKind::Xcm.

This PR is based on the migrated code from the Bridges V2 branch from the old parity-bridges-common repo.

Explanation

Please read bridges/modules/xcm-bridge-hub/src/lib.rs to understand how managing bridges works. The basic concepts around BridgeId and LaneId are also explained there.

TODO

  • [x] search and fix for comment: // TODO:(bridges-v2) - most of that stuff was introduced with free header execution: https://github.com/paritytech/polkadot-sdk/pull/4102 - more info in the comment bellow
  • [x] TODO: there's only one impl of EnsureOrigin<Success = Location>

TODO - not blocking review

benchmarking:

  • [ ] regenerate all relevant weights for BH/AH runtimes
  • [ ] regenerate default weights for bridging pallets e.g. modules/messages/src/weights.rs
  • [ ] add benchmarks for xcm-bridge-hub pallet

testing:

  • [ ] add xcm-emulator tests for Rococo/Penpal to Westend/Penpal with full opening channel and sending/receiving xcm::Transact

migrations:

  • [ ] add migrations for BridgeHubRococo/Westend https://github.com/paritytech/parity-bridges-common/issues/2794 (to be reusable for P/K bridge)
    • [ ] check also storage migration, if needed for pallets
    • [ ] migration for XCM type (optional)
    • [ ] migration for static lanes to the dynamic (reuse for fellows)

investigation:

  • [ ] revisit https://github.com/paritytech/parity-bridges-common/issues/2380
  • [ ] check congestion around LocalXcmChannelManager and OutboundLanesCongestedSignals impls - search TODO:(bridges-v2) - add LocalXcmChannelManager impl and TODO:(bridges-v2) - FAIL-CI - we dont use it, remove?
    • to be reusable for polkadot-fellows
    • return report_bridge_status was remove, so we need to XcmpQueue alternative?

bkontur avatar Jul 04 '24 22:07 bkontur