- Increased gas limit to 100M to prevent out-of-gas errors during large swaps - Fixed symlink path for profitable_scenario.csv to work with visualizer - Position CSVs are now always generated when recording profitable scenarios The out-of-gas error was occurring when large KRAIKEN sells tried to traverse many tick ranges in Uniswap V3. The visualizer couldn't display data because the CSV symlink was created in the wrong directory. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .github/workflows | ||
| analysis | ||
| fuzzing_results_recorded_BullMarketOptimizer_20250818_210958 | ||
| fuzzing_results_recorded_BullMarketOptimizer_20250818_211041 | ||
| fuzzing_results_recorded_BullMarketOptimizer_20250818_211422 | ||
| lib | ||
| script | ||
| src | ||
| test | ||
| .gitignore | ||
| CLAUDE.md | ||
| foundry.toml | ||
| hAIrberger.md | ||
| README.md | ||
| remappings.txt | ||
| testing_todos.md | ||
| TODO_DEBUGGING_IMPROVEMENTS.md | ||
| UNISWAP_V3_MATH.md | ||
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
Usage
Install
$ git clone
$ git submodule init
$ git submodule update
$ cd lib/uni-v3-lib
$ yarn
Build
$ forge build
Test
$ forge test
Format
$ forge fmt
Gas Snapshots
$ forge snapshot
Anvil
$ anvil
Deploy
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:
forge verify-contract --watch --chain sepolia --constructor-args $(cast abi-encode "constructor(string,string,address,address,address)" "Harberger Tax" "HARB" "0x0227628f3F023bb0B980b67D528571c95c6DaC1c" "0xb16F35c0Ae2912430DAc15764477E179D9B9EbEa" "0x64dda11815b883c589afed914666ef2d63c8c338") 0x7517db0f2b24223f2f0e3567149ca180e204da8a Harb
forge verify-contract --watch --chain sepolia --constructor-args $(cast abi-encode "constructor(address)" "0x7517db0f2b24223f2f0e3567149ca180e204da8a") 0x00b4d656b8182d0c2f4841b7a6f1429b94f73a66 Stake
Cast
$ cast <subcommand>
Help
$ forge --help
$ anvil --help
$ cast --help
Deployment on Base Sepolia
Multisig
address: 0xf6a3eef9088A255c32b6aD2025f83E57291D9011
Harberg
address: 0x22c264Ecf8D4E49D1E3CabD8DD39b7C4Ab51C1B8
Stake
address: 0xe28020BCdEeAf2779dd47c670A8eFC2973316EE2
LP
address: 0x3d6a8797693a0bC598210782B6a889E11A2340Cd
Deployment on Base
Harberg
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:
{ "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":""}
]
}