Implantar no Celo com Truffle
Como implantar um contrato inteligente para Celo testnet, mainnet ou uma rede local usando Truffle.
Introdução ao Truffle
Truffle é um ambiente de desenvolvimento de classe mundial, framework de testes e pipeline para blockchains usando a Ethereum Virtual Machine (EVM). Criando um projeto Truffle e editando algumas configurações você pode facilmente implantar seu projeto no Celo.
Para saber mais sobre os recursos disponíveis para você como desenvolvedor de contratos inteligentes com o Truffle, consulte a documentação do Truffle.
Pré-requisitos
Para fazer deploy no Celo usando o Truffle, você deve ter Celo configurado no seu ambiente local. Se você prefere fazer deploy sem um ambiente local, você pode implantar usando Remix ou Replit.
Se você for novo no Truffle, complete as instruções de instalação do truffle Celo e complete seu Tutorial de início rápido para ficar mais familiarizado com esta ferramenta.
Configurando o projeto
Configurar Pasta do Projeto
Abra sua janela do terminal, crie um diretório do projeto e navegue até esse diretório.
mkdir myDapp && cd myDap
Install hdwallet-provider
A partir do diretório do projeto truffle da raiz, instale truffle/hdwallet-provedor. Isso permite que você assine transações para endereços derivados de um mnemônico. Você usará isso para se conectar ao Celo em seu arquivo de configuração truffle.
npm install @truffle/hdwallet-provider --save
Inicializar o Truffle
A inicialização da truffle cria a base para o seu projeto truffle.
truffle init
Abrir Projeto
Abra seu projeto no Visual Studio ou no seu IDE preferido.
code .
Você pode iniciar o VS Code pela linha de comando instalando-o no seu caminho do shell.
Escrever Código do Projeto
Criar Contrato Inteligente
Crie um arquivo chamado HelloCelo.sol no diretório Contratos e preencha-o com o código abaixo.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;
contract HelloWorld {
string public greet = "Hello Celo!";
}
Se você quiser criar um contrato inteligente diferente ou aprender mais sobre Solidity (o idioma para desenvolver contratos inteligentes) você pode ver a Solidity docs e Solidity por exemplo.
Arquivo de Migrações
Crie um arquivo chamado 2_deploy_contracts.js na pasta ./migrations/ e preencha-o com o código abaixo.
var HelloCelo = artifacts.require("HelloCelo");
module.exports = function (deployer) {
deployer.deploy(HelloCelo);
};
Se você criou um contrato inteligente diferente, atualize o nome da variável, o arquivo necessário e a implantação de acordo com o novo contrato.
Mnemonic .env
Se você ainda não tem um mnemônico ou não tem certeza de como criar um, consulte Configurar uma Carteira de Desenvolvimento para obter mais detalhes. Quando estiver pronto, crie um arquivo .env no seu diretório raiz e preencha-o com a sua carteira de desenvolvimento mnemônica (exemplo abaixo).
MNEMONIC="turtle cash neutral drift brisk young swallow raw payment drill mail wear penalty vibrant entire adjust near chapter mistake size angry planet slam demand"
Este mnemônico é usado por HDWalletProvider no arquivo truffle.config para verificar a conta que fornece fundos durante a implantação de contratos. (Ver linhas 21 & 69.)
Criar arquivo .gitignore
É importante ocultar seu mnemônico e outros arquivos importantes enquanto desenvolve aplicativos de Celo. Ao usar o Git ou o GitHub, você pode preencher um arquivo de .gitignore com o código abaixo para garantir que você não publique esses arquivos acidentalmente.
Crie um arquivo .gitignore em seu diretório raiz e preencha-o com o código abaixo.
# dependencies
/node_modules
# Mac users
.DS_Store
#hidden files
.env
Veja ignorando arquivos para obter mais informações.
Configurar definições de implantação
O padrão de truffle.config.js arquivo contém as ligações necessárias para implantar nas redes Ethereum, importa HDWalletProvidere se conecta ao mnemônico em seu . env arquivo. Para fazer deploy de uma rede Celo você precisa atualizar este arquivo de configuração para apontar para as diferentes redes do Celo e adicionar alguns detalhes específicos para as melhores práticas do Celo.
Você pode ver um repositório de exemplo aqui.
Atualizar o arquivo truffle-config.js
Abra truffle-config.js em um editor de texto e substitua seu conteúdo por este código de configuração Celo. Este código é semelhante às configurações do Truffle com algumas atualizações de configuração necessárias para implantar uma rede Celo.
Conectar a uma Rede de Desenvolvimento
Usar o Celo Ganache CLI cria contas de teste no localhost na porta 7545. A configuração de rede privada conecta ao seu localhost nesta porta e dá acesso às suas contas no ganache-cli.
local: {
host: "127.0.0.1",
port: 7545,
network_id: "*"
}
Se você optar por Configurar uma Carteira de Desenvolvimento, sua blockchain também será executada em uma rede privada de desenvolvimento no host local. Essa mesma configuração pode ser usada para conectar à cadeia de desenvolvimento local.
Conectar à Testnet usando Forno
Usar o Forno permite que você se conecte ao blockchain de teste Celo sem executar um nó local. A configuração testnet usa Forno para conectá-lo ao Celo Testnet (Alfajores) usando HDWalletProvider e o mnemônico armazenado no seu arquivo .env.
testnet: {
provider: function() {
return new HDWalletProvider(process.env.MNEMONIC, "https://alfajores-forno.celo-testnet.org")
},
network_id: 44787,
gas: 20000000
}
Conectar-se ao Mainnet usando Forno
Usar o Forno também permite que você se conecte ao blockchain principal do Celo sem executar um nó local. A configuração mainnet usa Forno para conectá-lo ao Celo Mainnet usando HDWalletProvider e o mnemônico armazenado no seu arquivo .env.
mainnet: {
provider: function() {
return new HDWalletProvider(process.env.MNEMONIC, "https://forno.celo.org")
},
network_id: 42220,
gas: 4000000
}
Forno é um serviço de nó hospedado pelo cLabs para interagir com a rede Celo. Isso permite que você se conecte ao Celo Blockchain sem precisar executar seu próprio nó.
Implantar contrato inteligente
Compilar e migrar
Compilar contrato
Compilar o código Solidity em bytecode da Ethereum antes de implantar o contrato. O seguinte comando truffle compilará qualquer contrato novo ou atualizado Solidity (.sol) encontrado em ./contracts.
truffle compile
Aprenda mais sobre a compilação de contratos com Truffle aqui.
Migrar Contrato
Migrações são arquivos JavaScript que ajudam você a implantar contratos para a rede Ethereum. Para executar suas migrações, execute o seguinte:
truffle migrate
Saiba mais sobre as migrações do Truffle aqui.
Implantar o contrato
Implante na sua rede de Celo escolhida, executando um dos seguintes comandos.
truffle deploy --network alfajores
truffle deploy --network celo
truffle deploy --network local
Implantar com --reset
Use o sinalizador ---reset para republicar contratos com um novo endereço de contrato, caso você não tenha feito nenhuma alteração de código.
truffle deploy --network NETWORK --reset
truffle migrate --network NETWORK --reset
Salvar endereços do contrato para referência futura. Se você perde-lo, prossiga para bloquear o explorador para rever suas transações de carteira para a criação de contrato e sua resposta. Truffle salva informações de implantação, como hashes de transações e endereços de contratos, nos arquivos JSON em ./build/contracts/
.
Ver implantação do contrato
Copie seu endereço de contrato **** do terminal e navegue até o explorador de bloco para procurar por seu contrato implementado. Alterne entre redes para encontrar seu contrato usando a lista suspensa pela barra de pesquisa.
Ver Contrato Implantado
Navegue até o BlockScout e selecione a rede do contrato já estabelecido.
- Cole seu endereço do contrato da janela do terminal ** e procure no BlockExplorer**.
Saiba mais sobre explorar a rede de Celo e detalhes do contrato inteligente no BlockScout aqui..