All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Redeployment market for Sonic:
stS/S
- Redeployment SiloRouter
- Redeployment GaugeHookReceiver with updated event and reduced contract size
- Redeployment market for Sonic:
stS/S
- Redeployment GaugeHookReceiver
- Extended LiquidationCall event
- silo vaults catch 63/64 gas attack
- Sonic and Arbitrum deployments
- new market for Sonic:
stS/S
- Silo Incentives controller
- Silo vaults incentives module and incentives claiming logic
- Renaming of 'MetaMorpho' to 'SiloVaults'
- Extended LiquidationCall event
- allow LiquidationHelper to accept ETH
- new markets for v0.17:
wstETH/WETH
,gmETH/WETH
,solvBTC/wBTC
,ETHPlus/WETH
- redeployment of silo-vault with
MIN_TIMELOCK
set to 1 minute for QA purposes
- redeployment of whole protocol
- add support for custom oracle setup
- add initial setup for IRM params:
ri
andTcrit
- fix
maxBorrow
estimation
PublicAllocator
contract for vaults- add reentrancy for
withdrawFees
- ensure transition deposit not fail when user insolvent
- Vault functionality based on MetaMorpho
- MetaMorpho was adjusted to work with ERC4626 standard
- Concept of Idle market needs to be replaced with additional vault. By default, in Silo
IdleVault
is used.
LiquidationHelper
andTower
- LICENSE
- modified license for some solidity files
- SiloLens redeployment
- solvBTC/wBTC market Arbitrum
- gmETH/WETH market Arbitrum
- wstETH/WETH market Arbitrum
- ETH+/WETH market Arbitrum
- SiloRouter with preview methods instead of convertToAssets
- dao fee can be set based on range
- optimism deployment
- make target LTV after liquidation configurable
- SiloRouter with convertToAssets
- allow for forced transfer of debt
- use transient storage for reentrancy flag
- remove unchecked math from some places
- exclude protected assets from flashloan
- remove
leverageSameAsset
- remove self liquidation
- remove decimals from value calculations
Design changes:
- The liquidation module was transformed into a hook receiver.
- Silo is now a share collateral token and implements share token functionality. So, now we have collateral share token (silo), protected share token (customized ERC-20), debt share token (customized ERC-20).
- Removed ‘bool sameAsset’ from the silo and introduced separate methods for work with the same asset.
- Removed ordered configs from the SiloConfig and introduced a collateral silo concept.
- Removed ‘leverage’ functionality from the Silo.borrow fn.
- Removed InterestRateModelV2.connect and added InterestRateModelV2.initialize. Now each silo has a different irm that is a minimal proxy and is cloned during the silo deployment like other components
- Refactoring of the hooks' actions and hooks inputs
- Reentrancy bug fix in flashLoan fn
- Rounding error bug fix in maxWithdraw fn
- Overflow bug fix on maxWithdraw fn
- ERC20Permit for share token
- Added delegate call into the callOnBehalfOfSilo fn
- Other minor fixes and improvements
- deployment with mocked CCIP and tokens for Arbitrum and Optimism
- apply fixes for certora report
- deposit to any silo without restrictions
- borrow same token
- liquidation for same token can be done with sToken without reverting
- case observed on full liquidation: when we empty out silo, there is dust left (no shares)
- standard reentrancy guard was replaced by cross Silo reentrancy check
- fix issue with wrong configs in
isSolvent
after debt share transfer
- SiloLens deploy
- add returned code for
IHookReceiver.afterTokenTransfer
- underestimate
maxWithdraw
- fix rounding on
maxRedeem
- fix rounding on
maxBorrow
- optimise
maxWithdraw
: do not rungetTotalCollateralAssetsWithInterest
twice
- add
SiloLens
to reduced Silo size
- change visibility of
total
mapping to public - ensure total getters returns values with interest
- remove
getProtectedAssets()
- Arbitrum and Optimism deployments
- fix
maxBorrowShares
by using-1
, same solution as we have formaxBorrow
- fix max redeem: include interest for collateral assets
- accrue interest on both silos for borrow
- improvements to
silo-core
, new test environments: certora, echidna
SiloStdLib.flashFee
fn revert if_amount
is0
- ensure we can not deposit shares with
0
assets
- ensure we can not borrow shares with
0
assets
- code after first audit + develop changes
- issue-320 TOB-SILO2-19: max* functions return
incorrect values: underestimate
maxBorrow
more, to cover big amounts
- issue-320 TOB-SILO2-19: max* functions return incorrect values: add liquidity limit when user has no debt
- TOB-SILO2-10: Incorrect rounding direction in preview functions
- TOB-SILO2-13: replaced leverageNonReentrant with nonReentrant, removed nonReentrant from the flashLoan fn
- issue-320 TOB-SILO2-19: max* functions return incorrect values
- issue-319 TOB-SILO2-18: Minimum acceptable LTV is not enforced for full liquidation
- issue-286 TOB-SILO2-3: Flash Loans cannot be performed through the SiloRouter contract
- issue-322 Repay reentrancy attack can drain all Silo assets
- issue-321 Deposit reentrancy attack allows users to steal assets
- issue-255: UniswapV3Oracle contract implementation is left uninitialized
- TOB-SILO2-17: Flashloan fee can round down to zero
- TOB-SILO2-16: Minting zero collateral shares can inflate share calculation
- TOB-SILO2-14: Risk of daoAndDeployerFee overflow
- TOB-SILO2-12: Risk of deprecated Chainlink oracles locking user funds
- TOB-SILO2-10: Incorrect rounding direction in preview functions
- TOB-SILO2-13: Users can borrow from and deposit to the same silo vault to farm rewards
EVM version changed to paris
- TOB-SILO2-9: fix avoiding paying the flash loan fee
- TOB-SILO2-7: fix fee distribution
- TOB-SILO2-8: fix fee transfer
- TOB-SILO2-4: add 2-step ownership for
SiloFactory
andGaugeHookReceiver
- TOB-SILO2-6: ensure no one can initialise GaugeHookReceiver and SiloFactory
- TOB-SILO2-1: ensure silo factory initialization can not be front-run
- tob-silo2-5: fix deposit limit
- fix
ASSET_DATA_OVERFLOW_LIMIT
in IRM model
- silo-core for audit
- silo-oracles for audit
- ve-silo for audit