Contrato inteligente "Hello World" para iniciantes
Se você é novo no desenvolvimento de blockchain e não sabe por onde começar, ou se apenas deseja entender como implantar ou interagir com contratos inteligentes, este guia é para você. Vamos criar e implantar um contrato inteligente simples na rede de teste Sepolia usando uma carteira virtual MetaMask (opens in a new tab), Solidity (opens in a new tab), Hardhat (opens in a new tab) e Alchemy (opens in a new tab) (não se preocupe se você ainda não entendeu o que isso significa, nós explicaremos).
Na parte 2 (opens in a new tab) deste tutorial, vamos ver como podemos interagir com nosso contrato inteligente depois de implantado aqui, e na parte 3 (opens in a new tab) vamos cobrir como publicá-lo no Etherscan.
Se você tiver alguma dúvida, sinta-se à vontade para entrar em contato no Discord da Alchemy (opens in a new tab)!
Etapa 1: Conectar-se à rede Ethereum
Existem muitas maneiras de fazer solicitações para a cadeia Ethereum. Para simplificar, usaremos uma conta gratuita no Alchemy, uma plataforma de desenvolvimento de blockchain e API que nos permite comunicar com a cadeia Ethereum sem ter que executar nossos próprios nós. A plataforma também possui ferramentas de desenvolvedor para monitoramento e análise das quais tiraremos proveito neste tutorial para entender o que está acontecendo nos bastidores na implantação do nosso contrato inteligente. Se você ainda não tem uma conta da Alchemy, pode se inscrever gratuitamente aqui (opens in a new tab).
Etapa 2: Criar seu aplicativo (e chave de API)
Assim que criar uma conta na Alchemy, você pode gerar uma chave de API criando um "app". Isso nos permitirá fazer solicitações à rede de teste Sepolia. Se você não está familiarizado com redes de teste, confira esta página.
- Navegue até a página "Create new app" em seu Painel de Controle da Alchemy, selecionando "Select an app" na barra de navegação e clicando em "Create new app"
- Dê um nome ao seu aplicativo, como “Hello World”, ofereça uma breve descrição e escolha um caso de uso, por exemplo, "Infra & Tooling." Em seguida, pesquise por "Ethereum" e selecione a rede.
- Clique em "Next" para prosseguir, depois em “Create app” e pronto! Seu aplicativo deve aparecer no menu suspenso da barra de navegação, com uma chave de API disponível para cópia.
Etapa 3: Criar uma conta Ethereum (endereço)
Precisamos de uma conta Ethereum para enviar e receber transações. Para este tutorial, usaremos uma carteira virtual no navegador, a MetaMask, para gerenciar o endereço da sua conta Ethereum. Mais sobre transações.
Você pode baixar o MetaMask e criar uma conta Ethereum gratuitamente aqui (opens in a new tab). Ao criar uma conta, ou se você já tiver uma, certifique-se de mudar para a rede de teste "Sepolia" usando o menu suspenso de rede (para que não estejamos lidando com dinheiro de verdade).
Se você não vir a Sepolia listada, vá ao menu, depois em Advanced e role para baixo para ativar a opção "Show test networks". No menu de seleção de rede, escolha a aba "Custom" para encontrar uma lista de redes de teste e selecione "Sepolia."
Etapa 4: Adicionar ether de um faucet
Para implantar nosso contrato inteligente na rede de teste, precisaremos de um pouco de ETH falso. Para obter Sepolia ETH, você pode ir para os detalhes da rede Sepolia para ver uma lista de vários faucets. Se um não funcionar, tente outro, pois eles podem, às vezes, ficar sem fundos. Pode levar algum tempo para receber seu ETH falso devido ao tráfego da rede. Você deverá ver o ETH em sua conta MetaMask logo em seguida!
Etapa 5: Verificar seu saldo
Para verificar se nosso saldo está lá, vamos fazer uma solicitação eth_getBalance usando a ferramenta composer da Alchemy (opens in a new tab). Ele mostrará a quantidade de ETH em nossa carteira. Depois de inserir o endereço da sua conta da MetaMask e clicar em "Send Request", você verá uma resposta como esta:
1{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }OBSERVAÇÃO: Este resultado está em wei, não em ETH. Lembre-se de que "Wei" é a menor unidade de ether. A conversão de wei para ETH é: 1 eth = 1018 wei. Então, se convertermos 0x2B5E3AF16B1880000 para decimal, teremos 5*10¹⁸, o que equivale a 5 ETH.
Ufa! Nosso dinheiro falso está todo lá .
Etapa 6: Inicializar nosso projeto
Primeiro, precisamos criar uma pasta para o nosso projeto. Navegue até sua linha de comando e digite:
1mkdir hello-world2cd hello-worldAgora que estamos dentro da pasta do nosso projeto, usaremos o npm init para inicializar o projeto. Se você ainda não tiver o npm instalado, siga estas instruções (opens in a new tab) (também precisaremos do Node.js, então baixe-o também!).
1npm initNão importa muito como você responde às perguntas da instalação, aqui está como fizemos para referência:
1package name: (hello-world)2version: (1.0.0)3description: hello world smart contract4entry point: (index.js)5test command:6git repository:7keywords:8author:9license: (ISC)10About to write to /Users/.../.../.../hello-world/package.json:1112{13 "name": "hello-world",14 "version": "1.0.0",15 "description": "hello world smart contract",16 "main": "index.js",17 "scripts": {18 "test": "echo \"Error: no test specified\" && exit 1"19 },20 "author": "",21 "license": "ISC"22}Exibir tudoAprove o package.json e estamos prontos!
Etapa 7: Baixar o Hardhat (opens in a new tab)
Hardhat é um ambiente de desenvolvimento para compilar, implementar, testar e depurar seu software de Ethereum. Ele ajuda os desenvolvedores na criação de contratos inteligentes e dapps localmente antes de implantar na cadeia real.
Dentro do nosso projeto hello-world, execute:
1npm install --save-dev hardhatConfira esta página para mais detalhes sobre as instruções de instalação (opens in a new tab).
Etapa 8: Criar projeto Hardhat
Dentro da nossa pasta de projeto, execute:
1npx hardhatVocê deve então ver uma mensagem de boas-vindas e a opção de selecionar o que quer fazer. Selecione "criar uma hardhat.config.js vazia":
1888 888 888 888 8882888 888 888 888 8883888 888 888 888 88848888888888 8888b. 888d888 .d88888 88888b. 8888b. 8888885888 888 "88b 888P" d88" 888 888 "88b "88b 8886888 888 .d888888 888 888 888 888 888 .d888888 8887888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.8888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888910👷 Welcome to Hardhat v2.0.11 👷?1112What do you want to do? …13Create a sample project14❯ Create an empty hardhat.config.js15QuitExibir tudoIsso gerará um arquivo hardhat.config.js para nós, que é onde especificaremos toda a configuração do nosso projeto (na etapa 13).
Etapa 9: Adicionar pastas do projeto
Para manter nosso projeto organizado, criaremos duas novas pastas. Navegue até o diretório raiz do seu projeto na sua linha de comando e digite:
1mkdir contracts2mkdir scriptscontracts/é onde manteremos nosso arquivo de código do contrato inteligente hello worldscripts/é onde manteremos os scripts para implantar e interagir com nosso contrato
Etapa 10: Escrever nosso contrato
Você pode estar se perguntando, quando diabos vamos escrever código?? Bem, aqui estamos, na etapa 10.
Abra o projeto hello-world em seu editor favorito (nós gostamos do VSCode (opens in a new tab)). Os contratos inteligentes são escritos em uma linguagem chamada Solidity, que é o que usaremos para escrever nosso contrato inteligente HelloWorld.sol.
- Navegue até a pasta “contracts” e crie um novo arquivo chamado HelloWorld.sol
- Abaixo está um exemplo de contrato inteligente Hello World da Ethereum Foundation que usaremos neste tutorial. Copie e cole o conteúdo abaixo em seu arquivo HelloWorld.sol e certifique-se de ler os comentários para entender o que este contrato faz:
1// Especifica a versão do Solidity, usando o versionamento semântico.2// Saiba mais: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma3pragma solidity ^0.7.0;45// Define um contrato chamado `HelloWorld`.6// Um contrato é uma coleção de funções e dados (seu estado). Uma vez implantado, um contrato reside em um endereço específico na blockchain Ethereum. Saiba mais: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html7contract HelloWorld {89 // Declara uma variável de estado `message` do tipo `string`.10 // As variáveis de estado são variáveis cujos valores são armazenados permanentemente no armazenamento do contrato. A palavra-chave `public` torna as variáveis acessíveis de fora de um contrato e cria uma função que outros contratos ou clientes podem chamar para acessar o valor.11 string public message;1213 // Semelhante a muitas linguagens orientadas a objetos baseadas em classes, um construtor é uma função especial que só é executada na criação do contrato.14 // Os construtores são usados para inicializar os dados do contrato. Saiba mais:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors15 constructor(string memory initMessage) {1617 // Aceita um argumento de string `initMessage` e define o valor na variável de armazenamento `message` do contrato).18 message = initMessage;19 }2021 // Uma função pública que aceita um argumento de string e atualiza a variável de armazenamento `message`.22 function update(string memory newMessage) public {23 message = newMessage;24 }25}Exibir tudoEste é um contrato inteligente super simples que armazena uma mensagem na criação e pode ser atualizado chamando a função update.
Etapa 11: Conectar o MetaMask e o Alchemy ao seu projeto
Nós criamos uma carteira MetaMask, uma conta da Alchemy e escrevemos nosso contrato inteligente. Agora é hora de conectar os três.
Toda transação enviada da sua carteira virtual requer uma assinatura, usando sua chave privada única. Para fornecer esta permissão a nosso programa, podemos armazenar nossa chave privada (e a chave Alchemy API) em um arquivo de ambiente.
Para saber mais sobre o envio de transações, confira este tutorial sobre o envio de transações usando web3.
Primeiro, instale o pacote dotenv na pasta do seu projeto:
1npm install dotenv --saveEm seguida, crie um arquivo .env no diretório raiz do nosso projeto e adicione sua chave privada do MetaMask e o URL da API HTTP da Alchemy a ele.
- Siga estas instruções (opens in a new tab) para exportar sua chave privada
- Veja abaixo para obter o URL da API HTTP da Alchemy
Copiar URL da API da Alchemy
Seu .env deve ficar assim:
1API_URL = "https://eth-sepolia.g.alchemy.com/v2/sua-chave-de-api"2PRIVATE_KEY = "sua-chave-privada-metamask"Para realmente conectar isso ao nosso código, faremos referência a essas variáveis em nosso arquivo hardhat.config.js na etapa 13.
.env! Por favor, certifique-se de nunca compartilhar ou expor seu arquivo .env com ninguém, pois você está comprometendo seus segredos ao fazer isso. Se você estiver usando controle de versão, adicione seu .env a um arquivo gitignore.Etapa 12: Instalar o Ethers.js
Ethers.js é uma biblioteca que facilita a interação e a realização de solicitações à Ethereum, envolvendo os métodos JSON-RPC padrão com métodos mais amigáveis ao usuário.
O Hardhat torna muito fácil a integração de Plugins (opens in a new tab) para ferramentas adicionais e funcionalidades estendidas. Aproveitaremos o plugin Ethers (opens in a new tab) para a implantação de contratos (Ethers.js (opens in a new tab) has some super clean contract deployment methods).
No diretório do seu projeto, digite:
1npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"Também vamos precisar do ethers em nosso hardhat.config.js na próxima etapa.
Etapa 13: Atualizar o hardhat.config.js
Adicionamos várias dependências e plugins até agora. Agora precisamos atualizar o hardhat.config.js para que nosso projeto saiba sobre todos eles.
Atualize seu hardhat.config.js para ficar assim:
1require('dotenv').config();23require("@nomiclabs/hardhat-ethers");4const { API_URL, PRIVATE_KEY } = process.env;56/**7* @type import('hardhat/config').HardhatUserConfig8*/9module.exports = {10 solidity: "0.7.3",11 defaultNetwork: "sepolia",12 networks: {13 hardhat: {},14 sepolia: {15 url: API_URL,16 accounts: [`0x${PRIVATE_KEY}`]17 }18 },19}Exibir tudoEtapa 14: Compilar nosso contrato
Para ter certeza de que tudo está funcionando, vamos compilar nosso contrato. A tarefa compile é uma das tarefas incorporadas do hardhat.
Na linha de comando, execute:
1npx hardhat compileVocê pode receber um aviso sobre SPDX license identifier not provided in source file, mas não precisa se preocupar com isso — esperamos que todo o resto pareça bom! Se não, você sempre pode enviar uma mensagem no Discord da Alchemy (opens in a new tab).
Etapa 15: Escrever nosso script de implantação
Agora que nosso contrato está escrito e nosso arquivo de configuração está pronto, é hora de escrever o script de implantação do contrato.
Navegue até a pasta scripts/ e crie um novo arquivo chamado deploy.js, adicionando o seguinte conteúdo a ele:
1async function main() {2 const HelloWorld = await ethers.getContractFactory("HelloWorld");34 // Inicia a implantação, retornando uma promessa que resolve para um objeto de contrato5 const hello_world = await HelloWorld.deploy("Hello World!");6 console.log("Contrato implantado no endereço:", hello_world.address);}78main()9 .then(() => process.exit(0))10 .catch(error => {11 console.error(error);12 process.exit(1);13 });Exibir tudoA Hardhat faz um trabalho incrível explicando o que cada uma dessas linhas de código faz em seu tutorial de Contratos (opens in a new tab), nós adotamos as explicações deles aqui.
1const HelloWorld = await ethers.getContractFactory("HelloWorld");Uma ContractFactory em ethers.js é uma abstração usada para implantar novos contratos inteligentes. Portanto, HelloWorld aqui é uma fábrica para instâncias do nosso contrato hello world. Ao usar o plugin hardhat-ethers, as instâncias ContractFactory e Contract são conectadas ao primeiro signatário por padrão.
1const hello_world = await HelloWorld.deploy();Chamar deploy() em uma ContractFactory iniciará a implantação e retornará uma Promise que resolve para um Contrato. Este é o objeto que tem um método para cada uma de nossas funções de contrato inteligente.
Etapa 16: Implantar nosso contrato
Finalmente estamos prontos para implantar o nosso contrato inteligente! Navegue até a linha de comando e execute:
1npx hardhat run scripts/deploy.js --network sepoliaVocê deverá ver algo assim:
1Contrato implantado no endereço: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570Se formos ao Etherscan da Sepolia (opens in a new tab) e pesquisarmos o endereço do nosso contrato, poderemos ver que ele foi implantado com sucesso. A transação ficará parecida com isto:
O endereço From deve corresponder ao endereço da sua conta MetaMask e o endereço To dirá “Contract Creation”, mas se clicarmos na transação, veremos o endereço do nosso contrato no campo To:
Parabéns! Você acabou de implantar um contrato inteligente na cadeia Ethereum 🎉
Para entender o que está acontecendo nos bastidores, vamos navegar para a guia Explorer em nosso painel da Alchemy (opens in a new tab). Se você tiver vários aplicativos Alchemy, certifique-se de filtrar por aplicativo e selecionar “Hello World”.

Aqui você verá uma série de chamadas JSON-RPC que o Hardhat/Ethers fizeram nos bastidores para nós quando chamamos a função .deploy(). Duas chamadas importantes a serem destacadas aqui são eth_sendRawTransaction (opens in a new tab), que é a solicitação para realmente escrever nosso contrato na cadeia Sepolia, e eth_getTransactionByHash (opens in a new tab), que é uma solicitação para ler informações sobre nossa transação, dado o hash (um padrão típico ao lidar com
transações). Para saber mais sobre o envio de transações, confira este tutorial sobre o envio de transações usando Web3
Isso é tudo para a parte 1 deste tutorial. Na parte 2, vamos interagir com nosso contrato inteligente (opens in a new tab) atualizando nossa mensagem inicial e, na parte 3, vamos publicar nosso contrato inteligente no Etherscan (opens in a new tab) para que todos saibam como interagir com ele.
Quer saber mais sobre o Alchemy? Confira nosso site (opens in a new tab). Não quer perder nenhuma atualização? Assine nossa newsletter aqui (opens in a new tab)! Não se esqueça de entrar também no nosso Discord (opens in a new tab)..
Última atualização da página: 5 de dezembro de 2025





