🇵🇹
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
  • Using the Contracts UI Usando a Contracts UI​
  • Utilizando cargo-contract​

Was this helpful?

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

Implante seu contrato

Last updated 1 year ago

Was this helpful?

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.

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

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

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.

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
Flipper Instantiate Contract 01

2. Instanciar um Contrato na Blockchain

Flipper Instantiate Contract 02
Flipper Instantiate Contract 03
Flipper Instantiate Success

Utilizando cargo-contract

🖥️
📑
✨
⬆️
​
​
​