3.3 KiB
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/Deploy.sol:SepoliaScript --slow --broadcast --verify --rpc-url ${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 Sepolia
Harb
address: 0x087F256D11fe533b0c7d372e44Ee0F9e47C89dF9
Stake
address: 0xCd21a41a137BCAf8743E47D048F57D92398f7Da9
LP
address: 0xCc7467616bBDB574D04C7e9d2B0982c59F33D43c
References
- take percentage math from here: https://github.com/attestate/libharberger/tree/master
- add this function:
3e7713bc60/contracts/token/modules/Taxation.sol (L260) - limit discovery position growth to max_issuance / day
open features:
-
token minting limit / limit on discovery position growth
-
ERC721 & ERC4907, user/owner separation, influencer incentives
-
token contract not visible in uniswap sepolia
-
snatch collision
-
previousTotalSupply at beginning?
-
profit for staking position
-
tax paid for staking position
-
partially snatched
-
liquidation bot
-
shift/slide bot
-
ubi claim bot
-
deployment on L2
-
make minStake a gov param
-
prep for audit
- clean up TODOs
- clean up magic numbers
- coverage
- overflows
- reentry
- HARB
- mint - limit supply to 2^96?
- Stake
- what if someone calls payTax and exitPosition in the same transaction?
-
LiquidityManager
- what to do with stuck funds if slide/shift become inoperable?
- _isPriceStable - // Handle try catch, possibly by trying with a different time interval or providing a default response\
- test wraparound of vwap
-
NFT support of etherscan https://etherscan.io/nft/0xe12edaab53023c75473a5a011bdb729ee73545e8/4218