TL;DR
We propose to open HRMP communication between Karura and Shiden. This will require a few actions from the governance bodies of both chains.
Summary
We propose to open a bi-directional channel between Karura and Shiden. The two primary use cases will be:
- To transfer Karura’s assets to Shiden so they can be privatized and transferred confidentially and anonymously.
- Shiden’s SDN token can be transferred to Karura to open new DEX pairs and integrate with Karura’s suite of DeFi products.
Proposal
There is no on-chain proposal yet; #TBD.
Technical details:
The procedure for opening the channels is as follows:
- Shiden initializes a proposal to open Shiden to the Karura HRMP channel via [Shiden root MultiSig].
- Wait until the proposal on step 1 gets approved & enacted.
- Karura proposes to accept the Shiden to Karura HRMP channel and open a Karura to Shiden HRMP channel via [Karura Governance Batch call].
- Wait until the proposal on step 3 gets approved & enacted.
- Shiden accepts the Karura to Shiden HRMP channel.
- Wait for another session on Kusama for the change to be effective.
- Shiden proposes to register Karura’s assets via [Shiden root MultiSig].
- Karura proposes to register Shiden’s asset via [Karura Governance].
- Wait until both proposals on steps 7 & 8 are approved & enacted.
- The XCM-based cross-chain transfer 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 is0x3c00d0070000e803000000900100
- For step 3: The first call is
hrmp.hrmpAcceptOpenChannel(sender: 2007)
, second call ishrmp.hrmpInitOpenChannel(recipient: 2007, proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400)
, so the final batch call hex-encoded is0x1800083c01d70700003c00d7070000e803000000900100
- For step 5:
hrmp.hrmpAcceptOpenChannel(sender: 2000)
, which hex-encoded is0x3c01d0070000
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 origin. To achieve this, on the Shiden side we will use polkadot-xcm pallet to send xcm message to the relaychain, 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.