Mangata X Proposal Open/Accept HRMP channel and Register Asset xcMGX

Mangata X XCM Disclosures


This batched proposal is to Accept/Open an HRMP channel with Mangata X and Register Asset xcMGX


We propose to open a bi-directional channel between Moonriver and Mangata X. Initially, the main use case will be to transfer MOVR and Mangata X between the two chains, but it can be further expanded to other use cases. The proposal also includes the MGX asset registration as xcMGX, with the following details:

  • Multilocation: { parents: 1, interior: { X2: [ {Parachain: 2110}, {GeneralKey: 0x00000000 } ] }}
  • Decimals: 18
  • Name: Mangata X Native Token
  • Symbol: xcMGX

xcMGX will have the following asset ID and XC-20 address:

  • Asset ID: 337673893687553151312436182236099273778
  • XC-20 address: 0xfffffffffe09a0571a1429289ce14057bb486432

On-Chain Proposal Reference

On-Chain Proposal #16 with the associated hash: 0x797868f6b9841a5412d3e18f6853791dca1b36db699ca0c96d78cdc1c9956f4a

(Moonriver)[Polkadot/Substrate Portal]

Technical details:

The procedure for opening the channels is as follows:

  • Mangata X: already proposed to open an HRMP channel to Moonriver
  • Moonriver: democracy batched proposal:
    • Accept HRMP channel from Mangata X to Moonriver
    • Open Moonriver to Mangata X HRMP channel
    • Register MGX asset as an XC-20
  • Mangata X: democracy proposal to accept Moonriver to Mangata X HRMP channel

Once the HRMP channels are ready, XCM based cross-chain transfer will be possible. The extrinsics that need to be executed on the relay chain, are:

  • To accept the HRMP channel to Moonriver: hrmp.hrmpAcceptOpenChannel(sender: [2110]) , which hex-encoded call data is 0x3c013e080000
  • To open the HRMP channel from Moonriver: hrmp.hrmpInitOpenChannel(recipient: 2110, proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400), which its hex-encoded call data is 0x3c003e080000e803000000900100

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

The asset will be registered with the metadata described in the summary. The setAssetUnitsPerSecond was calculated using the value for MGX value on 2023-03-20, targeting a XCM transaction cost of 0.02$.

If you are interested, the hex-encoded call data for this proposal in Moonriver is:


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


I’ve added the Proposal Hash and Number to the original post :slight_smile: