Neste tutorial, você aprenderá a configurar um ambiente de desenvolvimento para Solidity usando Hardhat.
Fonte: Hardhat
O espaço de desenvolvimento Blockchain está explodindo. Tem havido uma enorme demanda por desenvolvedores para criar aplicações e infraestruturas baseadas em Web3. No entanto, o problema aqui é um conjunto impressionante de bibliotecas, ferramentas e frameworks disponíveis, o que pode ser confuso para iniciantes que entram no setor.
Você tem que acreditar em mim aqui. Eu sei como você se sente se estiver apenas começando.
Recentemente adicionei o Solidity ao meu stack, mas não achei a ideia de um IDE online defendido pela maioria dos tutoriais para iniciantes em Solidity uma boa opção para mim. (A maioria dos tutoriais usava Remix IDE online.)
Consequentemente, o foco neste IDE online tornou muito difícil para iniciantes encontrar um bom conteúdo de configuração em IDE alternativo. No entanto, criei este guia para ajudá-lo a dar o primeiro passo no desenvolvimento de contratos inteligentes. Então, vamos começar configurando seu ambiente de desenvolvimento.
Pré-requisito: baixe o VS Code e instale npm & node.JS em sua máquina.
Instale o Hardhat em Sua Máquina
Para construir e implantar contratos inteligentes Solidity no IDE do VS Code, pode ser necessário usar um ambiente de desenvolvimento de software Ethereum, como Hardhat ou Truffle. Mas para o propósito deste tutorial, brincaremos apenas com o Hardhat.
Aqui estão as etapas para instalar e executar o Hardhat em sua máquina.
Passo 1
Abra um novo terminal em seu VS Code e verifique a disponibilidade de npm e Node.Js em sua máquina. Execute os seguintes comandos:
//Isso exibirá a versão do Node.js instalada em sua máquina.//
node --version
//verifique a versão do npm com o seguinte comando//
npm -v
Passo 2
Instale a estrutura Hardhat usando o seguinte comando:
npm install --save-dev hardhat
Isso pode levar alguns minutos para ser concluído, dependendo da velocidade da sua máquina.
Passo 3
Execute npx hardhat para criar um projeto de exemplo.
Após a conclusão da instalação, faça o seguinte:
— Execute npx hardhat
no seu terminal.
— Selecione a opção “Create a Sample Project” (criar um projeto de exemplo).
— Selecione a raiz do seu projeto preferido e digite “y” para adicionar um .gitignore.
— Digite “y” para instalar as dependências deste projeto de exemplo com npm (@nomicfoundation/hardhat-toolbox).
Pronto para Implantar e Construir Contratos Inteligentes
Agora você está totalmente pronto para começar a construir e implantar seu contrato inteligente. Mas espere um minuto. Você precisa se familiarizar com alguns dos comandos do framework do Hardhat.
Para acessar esses comandos, insira npx hardhat
para ver os comandos disponíveis.
Por exemplo, se inserirmos o comando npx hardhat compile
em nosso terminal, nossa pasta de contratos será imediatamente compilada em uma nova pasta chamada artifacts (artefatos).
Tarefa Hardhat — Estudo de caso de contas
No Hardhat, todas as ações que você executa são encapsuladas como tarefas. As funcionalidades predefinidas que acompanham o Hardhat são consideradas tarefas integradas. Curiosamente, essas tarefas integradas são construídas usando as APIs que estão à sua disposição. Isso significa que as ferramentas e os recursos disponíveis também podem ser aproveitados para definir e implementar tarefas personalizadas que atendam às suas necessidades.
No contexto do Hardhat, uma “tarefa” é essencialmente uma função JavaScript assíncrona que obtém acesso ao Hardhat Runtime Environment e vem com metadados adicionais que automatizam determinados processos para você. Especificamente, ele lida com tarefas como análise, validação de argumentos e fornecimento de mensagens úteis.
Para este tutorial, daremos uma olhada em Contas em Tarefas. Isso nos permitirá acessar suas contas disponíveis para implantar seus contatos.
Encontre a API de configuração deste Hardhat, que está disponível no escopo global de hardhat.config.js
. O arquivo se parece com isto →
require("@nomicfoundation/hardhat-toolbox");
task("balance", "Prints an account's balance").setAction(async () => {});
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.23",
};
No entanto, precisaremos reconfigurar isso para obter acesso aos metadados da conta. Substitua o código acima por este e entre npx hardhat accounts
no seu terminal para imprimir a lista de contas disponíveis.
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
task("accounts", "Prints the list of accounts", async () => {
const accounts = await ethers.getSigners();
for (const account of accounts) {
console.log(account.address);
}
});
module.exports = {
solidity: "0.8.19",
};
— →→→ —
A Rede Hardhat
Hardhat está equipado com um nó de rede Ethereum adaptado para fins de desenvolvimento. Esse recurso permite que você implante seus contratos inteligentes, execute testes e solucione problemas de seu código – tudo dentro do ambiente de sua máquina local.
Assim, você pode executar ou testar seu contrato inteligente em uma blockchain falsa integrada à rede Hardhat.
Por exemplo, você pode executar um nó de rede Hardhat usando npx hardhat node
para ativar o nó com o qual pode trabalhar. Ao executar este comando, você obterá uma lista dos endereços anexados, suas chaves privadas e seu saldo.
Configuração da Bifurcação da Rede Hardhat
Bifurcar a rede Hardhat refere-se ao processo de criação de uma cópia ou réplica da rede principal Ethereum (ou outra rede) dentro do ambiente de desenvolvimento Hardhat. Isso permite que os desenvolvedores interajam com um instantâneo da blockchain em uma altura de bloco específica, fornecendo um ambiente simulado para teste e desenvolvimento.
Ao bifurcar a rede, os desenvolvedores podem trabalhar com dados realistas e testar seus contratos inteligentes em relação a estados históricos ou predefinidos. Isto é particularmente útil para cenários em que é necessária interação com dados do mundo real ou estados de contrato específicos durante o desenvolvimento e os testes.
Para fazer isso,
1. Atualize seu hardhat.config.js
para incluir configurações de rede.
networks: {
hardhat: {
forking: {
url: `https://eth-mainnet.alchemyapi.io/v2/${alchemyApiKey}`,
},
},
},
No nosso caso, usaremos a variável de ambiente do Alchemy.
Para bifurcar a rede Hardhat o Alchemy,
2. Defina a variável de ambiente ALCHEMY_URL para o URL da API Alchemy apropriado.
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
task("accounts", "Prints the list of accounts", async () => {
const accounts = await ethers.getSigners();
for (const account of accounts) {
console.log(account.address);
}
});
module.exports = {
solidity: "0.8.19",
networks: {
hardhat: {
forking: {
url: `https://eth-mainnet.alchemyapi.io/v2/${alchemyApiKey}`,
},
},
},
}
3. Execute o Hardhat com o sinalizador --network hardhat
:
npx hardhat --network hardhat
Tudo pronto.
Agora que seu ambiente Hardhat está configurado, você pode começar a desenvolver seus contratos inteligentes Ethereum. Abra os arquivos .sol
na pasta “contracts” do seu projeto Hardhat. É aqui que você definirá a lógica e a funcionalidade de seus aplicativos descentralizados.
Compilando Seus Contratos Inteligentes
Depois de escrever seus contratos inteligentes, é hora de compilá-los usando o framework da Hardhat. Abra seu terminal ou prompt de comando e execute o seguinte comando:
npx hardhat compile
Este comando instrui o Hardhat a compilar seus contratos Solidity, gerando o bytecode correspondente que será implantado na blockchain Ethereum.
Assim que o processo de compilação for concluído, o Hardhat irá gerar uma pasta artifacts contendo o bytecode compilado, ABI (Application Binary Interface ou interface binária da aplicação) e outros artefatos. Esses artefatos são essenciais para implantar e interagir com seus contratos inteligentes.
Não hesite em entrar em contato se encontrar alguma dificuldade ou tiver dúvidas sobre o processo. Deixe uma mensagem na seção de comentários e terei prazer em ajudá-lo, seja relacionado à escrita de código do Solidity ou à navegação em erros de compilação.
Este artigo foi escrito por Mayowa Olatynji, e traduzido por Isabela Curado Nehme. Seu original pode ser lido aqui.
Latest comments (0)