- Join Sherlock Discord
- Submit findings using the issue page in your private contest repo (label issues as med or high)
- Read for more details
The Convergence protocol will be deployed on the Ethereum Mainnet.
Lock the CVG in the LockingPositionService
- CVG
Receives and acculate the following rewards :
- sdFRAX3CRV coming from veSDT holding. Transfered from the FeeDistributor (https://etherscan.io/address/0x29f3dd38dB24d3935CF1bf841e6b2B461A3E5D92)
- SDT from our SdtFeeCollector and potential boost sending directly from a Multisig.
- CvgSDT from potential bribes sent directly from a Multisig on the contract.
- sdAssetGauge received through Staking
- Bribe tokens accumulated and sent to SdtRewardReceiver
- Accumulates and receives any ERC20 coming from the StakeDao Gauge ( SDT, CRV, 3CRV, BAL, USDC, FXS, FXN, PENDLE, ANGLE sdCRV, sdBAL ... )
- Receives Fees in SDT from all buffer ( except CvgSDT )
- Dispatch fees between different receivers
Receives rewards from the treasury. The list of ERC20 can vary.
- Curve (CRV)
- Convex (CVX)
- StakeDao (SDT)
- Frax-Share (FXS)
- Prisma (PRISMA) (...)
- USDC
- USDT
- DAI
- Mints CVG to claimer
- Receives all ERC20 coming from Gauge ( SDT, CRV, 3CRV, FXS .. ) + Bribe assets ( sdCRV, sdPENDLE, sdFXS, sdPENDLE, sdANGLE ... )
- Transfer rewards to Stakers on claim
- transferFrom caller to SdtBlackHole gaugeAsset from StakeDao
- transferFrom caller to SdtStakingPositionService CvgSDT
- transferFrom SDT from caller to veSDTMultisig on mint on 1:1 ratio.
Convert & Stake assets in Staking contracts
- sdGaugeAsset ( sdGaugeCRV, sdGaugeFXS, sdGaugeFXN ... )
- sdAsset ( sdCRV, sdFXS, sdFXN ... )
- asset ( CRV, FXS, FXN ... )
- SDT & CvgSDT
Only NFT that we made :
-
LockingPositionManager
-
SdtStakingPositionManager
-
BondPositionManager
None
None
We have some interaction with USDC and potentially USDT. We understand that USDT and USDC may introduce fees in the future, but those tokens should be assumed not to do that.
None
TRUSTED
TRUSTED
Multisig executing the action voted by the DAO.
Multisig receiving SDT from CvgSDT staking. Lock this SDT in veSDT.
A bond contract can mint CVG.
A staking contract can mint CVG Only a Staking contract can be a gauge
A SDT staking contract that can withdraw a gauge token from the SdtBlackHole
Q: Is the code/contract expected to comply with any EIPs? Are there specific assumptions around adhering to those EIPs that Watsons should be aware of?
None
None
Halborn ( on the old Tokemak integration ) : https://ipfs.io/ipfs/QmPyZZoeNJqt44GiFRoc8E9JctCyp5DYxkW254hhfkeUui
Hats ( on the Bond mechanism & Oracle price fetching ) : https://app.hats.finance/audit-competitions/convergence-finance-ibo-0x0e410e7af8e70fc5bffcdbfbdf1673ee7b3d0777/leaderboard
Q: Are there any off-chain mechanisms or off-chain procedures for the protocol (keeper bots, input validation expectations, etc)?
None
Q: In case of external protocol integrations, are the risks of external contracts pausing or executing an emergency withdrawal acceptable? If not, Watsons will submit issues related to these situations that can harm your protocol's functionality.
We are interacting with StakeDao on the integration of their Gauge contract through our Staking architecture.
We are for instance :
- Claiming rewards from their Gauges, if the claim is broken on their Gauges, it'll break on our side also. ( It's not impacting funds of the user, only the potential earned rewards on 1 week ) .
- Converting asset to sdAsset to sdGaugeAsset in SdtUtilities, using the StakeDao converters
We are aware of this kind of issues, we so separated the Convergence rewards from the rewards coming from StakeDao, in order not to break the full protocol.
Q: Do you expect to use any of the following tokens with non-standard behaviour with the smart contracts?
USDC & USDT
Technical documentation is to find through natspec in contracts & under technical documentation folder: https://github.com/sherlock-audit/2023-11-convergence/tree/main/sherlock-cvg/technical-docs
sherlock-cvg @ d0b36ce5ebb141895e4bf23b241a184fa0606b1b
- sherlock-cvg/contracts/Locking/GaugeController.vy
- sherlock-cvg/contracts/Locking/LockingPositionDelegate.sol
- sherlock-cvg/contracts/Locking/LockingPositionManager.sol
- sherlock-cvg/contracts/Locking/LockingPositionService.sol
- sherlock-cvg/contracts/Locking/veCVG.vy
- sherlock-cvg/contracts/Rewards/CvgRewards.sol
- sherlock-cvg/contracts/Rewards/StakeDAO/CvgSdtBuffer.sol
- sherlock-cvg/contracts/Rewards/StakeDAO/SdtBlackHole.sol
- sherlock-cvg/contracts/Rewards/StakeDAO/SdtBuffer.sol
- sherlock-cvg/contracts/Rewards/StakeDAO/SdtFeeCollector.sol
- sherlock-cvg/contracts/Rewards/YsDistributor.sol
- sherlock-cvg/contracts/Staking/StakeDAO/SdtRewardReceiver.sol
- sherlock-cvg/contracts/Staking/StakeDAO/SdtStakingPositionManager.sol
- sherlock-cvg/contracts/Staking/StakeDAO/SdtStakingPositionService.sol
- sherlock-cvg/contracts/Token/Cvg.sol
- sherlock-cvg/contracts/Token/CvgERC721TimeLockingUpgradeable.sol
- sherlock-cvg/contracts/Token/CvgSDT.sol
- sherlock-cvg/contracts/utils/CvgUtilities.sol
- sherlock-cvg/contracts/utils/SdtUtilities.sol