Compile Seu Contrato
Execute o seguinte comando no diretório flipper para compilar seu smart contract:
Este comando irá gerar o seguinte para o seu contrato: um binário Wasm, um arquivo de metadados (que contém a ABI do contrato) e um arquivo .contract
que agrupa ambos. Este arquivo .contract
pode ser usado para implantar seu contrato em uma rede. Se tudo correr bem, você verá uma pasta chamada "target
" que contém esses arquivos:
Vamos dar uma olhada na estrutura do flipper.json
:
Este arquivo descreve todas as interfaces que podem ser usadas para interagir com o seu contrato:
types
fornece os tipos de dados personalizados usados em todo o restante do JSON.storage
define todos os itens de armazenamento gerenciados pelo seu contrato e como acessá-los.spec
descreve informações sobre as funções chamáveis, como constructors (construtores) e mensagens que um usuário pode chamar para interagir com o contrato. Também contém informações úteis, como os events (eventos) emitidos pelo contrato ou qualquer docs (documentação) relacionada.
Se você observar atentamente os construtores e mensagens, também notará um seletor
que contém um hash de 4 bytes do nome da função e é usado para encaminhar as chamadas do contrato para as funções corretas.
Na próxima seção, iniciaremos um nó de Contratos Inteligentes da Lunes e configuraremos a interface de Contratos para interagir com ele.
Debug vs. Release Build
Por padrão, o cargo-contract
compila o contrato no modo de depuração. Isso significa que o contrato, por exemplo, imprimirá declarações como:
para o console do nó, se a depuração estiver ativada no nó (instruções aqui). Para oferecer suporte a funcionalidades como essa, a compilação de depuração de um contrato inclui alguma lógica pesada.
Para contratos que devem ser executados em produção, você sempre deve compilar o contrato com --release
:
Isso garantirá que nada desnecessário seja compilado no blob Wasm, tornando seu contrato mais rápido e mais barato de implantar e executar.
INFORMAÇÃO
Com esse comportamento, o cargo-contract
espelha o comportamento do cargo
para programas Rust: a flag --release
deve ser passada explicitamente para o cargo build
.
Last updated
Was this helpful?