,-. .---. .-. .-. ,---. ,---. .---. _______ .---. ,--, .---. ,-.
|(|/ .-. ) | \| | | .-.\ | .-.\ / .-. )|__ __|/ .-. ) .' .') / .-. ) | |
(_)| | |(_)| | | | |-' )| `-'/ | | |(_) )| | | | |(_)| |(_)| | |(_)| |
| || | | | | |\ | | |--' | ( | | | | (_) | | | | | \ \ | | | | | |
| |\ `-' / | | |)| | | | |\ \ \ `-' / | | \ `-' / \ `-.\ `-' / | `--.
`-' )---' /( (_) /( |_| \)\ )---' `-' )---' \____\)---' |( __.'
(_) (__) (__) (__)(_) (_) (_) (_)
Ion Protocol is a decentralized money market purpose-built for all types of staked and restaked assets. Ion protocol unlocks capital efficiency for yield-bearing staking collaterals using reactive interest rates, collateral-specific utilization, and price-agnostic liquidations. Borrowers can collateralize their yield-bearing staking assets to borrow WETH, and lenders can gain exposure to the boosted staking yield generated by borrower collateral.
To learn more about Ion Protocol without code, please visit:
To learn more about the protocol's technical details, please visit:
Please report any white hat findings for potential vulnerabilities to security@molecularlabs.io
- OpenZeppelin Audit December 2023
- Hats Finance January 2024
- Regular Audit and Formal Verification Competition with Certora
- [Competition Completed]
To engage in conversations around Ion Protocol and the staking/restaking ecosystem, please join the Discord channel or follow @ionprotocol on X.
Install Bun
curl -fsSL https://bun.sh/install | bash
Run Bun install for javascript dependencies
bun install
Install jq
brew install jq
Copy .env.example to .env and add environmental variables.
MAINNET_RPC_URL=https://mainnet.infura.io/v3/
MAINNET_ARCHIVE_RPC_URL= # Archive node used for creating fork environments
MAINNET_ETHERSCAN_URL=https://api.etherscan.io/api
ETHERSCAN_API_KEY=
RPC_URL= # RPC of the desired testnet used in deployment scripts
- The test suite includes fork tests that require foundry ffi.
- Add RPC_URLs to the .env and run forge test with the --ffi flag.
forge test --ffi
-
Set up anvil as a mainnet fork.
- For the contracts using mainnet contract addresses as constants to work properly, the testnet needs to be a fork of a mainnet environment.
anvil --fork-url $MAINNET_ARCHIVE_RPC_URL --chain-id 31337
-
Set anvil as the target RPC for the deployment script in
.env
# ...other environmental variables RPC_URL=http://localhost:8545
-
Run the testnet deployment script
bash node.sh
-
Run the foundry script to verify that the contracts are working properly.
forge script script/__TestFlashLeverage.s.sol --rpc-url $RPC_URL
$ forge fmt