Desenvolvimento de Appchain
# Desenvolvimento de Appchain
Neste tutorial, nós iremos:
- Configurar o ambiente de desenvolvimento;
- Implementar o tempo de execução da appchain;
- Iniciar a testnet local;
# Configuração do ambiente de desenvolvimento
É sugerido iniciar um nó Appchain baseado no Barnacle (opens new window) que é um template desenvolvido pela equipe da Octopus Network. Originário do Substrate node template (opens new window), o Barnacle é um modelo de nó Appchain de trabalho mínimo para desenvolvedores iniciarem rapidamente seu projeto Appchain da Octopus. O frontend de uma Appchain pode ser desenvolvido com base no Front-end template (opens new window).
Nota: O desenvolvimento do Substrate é mais fácil em sistemas operacionais baseados em Unix como MacOS ou Linux. E para usuários Windows, é altamente recomendável usar o Subsistema Linux do Windows (WSL) e seguir as instruções para Ubuntu/Debian.
Para a maioria dos usuários, pode-se executar os seguintes comandos para instalar o ambiente.
curl https://getsubstrate.io/ -sSf | bash -s - --fast
Para mais informações, por favor, consulte o Installation Guide (opens new window) no Substrate Developer Center.
# Barnacle
O Template Barnacle do nó Appchain é baseado no template de nó Substrate e integra uma série de octopus-pallets (opens new window) que foi implementada pelo time da Octopus Network, incluindo:
- Appchain, pallet-octopus-appchain (opens new window)
- Metadados de uma appchain, incluindo o identificador da appchain, o endpoint da cadeia principal RPC, etc.
- Os validadores da appchain observarão a cadeia principal e submeterão os eventos observados usando OCW para consenso.
- LPoS, pallet-octopus-lpos (opens new window)
- Uma implementação da LPoS da Octopus Network.
- Este palete depende do pallet-octopus-appchain.
- Comum, pallet-octopus-support (opens new window)
- Algumas características e tipos comuns.
- Mensagens Cross-chain, pallet-octopus-upward-messages (opens new window)
- Este palete gerencia as mensagens de cross-chain enviadas da appchain para a cadeia principal.
git clone --depth 1 https://github.com/octopus-network/barnacle.git
cd barnacle
cargo build
Com base no Barnacle, o time da appchain somente precisa focar no desenvolvimento dos paletes de função comercial e, então, eles integrariam facilmente a appchain na Octopus Network.
# Template Front-end
# Instale o Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
nvm install node
# Instale o Yarn
npm install --global yarn
# Clone o template do frontend do github
git clone -b v3.0.0+monthly-2021-08 --depth 1 https://github.com/substrate-developer-hub/substrate-front-end-template
# Instale as dependências
cd substrate-front-end-template
yarn install
Nota
Se tiver uma nova versão do
substrate-front-end-template, é recomendado que substituav3.0.0+monthly-2021-08por ela com o comando acima.
# Implementar o tempo de execução da appchain
Etapas para implementar paletes de uma aplicação específica:
- Acrescente um
pallet, e implemente uma lógica específica de aplicação empallets/<pallet-name>/src/lib.rs; - Acrescente o
palletaoruntime/Cargo.toml,runtime/src/lib.rs; - Acrescente o
runtimeaonode/Cargo.toml, instale-o no nó.
Nota: Neste momento, por favor, defina o valor de MILLISECS_PER_BLOCK com 6000.
Para mais informações, por favor, consulte o Add Pallet to Runtime Guide (opens new window) no Substrate Developer Center.
# Configuração da Appchain
A configuração da appchain está principalmente no arquivo ChainSpec. Precisa configurar:
- Palete Appchain
- Contrato Anchor;
- Coleção do Validador;
- O número de tokens pré-minerados na rede NEAR;
O exemplo Barnacle é como se segue:
"octopusAppchain": {
"anchorContract": "barnacle.registry.test_oct.testnet",
"validators": [
[
"5G6xVxyaS8PZargUL27pSEbhLQbRQJ2PBvrvXVpyjHzivQxs",
10000000000000000000000
],
[
"5Dqg8gjTeM4it3mCaX1bdQmTT3GXgv7oSuZAfFUwJaTKuJfz",
10000000000000000000000
],
[
"5Gj5yzSKtqkMM3j7FhRSWuybkwwms9KBPsAhyeobgmLD4r1g",
10000000000000000000000
],
[
"5F42cCzboJhzfuVazARY6gFVpjwWMwAg1aG3pWF2aS76uu4Q",
10000000000000000000000
]
],
"preminedAmount": 500000000000000000000000000,
"assetIdByName": [
[
"usdc.testnet",
0
]
]
},
- Palete LPoS
- O ciclo histórico das recompensas da LPoS;
- Recompensas de cada Era;
O exemplo Barnacle é como se segue:
"octopusLpos": {
"historyDepth": 84,
"eraPayout": 20000000000000000000000
},
# Começar a Testnet local
Execute o seguinte comando para compilar e iniciar o nó da blockchain local:
cargo build
# Execute um nó temporário no modo desenvolvimento
./target/debug/appchain-barnacle --dev --tmp
Se você quiser executar um front-end local para interagir com os nós locais, você pode consultar a Run Local Front End (opens new window).
# Publicar a edição da Appchain
Uma vez que foi finalizado o desenvolvimento da Appchain e a integração das Paletes da Octopus, o time da Appchain precisa publicar uma edição da Appchain.
Nota
- O arquivo Chain Spec poderia ser colocado sob uma pasta de código fonte. Ex: resources (opens new window)
- Para a integração, por favor, consulte o Barnacle (opens new window)