[Proposal: 47] Peaq Proposal Open/Accept HRMP channel and Register Asset xcPEAQ

Title: peaq Proposal Open/Accept HRMP channel and Register Asset xcPEAQ

(XCM Disclosure: peaq)


This batched proposal is to Accept/Open an HRMP channel with peaq and Register Asset(s) xcPEAQ


We propose to open a bi-directional channel between Moonbeam and peaq. Initially, the main use case will be to transfer GLMR (optional) and peaq between the two chains, but it can be further expanded to other use cases. The proposal also includes the peaq asset registration as xcPEAQ, with the following details:

  • Multilocation: { “parents”: 1, “interior”: { “X1”: { “Parachain”: 3338 }}}
  • Decimals: 18
  • Name: peaq
  • Symbol: xcPEAQ

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

  • Asset ID: 314077021455772878282433861213184736939
  • XC-20 address: 0xffffffffec4908b74688a01374f789b48e9a3eab

On-Chain Proposal Reference

On-Chain Proposal #[__] with the associated hash: _____________

[Note: you can get the Proposal Number and Associated Hash from Polkadot.js Apps either in Moonbeam/(Moonriver)[Polkadot/Substrate Portal]]

Technical details:

The procedure for opening the channels is as follows:

  • peaq: already proposed to open an HRMP channel to Moonbeam
  • Moonbeam: democracy batched proposal:
    • Accept HRMP channel from peaq to Moonbeam
    • Open Moonbeam to peaqHRMP channel
    • Register peaq asset as an XC-20 (optional)
  • peaq: democracy proposal to accept Moonbeam to peaq 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 Moonbeam: hrmp.hrmpAcceptOpenChannel(sender: [3338]) , which hex-encoded call data is 0x6b09010a0d0000010301000100e40b5402000000000000000000000002286bee020004000100
  • To open the HRMP channel from Moonbeam: hrmp.hrmpInitOpenChannel(recipient: [3338], proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400), which its hex-encoded call data is 0x6b09000a0d0000e803000000900100010301000100e40b5402000000000000000000000002286bee020004000100

[Note: you can get the hex encoded call data for both calls in the relay chain extrinsic page for both Polkadot/Kusama. You’ll need to build the call there.]

The *proposedMaxCapacity *and proposedMaxMessageSize are set to the values of Polkadot 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 (104166666666666666666) was calculated using the value for peaq $0.24 on 21.03.2024 , targeting a XCM transaction cost of $0.02.

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


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


Link to the on-chain proposal:

@kamran_67877, could you please add the relevant info to the proposal on the Moonbeam dApp?

1 Like