Proposal: Open HRMP channel between Bifrost and Moonbeam

TL:DR

Similar to other HRMP channel proposals, we propose to open an HRMP channel between Bifrost and Moonbeam.

Summary

We propose to open a bi-directional channel between Bifrost and Moonbeam. Initially, the main use case will be to transfer GLMR and BNC between the two chains and prepare for vGLMR testing, but it can be further expanded to other use cases.

Proposal

There is no on-chain proposal yet; #TBD.

Technical details:

The procedure for opening the channels is as follows:

  1. Bifrost: democracy proposal to open Bifrost to Moonbeam HRMP channel
  2. Moonbeam: democracy proposal to open Moonbeam to Bifrost HRMP channel
  3. Wait until the proposals on step 1 & 2 get approved & enacted
  4. Moonbeam: democracy proposal to accept Bifrost to Moonbeam HRMP channel
  5. Bifrost: democracy proposal to accept Moonbeam to Bifrost HRMP channel
  6. Wait until proposals on step 3 & 4 get approved & enacted
  7. Moonbeam: wait one session after each acceptance for each channel to be opened
  8. Bifrost proposes to register Moonbeam’s GLMR via Bifrost Governance.
  9. Moonbeam proposes to register Bifrost’s BNC via Moonbeam Governance.
  10. Wait until both proposals on steps 9 & 10 are approved & enacted.
  11. XCM-based cross-chain transfers will be possible at this stage.

The extrinsics that need to be executed on the relay chain , are:

  • For step 1: hrmp.hrmpInitOpenChannel(recipient: 2030, proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400) , which its hex-encoded call data is 0x3c00ee070000e803000000900100
  • For step 2: hrmp.hrmpInitOpenChannel(recipient: 2004, proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400) , which its hex-encoded call data is 0x3c00d4070000e803000000900100
  • For step 4: hrmp.hrmpAcceptOpenChannel(sender: 2030) , which hex-encoded call data is 0x3c01ee070000
  • For step 5: hrmp.hrmpAcceptOpenChannel(sender: 2004) , which its hex-encoded call data is 0x3c01d4070000

The proposedMaxCapacity and proposedMaxMessageSize are set to the values of Polkadot’s configuration.activeConfig.hrmpChannelMaxCapacity and configuration.activeConfig.hrmpChannelMaxMessageSize values, respectively.

These extrinsics need to be called from the parachain’s sovereign account as origin, via a democracy proposal. The proposal will use polkadotXcm pallet to send XCM message to the Relay Chain with the following items:

  • Withdraw asset: take funds out of the Sovereign Account of the origin parachain (in the relay chain) to a holding state
  • Buy execution: buys execution time from the relay chain, to execute the XCM message
  • Transact: provides the call data to be executed
  • Deposit asset (optional): refunds the leftover funds after the execution. If this is not provided, no refunds will be carried out
1 Like

Moooooooore channels yep !!

1 Like