🇵🇹
DAO Lunes Labs - PT
  • 👋Seja Bem-vindo a DAO Lunes Labs
  • Overview
    • 🚪Introdução
    • 🚀Manifesto DAO Lunes Labs
    • 🍕Tokenomics
    • 👑Proposta de Valor
    • 🧑‍🚀Comunidade e Participação
    • 🗺️Roadmap
    • 💼Compromisso com Ética e Responsabilidade
    • 👾Programa de Bug Bounty: Lunes Security Initiative (LSI)
  • Developers
    • 💽Para Nodes
      • 🥾Instalar Node
        • 🏗️Rust toolchain
        • 🐧Linux
    • 🖥️Para Desenvolvedores
      • 📑Smart Contract Ink! 4.x
        • ✨Configuração
          • 📐Criando um projeto com ink!
          • 🖥️Compile Seu Contrato
          • ⛓️Executar um nó Lunes
          • ⬆️Implante seu contrato
          • 🔛Chame Seu Contrato
          • 🛠️Solução de problemas
        • 🪄Fundamentos
          • 👾Modelo de Contrato
          • 👨‍🚀Armazenando Valores
          • 🔭Lendo Valores do Armazenamento
          • 🦸‍♂️Alterando os Valores de Armazenamento
          • 🎡Eventos
          • 👨‍🔧Seletores
          • 🪶Definições de Trait
          • 🗣️Chamadas entre Contratos (Cross-Contract Calls)
          • 🦸Contratos Atualizáveis
          • 🤺Funções do Ambiente
          • 🏟️Tipos de Ambiente de Cadeia
          • 💠Metadados
          • 🧪Testes de Contrato
          • 🕵️‍♂️Depuração de Contratos
          • 🔬Verificação de Contrato
        • 🎙️Macros e Atributos
          • 📇#[ink::contract]
          • 👽#[ink(anonymous)]
          • 👷#[ink(constructor)]
          • 📏#[ink(default)]
          • 🎢#[ink(event)]
          • 🛩️#[ink(impl)]
          • 📧#[ink(message)]
          • 👨‍💼#[ink(namespace = "…")]
          • 💸#[ink(payable)]
          • ⚡#[ink(selector = S:u32)]
          • 💽#[ink(storage)]
          • 💣#[ink(topic)]
          • ⛓️#[ink::chain_extension]
        • 💽Storege & Data Structires
          • Working with Mapping
          • Storage Layout
          • Custom Data Structures
          • Metadata Format
        • 👾Frontend Development
          • Getting Started
          • Connect Wallet
          • Hooks
            • All Hooks
            • Contracts
              • useCall
              • useCallSubscription
              • useContract
              • useDryRun
              • useEventSubscription
              • useEvents
              • useTx
              • useTxPaymentInfo
            • Wallets
              • useWallet
              • useAllWallets
              • useInstalledWallets
              • useUninstalledWallets
            • API
              • useApi
              • useBalance
              • useBlockHeader
          • Configuration
          • useink / core
            • Contracts
              • Call
              • decodeCallResult
              • decodeError
              • getRegistryError
              • toAbiMessage
          • useink / chains
            • Getting Started
            • Chain Configurations
            • ChainId
          • useink / notifications
            • Getting Started
            • Configuration
            • useNotifications
            • toNotificationLevel
          • useink / utils
            • Getting Started
            • Pick Helpers
            • tx Helpers
            • Types
        • 💡Examples
          • 📔Smart Contracts
          • 📱Dapps
        • 🛠️Tools
          • 🖌️OpenBrush
      • 📒Smart Contract - EVM
        • Create ERC-20 Ink Token!
      • 💰Desenvolvendo uma Wallet Lunes
        • 👾Transações de Tokens PSP22
    • 🎨Para Designers
      • 🖌️Brand Lunes
Powered by GitBook
On this page

Was this helpful?

  1. Developers
  2. Para Desenvolvedores
  3. Smart Contract Ink! 4.x
  4. Configuração

Compile Seu Contrato

Execute o seguinte comando no diretório flipper para compilar seu smart contract:

cargo contract build

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:

target
  └─ ink
    └─ flipper.contract
    └─ flipper.wasm
    └─ flipper.json

Vamos dar uma olhada na estrutura do flipper.json:

{
  "source": {...},
  "contract": {...},
  "spec": {
    "constructors": [...],
    "docs": [],
    "events": [],
    "messages": [...],
  },
  "storage": {...},
  "types": [...],
  "version": "4"
}

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.

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:

ink::env::debug_println!("magic number: {}", value);

Para contratos que devem ser executados em produção, você sempre deve compilar o contrato com --release:

cargo contract build --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 1 year ago

Was this helpful?

Na próxima seção, iniciaremos um nó de e configuraremos a para interagir com ele.

Debug vs. Release Build

para o console do nó, se a depuração estiver ativada no nó (). Para oferecer suporte a funcionalidades como essa, a compilação de depuração de um contrato inclui alguma lógica pesada.

🖥️
📑
✨
🖥️
Contratos Inteligentes da Lunes
interface de Contratos
​
instruções aqui