Open HRMP channels between Equilibrium and Acala

TL;DR

We propose to open HRMP communication between Equilibrium and Acala.

Summary

We propose to open a bi-directional channel between Equlibrium and Acala. This will allow the following:

  1. Supply ACA as collateral and borrow assets such as WBTC, WETH, BNB, USDT, USDC, DAI, DOT against it with collateralization requirements as low as 120%
  2. Supply ACA as insurance / lending liquidity, contribute to the system solvency, earn interest payable by borrowers, absorb liquidated liquidity and earn 5% rewards (penalty) on liquidated amounts.
  3. Add ACA to Market Maker pools, achieve 200K USD target both in ACA and EQD (you can mint EQD agains ACA) and we will launch a new trading pair ACA / EQD on Equilibrium DEX!

Proposal

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

Technical details:

The procedure for opening the channels is as follows:

  1. Acala propose to request to open Acala to Equilibrium HRMP channel;
  2. Wait until proposal on step 1 get approved & enacted;
  3. Equilibrium propose to accept the request and request to open Equilibrium to Acala HRMP channel(Batch call);
  4. Wait until proposal on step 3 get approved & enacted;
  5. Acala propose to accept Equilibrium to Acala HRMP channel;
  6. Wait until proposals on step 5 are approved & enacted;
  7. Wait for another session on Polkadot for the change to be effective;
  8. Equilibrium proposes to register Acala’s assets (ACA, aUSD, LDOT) via [Equilibrium Governance];
  9. Acala proposes to register Equilibrium’s assets (EQ, EQD) via [Acala Governance];
  10. Wait until both proposals on step 9 & 10 are approved & enacted;
  11. XCM based crosschain 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 is 0x3c00d0070000e803000000900100
  • For step 3:
    The first call is hrmp.hrmpAcceptOpenChannel(sender: 2011) , second call is hrmp.hrmpInitOpenChannel(recipient: 2011, proposedMaxCapacity: 1000, proposedMaxMessageSize: 102400) , so the final batch call hex-encoded is 0x1a00083c01db0700003c00db070000e803000000900100
  • For step 5: hrmp.hrmpAcceptOpenChannel(sender: 2000) , which hex-encoded is 0x3c01d0070000

The proposedMaxCapacity and proposedMaxMessageSize are set to the values of Polkadot’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 Equilibrium side we will use polkadotXcm pallet to send xcm message to the relaychain, by executing the following extrinsic from the parachain. Acala should make an open request call and an accept request call with its ormlXcm pallet.

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

1 Like