Skip to content

U. Build with Acala

Bette edited this page Sep 9, 2020 · 5 revisions

Build with Acala

There are 3 ways to build with Acala

  1. Deploy runtime modules (aka pallets) - this enables the highest level of customizability, and access to Acala’s chain logic for more sophisticated integration. It does not have the fail-safe sandbox environment that smart contract enjoys, hence it requires security audits and requires governance permission. It suits better for infrastructure and common-good protocols.
  2. Deploy Solidity or Ink! smart contracts - for those who want to migrate part or all of their existing Solidity smart contracts to Polkadot without re-writing all the code, this can be a good starting point. As an example, some teams would use a bridge to cross their tokens from Etheruem to Polkadot, then deploy some of their smart contracts on Acala for cheaper, faster transactions and better user experience.
  3. Build a chain and connect with Acala using XCMP - if you are launching a parachain, we can now test cross-chain token transfers on Polkadot testnet Rococo. There're cross-chain token implementations and token standards available to help you get started.

Treat Acala as the DeFi landing pad on Polkadot, and your technical-know-how builder-buddy, contact us to discuss deployment options on Polkadot.

1. Deploy Ecosystem Modules

Guide

Below is a rough guideline for building with Acala at the runtime level using sub-module:

  1. Project team sets up a sub-module repo
  2. Project team builds & tests locally
  3. Project team submits repo for review
  4. Acala pulls in the sub-module, deploys on testnet via runtime upgrade
  5. Security audit
  6. Governance

1. Project Structure You will be creating a sub-module in your own repo, when it's ready we can pull it into Acala's repo. This allows you to have independence of your codebase and license etc.

// on Acala side, folder structure as follows
- Acala repo
  - ecosystem-modules
    - your-sub-module

Example sub-module. You shall create a repo in your organization to be used as sub-module.

Your sub-module will be pulled into the ecosystem-modules under Acala repo.

2. Local Testing Fork Acala repo, pull your sub-module in, and test locally.

3. Submit code for review Acala will provide technical support during your development including architectural and technical guidance, as well as sharing available libraries and standards.

Once you have completed development, please submit your repo and our tech team will help review and provide feedback before pull into our repo.

4. Testnet Deployment Acala Mandala Test Network is a live no-value testnet to verify new chain logics and functionalities. Your module once passed the review, can be deployed on Mandala via runtime upgrade.

5. Audit Module level integration in essence changes chain logic to the Acala Network, while it offers project team highest level of flexibility and customization, it also puts responsibility on Acala to ensure the code is secure and fit for purpose, and does no pose unintended consequences to the overall chain operation. Therefore we will perform security audit on modules added to Acala, and we will be in touch when that happens.

6. Governance Deploying on Karura canary network (connecting to Kusama) and mainnet (connecting to Polkadot) will be decided by respective governance.

2. Deploy smart contracts

Deploy Solidity smart contracts

For those who want to migrate part or all of their existing Solidity smart contracts to Polkadot without re-writing all the code, this can be a good starting point. As an example, some teams would use a bridge to cross their tokens from Etheruem to Polkadot, then deploy some of their smart contracts on Acala for faster and cheaper transactions, and better user experience.

Acala EVM roadmap:

  • (Done) EVM pallet installed with Frontier Substrate-Ethereum compatibility layer: Solidity contracts can be directly deployed and run
  • (WIP) Deploy more complex (real-life) Solidity contracts, test tooling & SDK supports including Metamasks, web3.js etc
  • (WIP) Implement pallet (runtime module) integration to improve compatibility, be compatible with ERC20 and other token standards.

Deploy ink! smart contracts

this is Substrate’s native, Rust-based Wasm smart contract, read more on how it compares to EVM here.

  • ink! rust language is being developed
  • tooling and SDKs are also under development

3. Connect via XCMP

Acala has launched a testnet parachain on Rococo (Polkadot's Relay chain testnet), read more here

To enable cross-chain token transfer with Acala, you can implement & contribute to xtoken. Laminar, Plasm, Darwinia and others are in the process of integration.

It is also essential to agree upon a cross-chain multi-token standard, which will greatly enhance usability and adoption. Read the standard proposal and contribute here