Skip to content
Snippets Groups Projects
  • Branislav Kontur's avatar
    [bridges-v2] Permissionless lanes (#4949) · 22100999
    Branislav Kontur authored
    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](https://github.com/paritytech/polkadot-sdk/pull/4427) from the
    old `parity-bridges-common`
    [repo](https://github.com/paritytech/parity-bridges-common/tree/bridges-v2)._
    
    ## Explanation
    
    Please read
    [bridges/modules/xcm-bridge-hub/src/lib.rs](https://github.com/paritytech/polkadot-sdk/blob/149b0ac2
    
    /bridges/modules/xcm-bridge-hub/src/lib.rs#L17-L136)
    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](https://github.com/paritytech/polkadot-sdk/pull/4427#issuecomment-2126625043)
    - [x] TODO: there's only one impl of `EnsureOrigin<Success = Location>`
    
    ## TODO - not blocking review
    
    **benchmarking:**
    - [x] 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
    https://github.com/paritytech/polkadot-sdk/issues/5550
    
    **testing:**
    - [ ] add xcm-emulator tests for Rococo/Penpal to Westend/Penpal with
    full opening channel and sending/receiving `xcm::Transact`
    
    **migrations:**
    - [x] add migrations for BridgeHubRococo/Westend
    https://github.com/paritytech/parity-bridges-common/issues/2794 (to be
    reusable for P/K bridge)
      - [x] check also storage migration, if needed for pallets
      - [ ] migration for XCM type (optional)
      - [x] 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 -
    https://github.com/paritytech/polkadot-sdk/issues/5551
      - to be reusable for polkadot-fellows
    - return `report_bridge_status` was remove, so we need to `XcmpQueue`
    alternative?
    
    ---------
    
    Signed-off-by: default avatarBranislav Kontur <bkontur@gmail.com>
    Co-authored-by: default avatarSvyatoslav Nikolsky <svyatonik@gmail.com>
    Co-authored-by: command-bot <>
    Co-authored-by: default avatarFrancisco Aguirre <franciscoaguirreperez@gmail.com>
    Unverified
    22100999
Code owners
Assign users and groups as approvers for specific file changes. Learn more.