Exercício - Implantar na rede de teste Ropsten
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ê:
- Instale e configure o MetaMask.
- Obtenha éter de teste.
- Instale o HDWallet-Provider e o fs.
- 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:
Abra o MetaMask.
Conecte-se a Ropsten.
Copie o endereço da sua conta.
Abra uma janela ou separador do navegador e vá para a torneira Ropsten.
Para solicitar ether, digite o endereço da sua conta testnet e selecione Enviar-me teste Ether.
No MetaMask, verifique se agora você tem ether em sua conta.
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:
npm init
npm install fs
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.
Configurar o Infura e ligar os pontos finais à rede de teste Ropsten
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:
- Configure uma conta e confirme o seu endereço de e-mail.
- Selecione Ethereum>Criar novo projeto. Nomeie o projeto TodoList.
- Em Chaves, altere o ponto de extremidade para Ropsten.
Sua exibição deve ser semelhante ao seguinte projeto de teste:
Conecte-se ao Ropsten
Retorne à pasta do projeto todolist no Visual Studio Code.
No arquivo de configuração Truffle, ./truffle-config.js, remova o comentário das linhas de
hdwallet-provider
, ,fs
infuraKey
emnemonic
:const HDWalletProvider = require('@truffle/hdwallet-provider'); const infuraKey = "fj4jll3k....."; const fs = require('fs'); const mnemonic = fs.readFileSync(".secret").toString().trim();
Aceda à sua conta Infura para obter o
infuraKey
valor. No Infura, é chamado de ID do projeto. É visível no ponto de extremidade Ropsten: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";
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 .
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();
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.
Verificar no Ropsten Etherscan
Em Ropsten Etherscan, insira o endereço do contrato. Em seguida, inspecione o seu contrato.
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.