⬆️Implante seu contrato

Agora que geramos o arquivo binário Wasm a partir do nosso código-fonte e nos conectamos a um nó local, queremos implantar esse contrato em nossa blockchain Lunes.

A implantação de contratos inteligentes na Lunes é um pouco diferente do que em blockchains tradicionais de contratos inteligentes.

Enquanto em outras plataformas é implantado um novo bloco de código-fonte de contrato inteligente toda vez que você envia um contrato, o Substrate opta por otimizar esse comportamento. Por exemplo, o token ERC20 padrão foi implantado milhares de vezes no Ethereum, às vezes apenas com alterações na configuração inicial (por meio da função construtora Solidity). Cada uma dessas instâncias ocupa espaço na blockchain equivalente ao tamanho do código-fonte do contrato, mesmo que nenhum código tenha sido realmente alterado.

No Lunes, o processo de implantação de contrato é dividido em duas etapas:

  1. Inserir o código do seu contrato na blockchain.

  2. Criando uma instância do seu contrato.

Com esse padrão, o código do contrato, como o padrão ERC20, pode ser colocado no blockchain apenas uma vez, mas instanciado várias vezes. Não é necessário fazer o upload contínuo do mesmo código-fonte e desperdiçar espaço no blockchain.

Using the Contracts UI Usando a Contracts UI

1. Enviar Código do Contrato

Aqui iremos enviar o código do contrato e instanciar uma cópia do contrato na blockchain (geralmente é por isso que enviamos o código do contrato em primeiro lugar):

  • Clique no botão Add New Contract na barra lateral.

  • Clique no botão Upload New Contract Code na página Add New Contract.

  • Escolha uma Instantiation account (por exemplo, ALICE).

  • Dê ao contrato um Name descritivo (por exemplo, Flipper Contract).

  • Arraste o arquivo flipper.contract que contém o pacote Wasm e metadados para a área de arrastar e soltar. Você verá a interface do usuário analisar os metadados e habilitar o botão que o levará para a próxima etapa.

  • Clique no botão Next.

Flipper Instantiate Contract 01

2. Instanciar um Contrato na Blockchain

Os contratos inteligentes existem como uma extensão do sistema de contas na blockchain. Assim, a criação de uma instância desse contrato criará um novo AccountId, que armazenará qualquer saldo gerenciado pelo contrato inteligente e nos permitirá interagir com o contrato.

Agora uma tela exibe as informações que representam nosso contrato inteligente. Vamos instanciar uma cópia do contrato inteligente:

  • Aceite as opções padrão para o Deployment Constructor do contrato.

  • Aceite as opções padrão para o Max Gas Allowed que é de 200000.

  • Clique emNext

Flipper Instantiate Contract 02

A transação está agora em fila, revise seus dados e clique em Upload and Instantiate ou volte e modifique suas entradas.

Flipper Instantiate Contract 03

Quando você clicar em Upload and Instantiate, você deverá ver a extrínseca instantiateWithCode sendo processada e uma série de eventos aparecendo, incluindo a criação de uma nova conta (system.NewAccount) e a instanciação do contrato (contracts.Instantiated). Você será redirecionado para uma nova página, onde poderá interagir com a instância do contrato recém-criado.

Flipper Instantiate Success

Utilizando cargo-contract

Os contratos também podem ser implantados através da linha de comando. Com o cargo-contract, é apenas uma simples sequência de comandos:

cargo contract build
cargo contract upload --suri //Alice
cargo contract instantiate --suri //Alice --args true

Last updated

Was this helpful?