Exercício – Implantar na rede de teste Ropsten
Agora, temos um contrato inteligente. Nós o implantamos com êxito em nossa rede de desenvolvimento. Em seguida, nos concentraremos na implantação na rede de teste Ropsten.
Visão geral do exercício
Para este tutorial, vamos implantar no Ropsten usando o MetaMask com ether de teste. O processo de implantação requer a configuração de uma conta do Infura para se conectar e implantar na testnet Ropsten. Depois de implantarmos, podemos usar o Ropsten Testnet Explorer para inspecionar os blocos que foram implantados na testnet.
Configuração do exercício
Para configurar o exercício, você vai:
- Instalar e configurar o MetaMask.
- Obter ether de teste.
- Instalar o HDWallet-Provider e o fs.
- Instalar o Infura e vincular os pontos de extremidade à rede de teste Ropsten.
Configurar o MetaMask
Se ainda não tiver feito isso, instale e configure o MetaMask. Em seguida, entre em sua conta no navegador.
Adicionar ether à rede de teste Ropsten do MetaMask
Use sua conta do MetaMask para se conectar à rede de teste Ropsten. Comece obtendo ether de teste da Torneira de teste do Ropsten:
Abra o MetaMask.
Conecte-se ao Ropsten.
Copie o endereço de sua conta.
Abra uma janela ou guia do navegador e vá para a torneira do Ropsten.
Para solicitar ether, insira o endereço de sua conta da testnet e selecione Send me test Ether.
No MetaMask, verifique se você tem ether em sua conta.
Instalar o HDWallet-Provider e o fs
Em seguida, você precisará do HDWallet-Provider. Esse provedor Web3 habilitado para carteiras cria seu endereço de rede de conexão e mnemônico secreto. Você também precisará do fs para ler do sistema de arquivos.
Para instalar as duas ferramentas, retorne ao projeto todolist no Visual Studio Code. Abra o painel do terminal e execute os seguintes comandos:
npm init
npm install fs
npm install @truffle/hdwallet-provider
Aguarde a conclusão das instalações do fs e do HDWallet-Provider. Você pode ver vários avisos. Desde que não sejam erros, você pode ignorá-los.
Configurar o Infura e vincular os pontos de extremidade à rede de teste Ropsten
O conjunto de desenvolvimento do Infura fornece acesso à API escalonável e instantâneo às redes Ethereum. O Infura é um cluster de nó do Ethereum hospedado que oferece aos usuários a capacidade de executar um aplicativo em uma rede pública. Use o Infura para implantar em redes públicas e interagir com elas.
Para definir uma conta, acesse o site do Infura e siga estas etapas:
- Configure uma conta e confirme seu endereço de email.
- Selecione Ethereum>Criar projeto. Nomeie o projeto TodoList.
- Em Chaves, altere o ponto de extremidade para Ropsten.
Sua exibição deverá ser semelhante ao seguinte projeto de teste:
Conectar-se ao Ropsten
Retorne à pasta do projeto todolist no Visual Studio Code.
No arquivo de configuração do Truffle, ./truffle-config.js, remova a marca de comentário das linhas
hdwallet-provider
,infuraKey
,fs
emnemonic
:const HDWalletProvider = require('@truffle/hdwallet-provider'); const infuraKey = "fj4jll3k....."; const fs = require('fs'); const mnemonic = fs.readFileSync(".secret").toString().trim();
Vá para sua conta do Infura para obter o valor de
infuraKey
. No Infura, ele é chamado de ID do Projeto. Ele fica visível no ponto de extremidade do Ropsten:Ao lado da ID do Projeto, selecione o ícone da área de transferência para copiar a ID. Volte para ./truffle-config.js para colar o valor de
infuraKey
.A imagem a seguir mostra um exemplo de chave para colar. Embora o exemplo de chave possa ser usado como um espaço reservado, sua chave será diferente da que você vê aqui e você deverá usar seu infuraKey.
const infuraKey = "f6bfe21890a84b9fa27def74bafb0b1b";
Crie um arquivo chamado .secret. Copie o mnemônico para o novo arquivo.
Para obter seu mnemônico, no MetaMask, acesse Configurações>Segurança & Privacidade. Selecione Revelar Frase Semente. Insira sua senha do MetaMask para verificar sua identidade. Em seguida, selecione Copiar para a área de transferência.
Importante
Não compartilhe seu mnemônico com ninguém, ou a pessoa poderá acessar sua conta. Se você usar o Git, inclua .secret no arquivo .gitignore.
Use o seguinte código para ler a frase semente do arquivo .secret e para cortar todos os espaços em branco:
const mnemonic = fs.readFileSync(".secret").toString().trim();
Defina a rede removendo os das marcas de comentário das configurações de rede do Ropsten em truffle-config.js. Verifique se sua configuração é semelhante a este código:
ropsten: { provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/${infuraKey}`), network_id: 3, // Ropsten's id gas: 5500000, // Ropsten has a lower block limit than mainnet confirmations: 2, // # of confs to wait between deployments. (default: 0) timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50) skipDryRun: true // Skip dry run before migrations? (default: false for public nets ) },
Implantar no Ropsten
Para implantar no Ropsten, execute o seguinte comando do terminal do Visual Studio Code:
truffle migrate --network ropsten
Se a conexão for bem-sucedida, você verá a seguinte saída:
Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.
Warning: Both truffle-config.js and truffle.js were found. Using truffle-config.js.
Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.
Starting migrations...
======================
> Network name: 'ropsten'
> Network id: 3
> Block gas limit: 8000029 (0x7a121d)
1_initial_migration.js
======================
Deploying 'Migrations'
----------------------
> transaction hash: 0x2f456acc5f842ddf0eb151742e47dd6e8ec5e48d73b1f150e2908cb56e0bf174
> Blocks: 1 Seconds: 29
> contract address: 0x789101d0B0Ffa4f8f87E67AF8ff8F84bD519752D
> block number: 9398701
> block timestamp: 1609784599
> account: 0x896587D82C895F30433cade401068C2791A6936F
> balance: 0.99616138
> gas used: 191931 (0x2edbb)
> gas price: 20 gwei
> value sent: 0 ETH
> total cost: 0.00383862 ETH
Pausing for 2 confirmations...
------------------------------
> confirmation number: 1 (block: 9398702)
> confirmation number: 2 (block: 9398703)
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.00383862 ETH
2_deploy_contracts.js
=====================
Deploying 'TodoList'
--------------------
> transaction hash: 0xad8066308e9cc8503400c86a43674d856a71e02696e2c21b3e55f566df5afc36
> Blocks: 0 Seconds: 8
> contract address: 0x48112BE8d0E6e7bA892aFa2d4Ab58e9c43dd37De
> block number: 9398706
> block timestamp: 1609784870
> account: 0x896587D82C895F30433cade401068C2791A6936F
> balance: 0.98513544
> gas used: 508959 (0x7c41f)
> gas price: 20 gwei
> value sent: 0 ETH
> total cost: 0.01017918 ETH
Pausing for 2 confirmations...
------------------------------
> confirmation number: 1 (block: 9398707)
> confirmation number: 2 (block: 9398708)
> Saving migration to chain.
> Saving artifacts
-------------------------------------
> Total cost: 0.01017918 ETH
Summary
=======
> Total deployments: 2
> Final cost: 0.0140178 ETH
Verificar a implantação do contrato
Siga as etapas nas próximas seções para verificar se o contrato foi implantado.
Verificar no MetaMask
Verifique o MetaMask para verificar se o ether foi usado para implantar o contrato.
Verificar no Ropsten Etherscan
No Ropsten Etherscan, insira o endereço do contrato. Em seguida, inspecione o contrato.
Você também pode verificar sua implantação abrindo uma janela do terminal dentro do Visual Studio Code. Você interage com o contrato usando o console do Truffle, como faria no blockchain de desenvolvimento do Ganache.