Open HRMP Channel Between Karura and Mangata X

We propose to open HRMP communication between Karura and Mangata X. This will require a few actions from the governance bodies of both chains.


We propose to open a bi-directional channel between Karura and Mangata X. The two primary use cases will be:

  1. Transfer aUSD to Mangata X, so that it adds a stable option to Mangata X.
  2. Transfer Karura’s assets, to Mangata X so they can be traded with protection against front-running and MEV.
  3. Mangata’s MGX token can be transferred to Karura to open new DEX pairs and integrate with Karura’s suite of DeFi products.


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

Technical details

The procedure for opening the channels is as follows:

  1. Mangata X initializes a proposal to open Mangata X to Karura HRMP channel via Mangata X Governance.
  2. Wait until the proposal on step 1 gets approved & enacted.
  3. Karura proposes to accept the Mangata X to Karura HRMP channel and open a Karura to Mangata X HRMP channel via Karura Governance Batch call.
  4. Wait until the proposal on step 3 gets approved & enacted.
  5. Mangata X proposes to accept the Karura to Mangata X HRMP channel via Mangata X Governance.
  6. Wait until the proposal on step 6 gets approved & enacted.
  7. Wait for another session on Kusama for the change to be effective.
  8. Mangata X proposes to register Karura’s assets via Mangata X Governance.
  9. Karura proposes to register Mangata X’s MGX via Karura 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 sent with XCM messages to they can be executed on the relay chain, are:

  • For step 1: hrmp.hrmpInitOpenChannel(recipient: 2000, proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400) , which hex-encoded is 0x3c00d0070000e803000000900100
  • For step 3: The first call is hrmp.hrmpAcceptOpenChannel(sender: 2110) , second call is hrmp.hrmpInitOpenChannel(recipient: 2110, proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400) , so the final batch call hex-encoded is 0x1802083c013e0800003c003e080000e803000000900100
  • For step 5: hrmp.hrmpAcceptOpenChannel(sender: 2000) , which hex-encoded 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 with the parachain’s sovereign account as the origin. To achieve this, on the Mangata X side we will use polkadot-xcm pallet to send an XCM message to the relay chain, by executing the following extrinsic from the parachain. Karura should make an open request call and an accept request call with its orml-xcm pallet.

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.


aUSD is gonna be everywhere !! Let’s build it !

1 Like