Este projeto implementa um token ERC-20 chamado TreeToken, utilizando Solidity e OpenZeppelin, com uma interface web para interação via Ether.js e Alchemy.
- Features
- Estrutura do Projeto
- Instalação e Setup
- Execução do Frontend
- Webhook de Notificações (Alchemy)
- Testando
- Contato
- Nome: TreeToken
- Símbolo: TREE
- Decimais: 18
- Supply inicial: 1.000.000 TREE (mintado para o deployer)
- Função de burn
- Função de airdrop para múltiplos endereços
- Integração com Alchemy (RPC, histórico e webhooks)
/tree-token-challenge
├── contracts/TreeToken.sol
├── frontend/index.html, style.css, app.js, alchemy-history.js, ethers.umd.min.js
├── scripts/deploy.js
├── webhook-server.js
├── README.md
├── .env (NÃO subir para o repositório)
-
Clone o repositório e instale as dependências:
git clone <url-do-repo> cd tree-token-challenge npm install
-
Configuração da Alchemy API Key: Crie um arquivo
.envna raiz do projeto:ALCHEMY_API_KEY=SEU_ALCHEMY_KEY WALLET_PRIVATE_KEY=SUA_PRIVATE_KEY -
Compile o contrato:
npx hardhat compile
-
Deploy do contrato (Hardhat):
npx hardhat run scripts/deploy.js --network sepolia
Nota: Utilizamos a rede Sepolia como testnet, pois o suporte à Goerli foi descontinuado pelo Alchemy. Sepolia é atualmente a rede de testes padrão para novos projetos Ethereum.
- Entre na pasta
frontend:cd frontend - Inicie um servidor HTTP simples:
python3 -m http.server 5173
- Abra http://localhost:5173 no navegador.
- Execute o servidor webhook:
node webhook-server.js
- Em outro terminal, exponha a porta com ngrok:
ngrok http 4000
- Use a URL pública gerada (ex:
https://xxxx.ngrok-free.app/alchemy-webhook) para configurar o webhook no painel do Alchemy.
- Conecte sua carteira MetaMask ao frontend.
- Realize transferências, burns ou airdrops de TREE.
- Veja o histórico de transações no painel do frontend.
- Notificações de eventos aparecerão no terminal do webhook.
Exemplo de uso:
- Transferir TREE para outro endereço
- Queimar TREE do saldo próprio
- Realizar airdrop para múltiplos endereços
- Visualizar histórico de transações TREE
Dúvidas ou sugestões: matheus@tree.company