Exercício - Implantar na rede de teste Ropsten

Concluído

Agora temos um contrato inteligente. Implantámo-lo com sucesso na nossa rede de desenvolvimento. Em seguida, vamos nos concentrar na implantação na rede de teste Ropsten.

Visão geral do exercício

Para este tutorial, implantaremos no Ropsten usando MetaMask com éter de teste. O processo de implantação requer a configuração de uma conta 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 no testnet.

Configuração do exercício

Para configurar o exercício, você:

  1. Instale e configure o MetaMask.
  2. Obtenha éter de teste.
  3. Instale o HDWallet-Provider e o fs.
  4. Instale o Infura e ligue os pontos finais à rede de teste Ropsten.

Configurar o MetaMask

Se ainda não o fez, instale e configure o MetaMask. Em seguida, inicie sessão na sua conta no browser.

Adicionar éter à rede de teste MetaMask Ropsten

Use sua conta MetaMask para se conectar à rede de teste Ropsten. Comece por obter éter de teste da torneira de teste Ropsten:

  1. Abra o MetaMask.

  2. Conecte-se a Ropsten.

  3. Copie o endereço da sua conta.

    Screenshot showing the MetaMask browser extension where you can copy the account address.

  4. Abra uma janela ou separador do navegador e vá para a torneira Ropsten.

  5. Para solicitar ether, digite o endereço da sua conta testnet e selecione Enviar-me teste Ether.

    Screenshot showing how to request test ether on the Ropsten faucet.

  6. No MetaMask, verifique se agora você tem ether em sua conta.

    Screenshot showing the MetaMask browser extension. The account lists the ether quantity.

Instalar HDWallet-Provider e fs

Em seguida, você precisará do HDWallet-Provider. Este provedor Web3 habilitado para carteira cria seu endereço de rede secreto mnemônico e de conexão. Você também precisará de fs para ler a partir do seu sistema de arquivos.

Para instalar ambas as ferramentas, retorne ao projeto todolist no Visual Studio Code. Abra o painel de terminal e execute os seguintes comandos:

  1. npm init
  2. npm install fs
  3. npm install @truffle/hdwallet-provider

Aguarde até que as instalações de fs e HDWallet-Provider terminem. Poderá ver vários avisos. Desde que esses avisos não sejam erros, você pode ignorá-los.

O pacote de desenvolvimento Infura fornece acesso instantâneo e escalável à API para as redes Ethereum. Infura é um cluster de nó Ethereum hospedado que dá aos usuários a capacidade de executar um aplicativo em uma rede pública. Use o Infura para implantar e interagir com redes públicas.

Para definir uma conta, aceda ao website da Infura e siga estes passos:

  1. Configure uma conta e confirme o seu endereço de e-mail.
  2. Selecione Ethereum>Criar novo projeto. Nomeie o projeto TodoList.
  3. Em Chaves, altere o ponto de extremidade para Ropsten.

Sua exibição deve ser semelhante ao seguinte projeto de teste:

Screenshot showing the process of creating an Infura project.

Conecte-se ao Ropsten

Retorne à pasta do projeto todolist no Visual Studio Code.

  1. No arquivo de configuração Truffle, ./truffle-config.js, remova o comentário das linhas de hdwallet-provider, , fsinfuraKeye mnemonic:

     const HDWalletProvider = require('@truffle/hdwallet-provider');
     const infuraKey = "fj4jll3k.....";
    
     const fs = require('fs');
     const mnemonic = fs.readFileSync(".secret").toString().trim();
    
  2. Aceda à sua conta Infura para obter o infuraKey valor. No Infura, é chamado de ID do projeto. É visível no ponto de extremidade Ropsten:

    Screenshot showing the Ropsten endpoint to copy.

  3. Ao lado de ID do projeto, selecione o ícone da área de transferência para copiar o ID. Volte para ./truffle-config.js para colar no infuraKey valor.

    A imagem a seguir mostra um exemplo do que colar. Sua chave será diferente da que você vê aqui:

    const infuraKey = "f6bfe21890a84b9fa27def74bafb0b1b";
    
  4. Crie um arquivo chamado .secret. Copie seu mnemônico para o novo arquivo.

    Para obter o seu mnemonic, no MetaMask, vá para Configurações>de Segurança & Privacidade. Selecione Revelar frase semente. Introduza a sua palavra-passe MetaMask para verificar a sua identidade. Em seguida, selecione Copiar para a área de transferência.

    Importante

    Não compartilhe seu mnemônico com ninguém, ou eles poderiam acessar sua conta. Se você usa o Git, certifique-se de incluir .secret no arquivo .gitignore .

    Screenshot showing how to reveal a seed phrase in MetaMask.

  5. Use o código a seguir para ler a frase seed do arquivo .secret e para cortar todos os espaços em branco:

    const mnemonic = fs.readFileSync(".secret").toString().trim();
    
  6. Defina a rede descomentando as configurações de rede Ropsten em truffle-config.js. Certifique-se de que sua configuração se parece com 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 em Ropsten

Para implantar no Ropsten, execute o seguinte comando no 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 seu contrato foi implantado.

Verificar no MetaMask

Verifique MetaMask para verificar se o ether foi usado para implantar o contrato.

Screenshot showing the MetaMask balance after deployment to Ropsten.

Verificar no Ropsten Etherscan

Em Ropsten Etherscan, insira o endereço do contrato. Em seguida, inspecione o seu contrato.

Screenshot showing the contract deployed in Etherscan.

Você também pode verificar sua implantação abrindo uma nova janela de terminal dentro do Visual Studio Code. Você interage com seu contrato usando o console Truffle como faz no blockchain de desenvolvimento Ganache.