Open HRMP channel between Moonriver and Karura


Similar to other HRPM channel proposals, we propose to open an HRMP channel between Moonriver and Karura.


We propose to open a bi-directional channel between Karura and Moonriver. Initially, the main use case will be to transfer MOVR and KAR between the two chains, but it can be further expanded to other use cases.


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

Technical details:

The procedure for opening the channels is as follows:

  1. Karura: democracy proposal to open Karura to Moonriver HRMP channel
  2. Moonriver: democracy proposal to open Moonriver to Karura HRMP channel
  3. Wait until the proposals on step 1 & 2 get approved & enacted
  4. Karura: democracy proposal to accept Moonriver to Karura HRMP channel
  5. Moonriver: democracy proposal to accept Karura to Moonriver HRMP channel
  6. Wait until proposals on step 3 & 4 get approved & enacted
  7. Kusama: wait one session after each acceptance for each channel to be opened
  8. XCM based cross-chain transfer will be possible at this stage

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

  • For step 1: hrmp.hrmpInitOpenChannel(recipient: 2023, proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400) , which its hex-encoded call data is 0x3c00e7070000e803000000900100
  • For step 2: hrmp.hrmpInitOpenChannel(recipient: 2000, proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400), which its hex-encoded call data is 0x3c00d0070000e803000000900100
  • For step 4: hrmp.hrmpAcceptOpenChannel(sender: 2023) , which hex-encoded call data is 0x3c01e7070000
  • For step 5: hrmp.hrmpAcceptOpenChannel(sender: 2000), which its hex-encoded call data is 0x3c01d0070000

The proposedMaxCapacity and proposedMaxMessageSize are set to the values of Kusama’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

If you are interested, the hex-encoded call data for both the hrmpAcceptOpenChannel and hrmpInitOpenChannel for Moonriver are:

Accept Channel: 0x67000101000210000400000000070010a5d4e81300000000070010a5d4e8010700f2052a01060002286bee183c01d00700000d0100040001010070617261e7070000000000000000000000000000000000000000000000000000

Open Channel:

As a prerequisite, the parachain’s sovereign account must contain at least 10 KSM to be locked as collateral (5 for each channel direction), plus some KSM to pay for XCM execution fees.


MOVR and KAR were first opened, and will be extended to other use cases later. ARIS has registered assets in Karura, which means technically ARIS on Karura can also migrate to Moonriver.

it’s time. important and exciting step for both.

It’s already open on MOVR side, be careful some people may already use it.
But the MOVR token is still not listed on Karura side.

Weird collunication from Moonriver and a bad situation for users using the functionality right now without any official announcements.