diff --git a/erc4626/SiloV2Review.md b/erc4626/SiloV2Review.md new file mode 100644 index 0000000..beb98b5 --- /dev/null +++ b/erc4626/SiloV2Review.md @@ -0,0 +1,38 @@ +# ERC4626 Vault: `Silo V2` + +## Details +- Reviewed by: @franzns +- Checked by: +- Deployed at: + - [sonic:0x52Fc9E0a68b6a4C9b57b9D1d99fB71449A99DCd8](https://sonicscan.org/address/0x52Fc9E0a68b6a4C9b57b9D1d99fB71449A99DCd8#code) + - [sonic:0x87178fe8698C7eDa8aA207083C3d66aEa569aB98](https://sonicscan.org/address/0x87178fe8698C7eDa8aA207083C3d66aEa569aB98#code) +- Audits: + - [Silo V2 audits](https://docs.silo.finance/audits-and-tests) + + +## Context +All Silo V2 markets are ERC4626 vaults be default. + +## Review Checklist: Bare Minimum Compatibility +Each of the items below represents an absolute requirement for the ERC4626. If any of these is unchecked, the the ERC4626 is unfit to use. + +- [x] Tests based on the [balancer-v3-monorepo](https://github.com/balancer/balancer-v3-monorepo/tree/main/pkg/vault/test/foundry/fork) pass for the given ERC4626 vaults, which can be found [here](https://github.com/balancer/balancer-v3-erc4626-tests/blob/main/test/sonic/). +- [x] The required Vault implements the required operational ERC4626 Interface + +## Review Checklist: Common Findings +Each of the items below represents a common red flag found in ERC4626 contracts. + +If none of these is checked, then this might be a pretty great ERC4626! If any of these is checked, we must thoroughly elaborate on the conditions that lead to the potential issue. Decision points are not binary; a ERC4626 can be safe despite these boxes being checked. A check simply indicates that thorough vetting is required in a specific area, and this vetting should be used to inform a holistic analysis of the ERC4626. + +### Administrative Privileges +- [ ] The ERC4626 Vault is upgradeable. + +### Common Manipulation Vectors +- [ ] The ERC4626 Vault is susceptible to donation attacks. + +## Additional Findings + +## Conclusion +**Summary judgment: USABLE** + +The outlined ERC4626 Vaults should work well with Balancer pools. The underlying contracts have been audited. Computation of totalAssets do not rely on `balanceOf()` calls and also their audits do not indicate any risk of a donation attack vector. \ No newline at end of file diff --git a/erc4626/registry.json b/erc4626/registry.json index dd1f129..ab935e5 100644 --- a/erc4626/registry.json +++ b/erc4626/registry.json @@ -222,6 +222,20 @@ "summary": "safe", "review": "./BeefyWrapperReview.md", "warnings": [] + }, + "0x52Fc9E0a68b6a4C9b57b9D1d99fB71449A99DCd8": { + "asset": "0xCC0966D8418d412c599A6421b760a847eB169A8c", + "name": "SiloV2 solvBTC.bbn ID 13", + "summary": "safe", + "review": "./SiloV2Review.md", + "warnings": [] + }, + "0x87178fe8698C7eDa8aA207083C3d66aEa569aB98": { + "asset": "0x541FD749419CA806a8bc7da8ac23D346f2dF8B77", + "name": "SiloV2 solvBTC ID 13", + "summary": "safe", + "review": "./SiloV2Review.md", + "warnings": [] } }, "sepolia": { diff --git a/rate-providers/SiloWrappedRateprovider.md b/rate-providers/SiloWrappedRateprovider.md new file mode 100644 index 0000000..8820c9f --- /dev/null +++ b/rate-providers/SiloWrappedRateprovider.md @@ -0,0 +1,43 @@ +# Rate Provider: `ERC4626RateProvider` + +## Details +- Reviewed by: @franzns +- Checked by: +- Deployed at: + - [sonic:0x78557d8a83fe7c6d9f9983d00e5c0e08cc3335e6](https://sonicscan.org/address/0x78557d8a83fe7c6d9f9983d00e5c0e08cc3335e6#code) + - [sonic:0x9d2d4351c1b3718d7a65ef21f54c86c665964670](https://sonicscan.org/address/0x9d2d4351c1b3718d7a65ef21f54c86c665964670#code) +- Audits: + - [Silo V2 audits](https://docs.silo.finance/audits-and-tests) + +## Context +The ERC4626 Rate Provider fetches the rate of the Silo V2 Market. The rate provider was created using the ERC4626 Rateprovider factory which calls convertToAssets on the ERC4626 to expose the rate. + +## Review Checklist: Bare Minimum Compatibility +Each of the items below represents an absolute requirement for the Rate Provider. If any of these is unchecked, the Rate Provider is unfit to use. + +- [x] Implements the [`IRateProvider`](https://github.com/balancer/balancer-v2-monorepo/blob/bc3b3fee6e13e01d2efe610ed8118fdb74dfc1f2/pkg/interfaces/contracts/pool-utils/IRateProvider.sol) interface. +- [x] `getRate` returns an 18-decimal fixed point number (i.e., 1 == 1e18) regardless of underlying token decimals. + +## Review Checklist: Common Findings +Each of the items below represents a common red flag found in Rate Provider contracts. + +If none of these is checked, then this might be a pretty great Rate Provider! If any of these is checked, we must thoroughly elaborate on the conditions that lead to the potential issue. Decision points are not binary; a Rate Provider can be safe despite these boxes being checked. A check simply indicates that thorough vetting is required in a specific area, and this vetting should be used to inform a holistic analysis of the Rate Provider. + +### Administrative Privileges +- [ ] The Rate Provider is upgradeable (e.g., via a proxy architecture or an `onlyOwner` function that updates the price source address). + +- [ ] Some other portion of the price pipeline is upgradeable (e.g., the token itself, an oracle, or some piece of a larger system that tracks the price). + + +### Oracles +- [ ] Price data is provided by an off-chain source (e.g., a Chainlink oracle, a multisig, or a network of nodes). + +- [ ] Price data is expected to be volatile (e.g., because it represents an open market price instead of a (mostly) monotonically increasing price). + +### Common Manipulation Vectors +- [ ] The Rate Provider is susceptible to donation attacks. + +## Conclusion +**Summary judgment: SAFE** + +The Rate Providers should work well with Balancer pools. The underlying contracts have been audited. Computation of totalAssets do not rely on `balanceOf()` calls and also their audits do not indicate any risk of a donation attack vector. \ No newline at end of file diff --git a/rate-providers/registry.json b/rate-providers/registry.json index c09cabe..495cd56 100644 --- a/rate-providers/registry.json +++ b/rate-providers/registry.json @@ -2954,6 +2954,24 @@ "warnings": [""], "factory": "0x00de97829d01815346e58372be55aefd84ca2457", "upgradeableComponents": [] + }, + "0x78557d8a83fe7c6d9f9983d00e5c0e08cc3335e6": { + "asset": "0x52Fc9E0a68b6a4C9b57b9D1d99fB71449A99DCd8", + "name": "Silo bSolvBTC.bbn Rateprovider", + "summary": "safe", + "review": "./SiloWrappedRateprovider.md", + "warnings": [""], + "factory": "0x00de97829d01815346e58372be55aefd84ca2457", + "upgradeableComponents": [] + }, + "0x9d2d4351c1b3718d7a65ef21f54c86c665964670": { + "asset": "0x87178fe8698C7eDa8aA207083C3d66aEa569aB98", + "name": "Silo bSolvBTC Rateprovider", + "summary": "safe", + "review": "./SiloWrappedRateprovider.md", + "warnings": [""], + "factory": "0x00de97829d01815346e58372be55aefd84ca2457", + "upgradeableComponents": [] } } }