Skip to main content

Foundry

Foundry is a development environment for Ethereum which is written in Rust

You can clone this template repo to begin your Kakarot journey w/ Foundry.

Setup

You can declare a alias in foundry.toml:

[profile.default]
src = "src"
out = "out"
libs = ["lib"]
evm_version = 'cancun' # Kakarot supports `PUSH0`, `TLOAD` / `TSTORE`...

[rpc_endpoints]
kakarot_starknet_sepolia = "https://sepolia-rpc.kakarot.org"

Fork Testing

$ forge test --fork-url "https://sepolia-rpc.kakarot.org"
# or $ forge test --fork-url kakarot_starknet_sepolia

Config Setting

[rpc_endpoints]
kakarot_starknet_sepolia = "https://sepolia-rpc.kakarot.org"

[etherscan]
kakarot_starknet_sepolia = { key = "kakarot_starknet_sepolia", chain = 920637907288165, url = "https://api.routescan.io/v2/network/testnet/evm/920637907288165/etherscan" }

Deployment

You can use the deploy script to deploy contract:

$ forge script ./script/Deploy.s.sol --broadcast --rpc-url "https://sepolia-rpc.kakarot.org"
# or $ forge script ./script/Deploy.s.sol --broadcast --rpc-url kakarot_starknet_sepolia

or directly use the forge command:

$ forge create <path-to-contract>:<contract-name> --rpc-url "https://sepolia-rpc.kakarot.org" --private-key <your_private_key>
# or $ forge create <path-to-contract>:<contract-name> --rpc-url kakarot_starknet_sepolia --private-key <your_private_key>

Verify

Please make sure your optimizer, solidity version, contract path and address are all correct.

Use the forge command to verify your contract:

$ forge verify-contract <your_contract_address> <path-to-contract>:<contract-name> \
--verifier-url 'https://api.routescan.io/v2/network/testnet/evm/920637907288165/etherscan' \
--etherscan-api-key "kakarot_starknet_sepolia" \
--num-of-optimizations 200 \
--compiler-version "v0.8.26+commit.8a97fa7a"