## Foundry **Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** Foundry consists of: - **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). - **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. - **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. - **Chisel**: Fast, utilitarian, and verbose solidity REPL. ## Documentation https://book.getfoundry.sh/ ## Usage ### Install ```shell $ git clone $ git submodule init $ git submodule update $ cd lib/uni-v3-lib $ yarn ``` ### Build ```shell $ forge build ``` ### Test ```shell $ forge test ``` ### Format ```shell $ forge fmt ``` ### Gas Snapshots ```shell $ forge snapshot ``` ### Anvil ```shell $ anvil ``` ### Deploy ```shell forge clean forge cache clean source .env forge script script/BaseSepoliaDeploy.sol:BaseSepoliaDeploy --slow --broadcast --verify --rpc-url ${BASE_SEPOLIA_RPC_URL} ``` if verification fails: ```shell forge verify-contract --watch --chain sepolia --constructor-args $(cast abi-encode "constructor(string,string,address,address,address)" "Kraiken" "KRAIKEN" "0x0227628f3F023bb0B980b67D528571c95c6DaC1c" "0xb16F35c0Ae2912430DAc15764477E179D9B9EbEa" "0x64dda11815b883c589afed914666ef2d63c8c338") 0x7517db0f2b24223f2f0e3567149ca180e204da8a Kraiken forge verify-contract --watch --chain sepolia --constructor-args $(cast abi-encode "constructor(address)" "0x7517db0f2b24223f2f0e3567149ca180e204da8a") 0x00b4d656b8182d0c2f4841b7a6f1429b94f73a66 Stake ``` ### Cast ```shell $ cast ``` ### Help ```shell $ forge --help $ anvil --help $ cast --help ``` ## Deployment on Base Sepolia ### Multisig address: 0xf6a3eef9088A255c32b6aD2025f83E57291D9011 ### Kraiken address: 0x22c264Ecf8D4E49D1E3CabD8DD39b7C4Ab51C1B8 ### Stake address: 0xe28020BCdEeAf2779dd47c670A8eFC2973316EE2 ### LP address: 0x3d6a8797693a0bC598210782B6a889E11A2340Cd ## Deployment on Base ### Kraiken address: 0x45caa5929f6ee038039984205bdecf968b954820 ### Stake address: 0xed70707fab05d973ad41eae8d17e2bcd36192cfc ### LP address: 0x7fd4e645ce258dd3942eddbeb2f99137da8ba13b ## References open features: - reduce snatch collision todos: - write unit test for capital exit function - would anchorLiquidityShare affect capitalInefficiency? - could the UBI pool run dry? - what happens if discovery runs out? ## Simulation data: ```json { "VWAP":0, "comEthBal":1234, "comHarbBal":0, "comStakeShare":0, "liquidity":[{ "liquidity":1234, "tickLower":-123, "tickUpper":124 }], "startTime":1234, "txns":[{ "action":5,"timeOffset":0,"x":0,"y":""}, {"action":0,"ethAmount":1,"x":0,"y":""}, {"action":5,"timeOffset":0,"x":0,"y":""}, {"action":0,"ethAmount":2,"x":0,"y":""}, {"action":5,"timeOffset":0,"x":0,"y":""}, {"action":0,"ethAmount":4,"x":0,"y":""}, {"action":2,"harbAmount":3000,"tax":10,"y":""}, {"action":5,"timeOffset":0,"x":0,"y":""}, {"action":4,"positionId":654321,"x":0,"y":""}, {"action":2,"harbAmount":5000,"tax":20,"y":""}, {"action":0,"ethAmount":8,"x":0,"y":""}, {"action":5,"timeOffset":0,"x":0,"y":""}, {"action":1,"harbAmount":20000,"x":0,"y":""}, {"action":5,"timeOffset":0,"x":0,"y":""}, {"action":4,"positionId":654321,"x":0,"y":""}, {"action":2,"harbAmount":8000,"tax":29,"y":""} ] } ```