From 237a25649162a19699fe28f2a5bcc2af73eedd26 Mon Sep 17 00:00:00 2001 From: ChiHaoLu <81423845+ChiHaoLu@users.noreply.github.com> Date: Sun, 27 Oct 2024 23:32:55 +0800 Subject: [PATCH] feat: add foundry in SDK (#81) * feat: add foundry in SDK * feat: compile with cancun in foundry.toml --- docs/starknet/ecosystem/sdks/foundry.md | 69 +++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 docs/starknet/ecosystem/sdks/foundry.md diff --git a/docs/starknet/ecosystem/sdks/foundry.md b/docs/starknet/ecosystem/sdks/foundry.md new file mode 100644 index 0000000..59d98f8 --- /dev/null +++ b/docs/starknet/ecosystem/sdks/foundry.md @@ -0,0 +1,69 @@ +--- +title: Foundry +sidebar_position: 3 +--- + +> [Foundry](https://github.com/foundry-rs/foundry) is a development environment for Ethereum which is wriiten in Rust + +You can clone [this](https://github.com/ChiHaoLu/kakarot-foundry) 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 + +```shell +$ 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: + +```shell +$ 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](https://book.getfoundry.sh/reference/forge/forge-create): +```shell +$ forge create : --rpc-url "https://sepolia-rpc.kakarot.org" --private-key +# or $ forge create : --rpc-url kakarot_starknet_sepolia --private-key +``` + +### Verify + +Please make sure your optimizer, solidity version, contract path and address are all correct. + +Use the [forge command](https://book.getfoundry.sh/reference/forge/forge-verify-contract) to verify your contract: + +``` +$ forge verify-contract : \ +--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" +``` \ No newline at end of file