Usando Foundry para implantar na sua rede EVM¶
Introdução¶
Foundry é um ambiente de desenvolvimento Ethereum escrito em Rust que ajuda a gerenciar dependências, compilar projetos, executar testes, implantar contratos e interagir com blockchains pela linha de comando. Foundry interage diretamente com a API Ethereum das redes EVM baseadas na Tanssi, então você pode usá-lo para implantar e interagir com contratos inteligentes na sua rede Tanssi.
Quatro ferramentas compõem o Foundry:
- Forge – compila, testa e implanta contratos
- Cast – CLI para interagir com contratos
- Anvil – nó TestNet local para desenvolvimento que pode bifurcar redes existentes
- Chisel – REPL Solidity para testar rapidamente trechos de código
Este guia mostra como usar o Foundry para compilar, implantar e depurar contratos Ethereum na rede EVM de demonstração. Para sua própria rede Tanssi, basta trocar a URL RPC e o Chain ID nos exemplos.
Verificando pré-requisitos¶
Você precisará de:
- Uma conta com fundos
- Foundry instalado
Criando um projeto Foundry¶
Crie um projeto Foundry se ainda não tiver um:
-
Instale o Foundry (no Windows é necessário instalar Rust e compilar a partir da fonte):
curl -L https://foundry.paradigm.xyz | bash foundryupcurl -L https://foundry.paradigm.xyz | bash foundryupcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh cargo install --git https://github.com/foundry-rs/foundry foundry-cli anvil --bins --lockedApós instalar, talvez seja necessário reiniciar o terminal ou adicionar
foundryupao PATH. -
Inicialize o projeto, que criará uma pasta com três subpastas:
forge init foundry
Se aparecer um erro sobre diretório Git já existente, faça um commit (ou um commit falso) e execute novamente.
O projeto padrão cria:
lib– dependências como submódulos gitsrc– seus contratos inteligentestest– testes Forge em Solidity
Um repositório git e um .gitignore pré-preenchido também são criados.
A pasta src¶
O repositório padrão inclui Counter.sol em src, Counter.s.sol em script e Counter.t.sol em test. Exclua-os para evitar erros ao compilar/implantar MyToken.sol:
rm src/Counter.sol script/Counter.s.sol test/Counter.t.sol
Crie o contrato ERC-20 de exemplo:
cd src
touch MyToken.sol
Abra o arquivo e adicione:
pragma solidity ^0.8.0;
// Import OpenZeppelin Contract
import "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol";
// This ERC-20 contract mints the specified amount of tokens to the contract creator
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MYTOK") {
_mint(msg.sender, initialSupply);
}
}
Antes de compilar, instale os contratos OpenZeppelin como dependência. O Foundry usa submódulos git por padrão; use o repositório GitHub:
forge install OpenZeppelin/openzeppelin-contracts
Compilando Solidity¶
Depois das dependências, compile o contrato:
forge build
Serão criadas as pastas out e cache (já ignoradas no .gitignore) com ABI e bytecode.
Implantando o contrato¶
Para implantar com o Forge é um comando só, mas requer endpoint RPC, chave privada financiada e argumentos do construtor. MyToken.sol pede oferta inicial; o exemplo usa 100:
forge create --rpc-url https://services.tanssi-testnet.network/dancelight-2001/ \
--constructor-args 100 \
--private-key INSERT_YOUR_PRIVATE_KEY \
src/MyToken.sol:MyToken
Após alguns segundos o contrato é implantado; o endereço aparece no terminal.
Interagindo com o contrato¶
Use o Cast (CLI) para fazer chamadas RPC.
Recupere o nome do token (substitua INSERT_YOUR_CONTRACT_ADDRESS):
cast call INSERT_YOUR_CONTRACT_ADDRESS "name()" --rpc-url https://services.tanssi-testnet.network/dancelight-2001/
Converta o retorno hexadecimal para ASCII:
cast --to-ascii 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000074d79546f6b656e00000000000000000000000000000000000000000000000000
Para queimar tokens enviando-os ao endereço zero:
cast send --private-key INSERT_YOUR_PRIVATE_KEY \
--rpc-url https://services.tanssi-testnet.network/dancelight-2001/ \
--chain 5678 \
INSERT_YOUR_CONTRACT_ADDRESS \
"transfer(address,uint256)" 0x0000000000000000000000000000000000000001 1
Bifurcando com Anvil¶
Anvil é um nó local que pode bifurcar redes. Para bifurcar a rede demo EVM:
anvil --fork-url https://services.tanssi-testnet.network/dancelight-2001/
A instância terá 10 contas de desenvolvimento pré-financiadas. Verifique o último bloco e compare com a rede demo:
curl --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
Depois, você pode implantar novos contratos ou interagir com os existentes. Exemplo para ver saldo dos tokens cunhados:
cast call INSERT_CONTRACT_ADDRESS "balanceOf(address)(uint256)" INSERT_YOUR_ADDRESS --rpc-url http://localhost:8545
Usando Chisel¶
Chisel é um REPL Solidity. Escreva Solidity direto no console para testar rapidamente, sem montar projeto ou implantar contrato.
Para iniciar:
chisel
Exemplo de codificação ABI:
bytes memory myData = abi.encode(100, true, "Build with Tanssi");
Veja como o valor é armazenado em memória:
!memdump
Descubra a posição na pilha:
!rawstack myData
Você verá que myData está em 0x80; o dump de memória mostrará os valores correspondentes.
Limpe o estado do Chisel se quiser recomeçar:
!clear
Você também pode avaliar expressões diretamente:
abi.encode(100, true, "Build with Tanssi")
Para persistir estado:
uint256 myNumber = 101;
!save 1
!quit
Depois, liste e carregue:
chisel list
chisel load 1
!rawstack myNumber
É possível bifurcar dentro do Chisel:
!fork https://services.tanssi-testnet.network/dancelight-2001/
E consultar, por exemplo, saldo de uma conta:
0x44236223aB4291b93EEd10E4B511B37a398DEE55.balance
Foundry com Hardhat¶
Se você precisa integrar a um projeto já configurado em Hardhat, é possível criar um projeto híbrido com o plugin hardhat-foundry:
npm init
npm install --save-dev hardhat @nomicfoundation/hardhat-foundry
npx hardhat init
Edite hardhat.config.js para incluir:
require('@nomicfoundation/hardhat-foundry');
Mova os contratos de contracts para src e ajuste foundry.toml para incluir lib e node_modules:
[profile.default]
src = 'src'
out = 'out'
libs = ['lib', 'node_modules']
solc = '0.8.20'
evm_version = 'london'
Agora forge build e npx hardhat compile funcionam; forge test testa Solidity e npx hardhat test testa JavaScript. Você pode unificar em um script:
"scripts": {
"test": "npx hardhat test && forge test"
}
Parabéns, você implantou e interagiu com contratos na sua rede EVM Tanssi usando o Foundry! Para saber mais, consulte o Foundry Book.
| Criada: 9 de dezembro de 2025

