Currently, cross-chain message passing and parachains are only available on Polkadot's testnet Rococo. Acala's testnet (Mandala) is now launched on Rococo, and is testing cross-chain fungible token transfers, and other functionalities.
Please contact us in our Discord tech chat to be #ComposableWith Acala!
Polkadot Cross-Consensus Message Format (XCM) is a generic message format that doesn't specify use cases like fungible tokens. Therefore, we need to provide an implementation of the required use case e.g. cross-chain transfer, for parachains to be interoperable with the same context, namely, send/receive fungible assets between parachains, and between relay chain and parachains. We want to keep the same interface for Relay Chain assets (like DOT or KSM), and for native parachains assets (like ACA for Acala), and abstract from implementation details making it easy to integrate.
The XCM Fungible Asset Implementation Guide has laid out cross-chain fungible asset design considerations and discussions, as well as a reference implementation orml-xtokens that Acala and many others are currently adopted and testing.
xtokens codebase is under development by Acala, please reach out to us in Discord tech chat if you need support.
Follow this guide by @bertstachios to setup a local parachain testnet environment.
Follow this guide by @bertstachios to set up a local parachain testnet environment.
To receive tokens issued on Acala's chain such as aUSD, ACA, renBTC, LDOT etc, you need to include them in your currency type; and also, to implement currency id conversion.
Check example here for currency id conversion in Acala runtime.
There is an onboarding procedure to introduce new tokens on Acala to avoid spam tokens. If it's for testing purpose, you could always skip this step, and
orml-unkown-tokens will handle all the received foreign tokens.
xtokens module provides an interface for cross-chain assets transfer, using XCM messages.
You can check the example of
xtokens module integration for more details.
Note: the reference implementation is by no means definitive, rather it is the starting point for the parachain community to experiment and iterate. Please provide feedback to
xtokensor the implementation guide.
Your chain shall already be connected to Rococo as a parachain. While XCMP (Cross-chain Message Passing) is still being implemented - that is sending cross-chain messages directly to each other without passing through the Relay chain, a stop-gap protocol HRMP (Horizontal Relay-routed Message Passing) is in place.
HRMP has the same interface and functionality as XCMP but is much more demanding on resources since it stores all messages in the Relay Chain storage. When XCMP has been implemented, HRMP is planned to be deprecated and phased out in favor of it.
The two parachains will need to open HRMP channel on either side to send and receive cross-chain messages. Instructions here to open HRMP Channel.
All chains on Polkadot/Kusama shall be composable with each other, from exchanging value to exchanging and altering states. For example, chains can not only transfer values trustlessly, they can also call pallet/smart contract functions of each other e.g. minting PolkaBTC on Interlay chain, transferring PolkaBTC to Acala, and collateralizing it for aUSD all in one transaction.
Acala will be composable with the following (potential) parachains. If you have or are implementing
xtokens, please PR to this Repo to add yourself:
Don't hesitate to contact us if you'd like to try it out, need support, and/or want to run some cross-chain testing together with us!