Security & Audits
This page catalogs published security reviews of specific Venus code changes. Each report is bounded by the repository revision, pull request, files, assumptions, and dates in its scope. It is not an audit of every Venus deployment, and it does not establish that the reviewed code is the code currently executing on-chain.
Before relying on a report:
- resolve the live proxy implementation, diamond facets, beacon, or clone implementation at a recorded block;
- map that deployed code to the exact reviewed commit and read the report’s in-scope and out-of-scope sections;
- review findings, acknowledged risks, remediation status, assumptions, and any later code changes—not only the auditor name or report count;
- verify live permissions, pause state, oracle configuration, risk parameters, and external dependencies separately; and
- check whether a newer deployment or audit supersedes the listed artifact.
The catalog is an evidence index, not a claim of complete coverage. Historical feature names, PRs, VIPs, and file lists below describe the review scope at that time; they do not prove that a feature is currently enabled or unchanged.
Audits
Section titled “Audits”Hub-funded spoke pools
Section titled “Hub-funded spoke pools”Scope: hub-funded spoke pools: SpokeComptroller and its storage and interface, SpokePoolLens, the Shortfall change for spoke pools, and the ProtocolShareReserve change that accepts income from more than one pool registry. The Liquidity Hub and the DeviationBoundedOracle are outside the Sherlock scope.
- Bailsec audit report (2026/10/23)
- Sherlock audit report (2026/10/23)
- HashDit audit report (2026/09/11)
Detailed scope
- Bailsec: the
isolated-poolsrepository at commit5b73f3cbb022a0b34bbf701c017ebac51e4ba8d8, resolutions reviewed at commitfcbecf35c5465b0ae48d534c3421f3f22e4a4fbb. - Sherlock: the
isolated-poolsrepository at commit7b02a6082d213c01dc51614baba47f520eedf193(final01714a3b8a47383d87bea329c090b0b8affa3bd6), and theprotocol-reserverepository at commita7b8f12de27657378d4173432852c70b000339e2(final4e589e25b99dcdf65bd72e63be06271d828da560):- contracts/Spoke/SpokeComptrollerInterface.sol
- contracts/Spoke/SpokeComptroller.sol
- contracts/Spoke/SpokeComptrollerStorage.sol
- contracts/ProtocolReserve/ProtocolShareReserve.sol (protocol-reserve)
- HashDit: pull request #559 in the
isolated-poolsrepository at commit7e3c344d5dcc60e5829ff583f6a1e2218112cb6b, and pull request #168 in theprotocol-reserverepository at commita7b8f12de27657378d4173432852c70b000339e2:- contracts/Spoke/SpokeComptroller.sol
- contracts/Spoke/SpokeComptrollerInterface.sol
- contracts/Spoke/SpokeComptrollerStorage.sol
- contracts/Lens/SpokePoolLens.sol
- contracts/Shortfall/Shortfall.sol
- the spoke deploy scripts 024 to 028 and helpers/spokeDeploymentConfig.ts
- contracts/ProtocolReserve/ProtocolShareReserve.sol (protocol-reserve)
Sherlock found no High and one Medium issue.
CollateralGateway
Section titled “CollateralGateway”Scope: CollateralGateway, which turns an underlying balance into collateral in one call on the Core pool, through a Liquidity Hub, and on hub-funded spoke pools, and the Core pool changes it needs.
Detailed scope
BStockLiquidator
Section titled “BStockLiquidator”Scope: BStockLiquidator, the liquidation contract for bStock collateral.
Detailed scope
- Pull request #683 in the
venus-protocolrepository, with the fixes in pull request #696:- BStockLiquidator.sol
The one Medium finding, that a borrower with VAI debt above the threshold could not be liquidated, was fixed by adding VAI-debt repayment.
Liquidity Hub: NAV deviation pause
Section titled “Liquidity Hub: NAV deviation pause”Scope: HubNavDeviationSentinel, the keeper check that pauses a whole Hub when a counterparty-published value leaves its NAV band, and the EBrake extension the pause routes through. See Automatic pause on a NAV break. The contract is deployed on BNB Chain; VIP-673, queued with an ETA of 2026-10-30, arms it.
Detailed scope
- Pull request #75 in the
venus-peripheryrepository, at commitecf8d8f93a440110fa8cd8f23b908cd5ef454004:- contracts/DeviationSentinel/HubNavDeviationSentinel.sol
- contracts/EmergencyBrake/EBrake.sol
- contracts/EmergencyBrake/IEBrake.sol
- contracts/Interfaces/IHubLiquidity.sol
The one Medium finding concerned the pause materiality gate being a share of a live Hub.totalAssets(), which Hub flow could move. It was fixed by replacing that with minPauseGap, an absolute amount in asset units.
Liquidity Hub: capacity lens
Section titled “Liquidity Hub: capacity lens”Scope: HubLens and the capacity math behind it, plus the removal of the Hub’s own maxDeposit / maxMint overrides. Pull request #20 is not merged yet, so the audited code is on branch fix/hub-maxDeposit, not develop; it is the code deployed on BNB Chain. See Sizing a deposit.
Detailed scope
- Pull request #20 in the
venus-liquidity-hubrepository, at commit6715424bd06c93ab6f63170ed407431d64374845:- contracts/lens/HubLens.sol
- contracts/lens/HubCapacityMath.sol
- contracts/Hub/Hub.sol
- contracts/adapters/AdapterCoreV1.sol
- contracts/adapters/AdapterFRV.sol
Liquidity Hub: Centrifuge yield group
Section titled “Liquidity Hub: Centrifuge yield group”Scope: the Centrifuge yield group of the Liquidity Hub, which connects a Hub to Centrifuge ERC-7540 fund vaults. Enabled on the USDT Hub in VIP-661 and on the USDC Hub in VIP-666.
Detailed scope
- Pull request #21 in the
venus-liquidity-hubrepository, at commit3450b9dc41dbdef1655965f21395bab20d982565, with the fixes in pull request #25. The report reviewed the band asPriceGuards.sol; the fixes renamed it toNavGuard.soland changedYieldGroupBase.sol. The files after the fixes:- contracts/YieldGroup/YieldGroupCentrifuge.sol
- contracts/YieldGroup/base/NavGuard.sol
- contracts/YieldGroup/base/YieldGroupBase.sol
- contracts/adapters/AdapterCentrifuge.sol
- contracts/interfaces/IAdapterCentrifuge.sol
- contracts/interfaces/INavGuard.sol
- contracts/interfaces/IYieldGroupCentrifuge.sol
- contracts/interfaces/external/ICentrifugeAsyncRequestManager.sol
- contracts/interfaces/external/ICentrifugeAsyncVault.sol
Liquidity Hub
Section titled “Liquidity Hub”Scope: the Liquidity Hub: the Hub, the Core, Flux and FRV yield groups and their adapters, and Migrator. HubRegistry arrived with the fixes in pull request #4, outside both reports’ original scope; Cantina looked at it only while reviewing the fixes.
Detailed scope
- Pull request #2 in the
venus-liquidity-hubrepository, with the fixes in pull request #4:- contracts/Hub/Hub.sol
- contracts/Hub/HubStorage.sol
- contracts/Hub/lib/HubAdminLib.sol
- contracts/YieldGroup/YieldGroup.sol
- contracts/YieldGroup/YieldGroupFRV.sol
- contracts/YieldGroup/base/YieldGroupBase.sol
- contracts/YieldGroup/base/YieldGroupBaseStorage.sol
- contracts/adapters/AdapterCoreV1.sol
- contracts/adapters/AdapterFlux.sol
- contracts/adapters/AdapterFRV.sol
- contracts/migrator/Migrator.sol
- contracts/registry/HubRegistry.sol
- contracts/interfaces/IHub.sol
- contracts/interfaces/IHubRegistry.sol
- contracts/interfaces/IMigrator.sol
- contracts/interfaces/IResourceAdapter.sol
- contracts/interfaces/IYieldGroup.sol
- contracts/interfaces/IYieldGroupBase.sol
- contracts/interfaces/IYieldGroupFRV.sol
E-Mode
Section titled “E-Mode”Scope: E-Mode support in the Core pool on BNB Chain.
Detailed scope
- Pull request #614 in the
venus-protocolrepository:- contracts/Comptroller/Diamond/facets/FacetBase.sol
- contracts/Comptroller/Diamond/facets/MarketFacet.sol
- contracts/Comptroller/Diamond/facets/PolicyFacet.sol
- contracts/Comptroller/Diamond/facets/RewardFacet.sol
- contracts/Comptroller/Diamond/facets/SetterFacet.sol
- contracts/Comptroller/Diamond/interfaces/IFacetBase.sol
- contracts/Comptroller/Diamond/interfaces/IMarketFacet.sol
- contracts/Comptroller/Diamond/interfaces/ISetterFacet.sol
- contracts/Comptroller/Diamond/Diamond.sol
- contracts/Comptroller/ComptrollerInterface.sol
- contracts/Comptroller/ComptrollerLensInterface.sol
- contracts/Comptroller/ComptrollerStorage.sol
- contracts/Comptroller/Types/PoolMarketId.sol
- contracts/InterfacesV8.sol
- contracts/Lens/ComptrollerLens.sol
- contracts/Lens/VenusLens.sol
- contracts/Liquidator/Liquidator.sol
- contracts/Tokens/VAI/VAIController.sol
- contracts/Tokens/VTokens/VToken.sol
- contracts/Utils/ErrorReporter.sol
Risk Stewards V1 and Core Pool Comptroller Interface Compatibility with Isolated Pools
Section titled “Risk Stewards V1 and Core Pool Comptroller Interface Compatibility with Isolated Pools”Scope: Venus Risk Steward contracts, compatible with the Risk Oracle contracts from Chaos Labs. These stewards are authorized to perform risk parameter changes (initially, only increasing the supply and borrow caps) without requiring VIPs. Additionally, the interface of the Comptroller contract on BNB Chain is extended with the functions defined in the Comptroller contract for Isolated Pools, simplifying interactions with both Comptroller contracts. Enabled in VIP-544.
- Certik audit report (2025/02/19)
- Quantstamp audit report (2025/02/13)
- FairyProof audit report (2025/02/26)
Detailed scope
-
Pull request #115 in the
governance-contractsrepository:- contracts/RiskSteward/RiskStewardReceiver.sol – entry point of the feature
- contracts/RiskSteward/MarketCapsRiskSteward.sol
- contracts/RiskSteward/IRiskSteward.sol
- contracts/RiskSteward/IRiskStewardReceiver.sol
- Interfaces with external contracts:
- contracts/interfaces/ICorePoolComptroller.sol
- contracts/interfaces/IIsolatedPoolsComptroller.sol
- contracts/interfaces/IRiskOracle.sol
- contracts/interfaces/IVToken.sol
-
Pull request #548 in the
venus-protocolrepository:- contracts/Comptroller/Diamond/facets/MarketFacet.sol
- contracts/Comptroller/Diamond/facets/PolicyFacet.sol
- contracts/Comptroller/Diamond/facets/SetterFacet.sol
- contracts/Comptroller/Diamond/interfaces/IMarketFacet.sol
- contracts/Comptroller/Diamond/interfaces/IPolicyFacet.sol
- contracts/Comptroller/Diamond/interfaces/ISetterFacet.sol
Risk Stewards V2
Section titled “Risk Stewards V2”Scope: Expansion of the Venus Risk Steward framework. In addition to supply and borrow caps, the stewards can now update collateral factors (with their liquidation thresholds) and interest rate models, governed by safe-delta and timelock controls. Recommendations are published to a Venus-owned Risk Oracle by whitelisted risk parameter providers, and updates can be executed locally on BNB Chain or forwarded cross-chain via LayerZero to destination receivers on other supported chains. Enabled in VIP-592.
Detailed scope
- Pull request #163 in the
governance-contractsrepository:- contracts/RiskSteward/RiskOracle.sol
- contracts/RiskSteward/RiskStewardReceiver.sol
- contracts/RiskSteward/DestinationStewardReceiver.sol
- contracts/RiskSteward/BaseRiskSteward.sol
- contracts/RiskSteward/MarketCapsRiskSteward.sol
- contracts/RiskSteward/CollateralFactorsRiskSteward.sol
- contracts/RiskSteward/IRMRiskSteward.sol
- contracts/RiskSteward/Interfaces/IRiskOracle.sol
- contracts/RiskSteward/Interfaces/IRiskSteward.sol
- contracts/RiskSteward/Interfaces/IRiskStewardReceiver.sol
- contracts/RiskSteward/Interfaces/IDestinationStewardReceiver.sol
Native Token Gateway upgrade
Section titled “Native Token Gateway upgrade”Scope: NativeTokenGateway contract upgrade, to make it compatible with the Core pool on BNB Chain. Enabled in VIP-543
Detailed scope
- Pull request #8
- contracts/Gateway/Interfaces/IVToken.sol
- contracts/Gateway/INativeTokenGateway.sol
- contracts/Gateway/Interfaces/IWrappedNative.sol
- contracts/Gateway/NativeTokenGateway.sol
Venus ERC4626 Vaults
Section titled “Venus ERC4626 Vaults”Scope: ERC-4626 wrapper for Venus markets for isolated pools, enabling seamless integration with external DeFi protocols that follow the ERC-4626 standard.
- Certik audit report (2025/05/14)
- Pessimistic audit report (2025/05/02)
- FairyProof audit report (2025/04/14)
Detailed scope
-
Pull request #497 in the
isolated-poolsrepository.- contracts/ERC4626/VenusERC4626.sol
- contracts/ERC4626/VenusERC4626Factory.sol
- contracts/ERC4626/Interfaces/IComptroller.sol
- contracts/ERC4626/Interfaces/IProtocolShareReserve.sol
- contracts/ERC4626/Interfaces/IRewardsDistributor.sol
-
Pull request #137 in the
protocol-reserverepository- contracts/Interfaces/IProtocolShareReserve.sol
asBNB Oracle
Section titled “asBNB Oracle”Scope: Correlated oracle to get the price of asBNB token on BNB Chain, taking into account first the onchain conversion rate asBNB to slisBNB.
Detailed scope
- Pull Request #275
- Files:
- contracts/oracles/AsBNBOracle.sol
zkETH Oracle
Section titled “zkETH Oracle”Scope: Correlated oracle to get the price of zkETH token on ZKsync, taking into account first the onchain conversion rate zkETH to rzkETH.
Detailed scope
- Pull Request #269
- Files:
- contracts/oracles/ZkETHOracle.sol
ERC4626 Oracle
Section titled “ERC4626 Oracle”Scope: Correlated oracle to get the price of ERC4626 tokens, taking into account first the onchain conversion rate of the ERC4626 token with its underlying token.
Detailed scope
- Pull Request #253
- Files:
- contracts/oracles/ERC4626Oracle.sol
PendleOracle upgrade
Section titled “PendleOracle upgrade”Scope: Upgrade the current implementation of the PendleOracle contract to add support for Pendle’s getPtToSyRate(). This allows the ability to add yield tokens as a base, as an alternative to using the underlying asset directly.
Detailed scope
- Pull Request #240
- Files:
- contracts/oracles/PendleOracle.sol
- contracts/interfaces/IPendlePtOracle.sol
ACMCommandsAggregator
Section titled “ACMCommandsAggregator”Scope: ACMCommandsAggregator is a permissionless contract, to be deployed to the remote networks (every network except BNB Chain), to facilitate the configuration (grants and revokes) of permissions in the AccessControlManager of each network.
Detailed scope
- Pull Request #90
- Files:
- contracts/Utils/ACMCommandsAggregator.sol
TwoKinksInterestRate
Section titled “TwoKinksInterestRate”Scope: Develop new interest rate model for the core pool (here) and for the isolated pools (here), supporting two different kinks and therefore three different slopes. Enabled in VIP-385.
- Certik audit report (2024/07/31)
- Fairyproof audit report (2024/08/04)
- Quantstamp audit report (2024/08/19)
Detailed scope
Support for the Core pool
- Pull Request #494
- Files:
- contracts/InterestRateModels/InterestRateModelV8.sol
- contracts/InterestRateModels/TwoKinksInterestRateModel.sol
Support for the Isolated pools
- Pull Request #417
- Files:
- contracts/TwoKinksInterestRateModel.sol
Unlist markets
Section titled “Unlist markets”Scope: Changes in the isolated pools and core contracts to support unlisting markets. Fix in the core pool the behaviour of borrow caps set to zero. Enabled in VIP-361.
Detailed scope
Unlist markets
- Pull request #429 in the
venus-protocolrepo:- Change: allow Governance the logical deletion of markets from the Comptroller contract
- contracts/Comptroller/Diamond/facets/MarketFacet.sol
- contracts/Comptroller/Diamond/facets/PolicyFacet.sol
- Change: allow Governance the logical deletion of markets from the Comptroller contract
- Pull request #349 in the
isolated-poolsrepo:- Change: allow Governance the logical deletion of markets from the Comptroller contract
- Files: contracts/Comptroller.sol
Fix Borrow Cap 0 Logic
- Pull request #438 in the
venus-protocolrepo:- Change: previously, a borrow cap of 0 meant no-caps. That is error-prone. With the new logic, a borrow cap of 0 won’t allow new borrows
- contracts/Comptroller/ComptrollerStorage.sol
- contracts/Comptroller/Diamond/facets/PolicyFacet.sol
- contracts/Comptroller/Diamond/facets/SetterFacet.sol
- Change: previously, a borrow cap of 0 meant no-caps. That is error-prone. With the new logic, a borrow cap of 0 won’t allow new borrows
Oracle for Ether.fi LRT tokens (weETHs and weETHk) on Ethereum
Section titled “Oracle for Ether.fi LRT tokens (weETHs and weETHk) on Ethereum”Scope: specific oracle for the tokens weETHs and weETHk on Ethereum, using an Accountant contract under the hood, provided by the Ether.fi project. Enabled in VIP-355.
Detailed scope
- Pull request #213
- contracts/oracles/WeETHAccountantOracle.sol
- contracts/interfaces/IAccountant.sol
VBNBAdmin: new function setInterestRateModel
Section titled “VBNBAdmin: new function setInterestRateModel”Scope: Update of the VBNBAdmin contract to integrate the AccessControlManager within the setInterestRateModel function. This will allow more timelocks (not only the Normal Timelock) to execute this function, so Fast-track and Critical VIPs will be able to update the interest rate model on the VBNB market. Enabled in VIP-343.
Detailed scope
- Pull request #487
- contracts/Admin/VBNBAdmin.sol
- contracts/Admin/VBNBAdminStorage.sol
Oracle for sfrxETH on Ethereum
Section titled “Oracle for sfrxETH on Ethereum”Scope: specific oracle for the token sfrxETH on Ethereum, using the SfrxEthFraxOracle oracle under the hood, provided by the FRAX project. Enabled in VIP-329.
Detailed scope
- Pull request #191
- contracts/oracles/SFrxETHOracle.sol
Multichain Governance
Section titled “Multichain Governance”Scope: Cross-chain messaging and execution of VIPs on non-BNB chains. Integration of Multichain Governance in Venus. Enabled in VIP-330 and VIP-331.
- OpenZeppelin audit report - 2024/01/19
- Certik audit report - 2024/02/26
- Cantina audit report - 2024/04/25
- Quantstamp audit report - 2024/04/29
Detailed scope
- Pull request #21
- contracts/Cross-chain/BaseOmnichainControllerDest.sol
- contracts/Cross-chain/BaseOmnichainControllerSrc.sol
- contracts/Cross-chain/OmnichainExecutorOwner.sol
- contracts/Cross-chain/OmnichainGovernanceExecutor.sol
- contracts/Cross-chain/OmnichainProposalSender.sol
- contracts/Cross-chain/interfaces/IGovernananceBravoDelegate.sol
- contracts/Cross-chain/interfaces/ITimelock.sol
- contracts/Governance/TimelockV8.sol
Time-based contracts and seize XVS rewards
Section titled “Time-based contracts and seize XVS rewards”Scope: Changes in the isolated pools, core and oracle contracts to support blockchains where the block rate is not constant (i.e. Arbitrum). Add to the Core pool the feature to seize XVS rewards via VIP.
- Certik audit report (2024/01/17)
- Quantstamp audit report (2024/03/19)
- Fairyproof audit report (2024/03/04)
Detailed scope
-
Pull request #324 in the
isolated-poolsrepo -
Change: Timestamp-based Isolated lending contracts
- contracts/JumpRateModelV2.sol
- contracts/Lens/PoolLens.sol
- contracts/Rewards/RewardsDistributor.sol
- contracts/Rewards/RewardsDistributorStorage.sol
- contracts/Shortfall/Shortfall.sol
- contracts/Shortfall/ShortfallStorage.sol
- contracts/VToken.sol
- contracts/VTokenInterfaces.sol
- contracts/WhitePaperInterestRateModel.sol
- contracts/lib/constants.sol
-
Pull request #418 in the
venus-protocolrepo -
Change: Time-based XVSVault
- contracts/XVSVault/TimeManagerV5.sol
- contracts/XVSVault/XVSVault.sol
- contracts/XVSVault/XVSVaultStorage.sol
-
Pull request #128 in the
oraclerepo -
Change: Add Arbitrum sequencer downtime validation for Chainlink Oracle
- contracts/oracles/SequencerChainlinkOracle.sol
- contracts/oracles/ChainlinkOracle.sol
-
Change: Reduce reserves with available cash
-
Pull request #417 in the
venus-protocolrepo -
Change: Seize XVS rewards
- contracts/Comptroller/Diamond/facets/RewardFacet.sol
-
Pull request #410 in the
venus-protocolrepo -
Change: Dynamically Set Addresses for XVS and XVSVToken
- contracts/Comptroller/ComptrollerStorage.sol
- contracts/Comptroller/Diamond/Diamond.sol
- contracts/Comptroller/Diamond/facets/FacetBase.sol
- contracts/Comptroller/Diamond/facets/RewardFacet.sol
- contracts/Comptroller/Diamond/facets/SetterFacet.sol
VAI Controller
Section titled “VAI Controller”Scope: VAIController contract, fixing how seized amounts during VAI liquidations are calculated by considering the original VAI debt plus accrued interest. Enabled in VIP-299.
- Certik audit report (2024/04/26)
- Pessimistic audit report (2024/05/02)
- Fairyproof audit report (2024/04/18)
Detailed scope
- Pull request #467
- contracts/Tokens/VAI/VAIController.sol
XVS bridge - Mesh architecture
Section titled “XVS bridge - Mesh architecture”Scope: Enable XVS transfers between networks other than BNB Chain, for example, between Ethereum mainnet and opBNB mainnet. Detailed scope. Enabled in VIP-292.
Correlated token oracles
Section titled “Correlated token oracles”Scope: Set of oracles for tokens whose price is highly correlated with the price of another token. This definition includes liquid staked tokens (like wstETH, weETH, WBETH, ankrBNB, BNBx, slisBNB, stkBNB), ERC-4626 tokens (like sFRAX, sfrxETH) and any token convertible to another token on-chain (like the Pendle PT tokens). WeETHOracle was enabled in VIP-290. AnkrBNBOracle, BNBxOracle, SlisBNBOracle, and StkBNBOracle were enabled in VIP-293.
- Certik audit report (2024/04/12)
- Quantstamp audit report (2024/04/12)
- Fairyproof audit report (2024/03/28)
Detailed scope
- Pull request #165
- contracts/oracles/AnkrBNBOracle.sol
- contracts/oracles/BNBxOracle.sol
- contracts/oracles/OneJumpOracle.sol
- contracts/oracles/PendleOracle.sol
- contracts/oracles/SFraxOracle.sol
- contracts/oracles/SFrxETHOracle.sol
- contracts/oracles/SlisBNBOracle.sol
- contracts/oracles/StkBNBOracle.sol
- contracts/oracles/WBETHOracle.sol
- contracts/oracles/WeETHOracle.sol
- contracts/oracles/WstETHOracle.sol
- contracts/oracles/common/CorrelatedTokenOracle.sol
Native token gateway
Section titled “Native token gateway”Scope: NativeTokenGateway contract, which facilitates interaction (borrow, supply, repay, and redeem) with markets where the underlying token is a wrapped version of the native token (for example, WETH on Ethereum or WBNB on BNB Chain). Enabled in VIP-276.
- Certik audit report (2024/02/26)
- Pessimistic audit report (2024/02/29)
- Quantstamp audit report (2024/03/01)
Detailed scope
- Pull request #361
- contracts/Comptroller.sol
- contracts/ComptrollerStorage.sol
- contracts/Gateway/Interfaces/IVtoken.sol
- contracts/Gateway/Interfaces/IWrappedNative.sol
- contracts/Gateway/NativeTokenGateway.sol
- contracts/VToken.sol
- contracts/VTokenInterfaces.sol
- Pull request #442
- contracts/Tokens/VTokens/VBep20.sol
- contracts/Tokens/VTokens/VToken.sol
- contracts/Comptroller/Diamond/facets/MarketFacet.sol
Oracle for wstETH
Section titled “Oracle for wstETH”Scope: Oracle for wstETH, using the exchange rate wstETH/stETH from the stETH contract on Ethereum, assuming 1:1 for the conversion rate stETH:ETH, and converting ETH to USD using the Resilient Oracles.
Detailed scope
- Pull request #155 in the
oraclerepo- contracts/oracles/WstETHOracle.sol
Token converters
Section titled “Token converters”Scope: Token converter contracts. These contracts will allow the protocol to convert the income generated to the needed tokens, following the Tokenomics. Enabled in VIP-245 and VIP-248.
- Token converters
- Private conversions (optimization to avoid the payment of incentives to third parties when the conversion can be completed internally)
Detailed scope
-
Pull request #9 in the
protocol-reserverepo.- contracts/TokenConverter/AbstractTokenConverter.sol
- contracts/TokenConverter/IAbstractTokenConverter.sol
- contracts/TokenConverter/RiskFundConverter.sol
- contracts/TokenConverter/XVSVaultConverter.sol
- contracts/ProtocolReserve/RiskFundStorage.sol
- contracts/ProtocolReserve/RiskFundV2.sol
- contracts/ProtocolReserve/XVSVaultTreasury.sol
- contracts/Utils/Constants.sol
- contracts/Utils/Validators.sol
-
Pull request #35 in the
protocol-reserverepo.- contracts/Interfaces/IConverterNetwork.sol
- contracts/TokenConverter/AbstractTokenConverter.sol
- contracts/TokenConverter/ConverterNetwork.sol
- contracts/TokenConverter/IAbstractTokenConverter.sol
- contracts/TokenConverter/RiskFundConverter.sol
- contracts/TokenConverter/SingleTokenConverter.sol
- contracts/Utils/ArrayHelpers.sol
XVS bridge and multichain deployment
Section titled “XVS bridge and multichain deployment”Scope: token-bridge repository, with contracts to bridge XVS between BNB Chain and other EVM-compatible networks, such as Ethereum. Extend the OFTV2 LayerZero contracts by adding custom security rules. XVS and TokenController contracts to be used on the destination chains (initially Ethereum mainnet, Arbitrum One, Polygon zkEVM, and opBNB). Moreover, the audit scope included a new VTreasuryV8 contract and changes in the Resilient Oracle and Isolated Pools to make them compatible with other networks. Enabled in VIP-232.
Detailed scope
-
Certik, Quantstamp and Peckshield audited:
- token-bridge repository
- Branch:
develop - Last commit:
91b640fffb0c374bdb63a0f6e8e756793e892ad6 - List of files in the scope:
- contracts/Bridge/BaseXVSProxyOFT.sol
- contracts/Bridge/XVSBridgeAdmin.sol
- contracts/Bridge/XVSProxyOFTDest.sol
- contracts/Bridge/XVSProxyOFTSrc.sol
- contracts/Bridge/token/TokenController.sol
- contracts/Bridge/token/XVS.sol
- contracts/Bridge/interfaces/IXVSProxyOFT.sol
- contracts/Bridge/interfaces/IXVS.sol
-
Moreover, Peckshield audited this:
- https://github.com/VenusProtocol/venus-protocol/pull/345
- This is the treasury contract used in the different networks
- Inspired by the VTreasury contract deployed to BNB chain (solidity 0.5.16, here)
- Main chain: adapted to solidity 0.8.20
- Last commit: 0a058575a48b3b1d55cf257f2ade768b749f0fc6
- Resilient Oracles change
- https://github.com/VenusProtocol/oracle/pull/124
- Rename variables related to the native token on each chain and the VAI token
- Last commit: a0a36bcd94e5acd41e137e3cef711484f86eb397
- https://github.com/VenusProtocol/oracle/pull/124
- https://github.com/VenusProtocol/venus-protocol/pull/345
-
Apart from the previous scopes, Quantstamp also audited:
- Isolated pools change
- https://github.com/VenusProtocol/isolated-pools/pull/294
- Convert into immutable the number of blocks per year, so it can be configured per chain during the deployment
- Last commit: 5e660bffec987b3d31aba3f11b5c4e35f689f646
- https://github.com/VenusProtocol/isolated-pools/pull/294
- XVSVault
- https://github.com/VenusProtocol/venus-protocol/tree/develop/contracts/XVSVault
- Last commit: a158f8c335d0cfad71f1d2c27af6b0d92f4abe41
- Protocol Share Reserve
- https://github.com/VenusProtocol/protocol-reserve/blob/develop/contracts/ProtocolReserve/ProtocolShareReserve.sol
- Last commit: e396119c4442b7811fbeb14ad0851afec1a9d0fa
- Access Control Manager
- https://github.com/VenusProtocol/governance-contracts/blob/main/contracts/Governance/AccessControlManager.sol
- Last commit: 358bed476af7d7d871bf59e77c9daba22a7c2339
- Isolated pools change
Venus Prime
Section titled “Venus Prime”Scope: Prime and PrimeLiquidityProvider contracts, to manage the eligibility of Prime tokens and the rewards distributions.
Enabled in VIP-201, VIP-202, VIP-203, VIP-206 and VIP-210. Updated in VIP-225.
- OpenZeppelin audit report (2023/10/03)
- Certik audit report (2023/11/13)
- Peckshield audit report (2023/08/26)
- Fairyproof audit report (2023/09/10)
- Code4rena contest (2023/09/28)
- Certik audit report (2023/12/19) - Venus Prime update
- Allow mint VAI only to Prime holder
- Support for Isolated pools
- Support for networks without a constant block rate (for example, Arbitrum)
Detailed scope
-
Pull request #196 in the core pool repo.
- Prime feature:
- contracts/Tokens/Prime/IPrime.sol
- contracts/Tokens/Prime/Prime.sol
- contracts/Tokens/Prime/PrimeStorage.sol
- contracts/Tokens/Prime/PrimeLiquidityProvider.sol
- Comptroller integration:
- contracts/Comptroller/ComptrollerStorage.sol
- contracts/Comptroller/Diamond/facets/PolicyFacet.sol
- contracts/Comptroller/Diamond/facets/SetterFacet.sol
- XVSVault integration:
- contracts/XVSVault/XVSVault.sol
- contracts/XVSVault/XVSVaultStorage.sol
- Libs:
- contracts/Tokens/Prime/libs/Scores.sol
- contracts/Tokens/Prime/libs/FixedMath.sol
- contracts/Tokens/Prime/libs/FixedMath0x.sol
- Prime feature:
-
Venus Prime update. Enabled in VIP-225.
- Pull request #407
- contracts/Tokens/Prime/IPrime.sol
- contracts/Tokens/Prime/Interfaces/IPrime.sol
- contracts/Tokens/Prime/Prime.sol
- contracts/Tokens/Prime/PrimeLiquidityProvider.sol
- contracts/Tokens/Prime/PrimeStorage.sol
- contracts/Utils/TimeManager.sol
- contracts/Tokens/VAI/VAIController.sol
- contracts/Tokens/VAI/VAIControllerStorage.sol
- Pull request #327
- contracts/Comptroller.sol
- contracts/ComptrollerStorage.sol
- contracts/VToken.sol
- Pull request #407
Automatic income allocation
Section titled “Automatic income allocation”Scope: Changes in the VToken contracts of the Core and IL pools (including the VBNB market), to send automatically the interest reserves to the new ProtocolShareReserve contract, where configured rules will distribute the income following the tokenomics of the project. Enabled in VIP-189, VIP-192, VIP-193 and VIP-194.
- Quantstamp audit report (2023/09/13)
- Certik audit report (2023/09/12)
- Peckshield audit report (2023/08/12)
- Fairyproof audit report (2023/08/03)
Detailed scope
- Core pool - interest reserves:
- Pull request: https://github.com/VenusProtocol/venus-protocol/pull/262
- Files:
- contracts/Tokens/VTokens/VToken.sol
- contracts/Tokens/VTokens/VTokenInterfaces.sol
- contracts/Utils/ErrorReporter.sol
- Harvesting BNB income:
- Pull request: https://github.com/VenusProtocol/venus-protocol/pull/289
- Files:
- contracts/Admin/VBNBAdmin.sol
- contracts/Admin/VBNBAdminStorage.sol
- Isolated pools - Liquidations & interest reserves:
- Pull request: https://github.com/VenusProtocol/isolated-pools/pull/207
- Files:
- contracts/VToken.sol
- contracts/VTokenInterfaces.sol
- Distribute the collected incomes -
ProtocolShareReservecontract- Branch
developin the repo https://github.com/VenusProtocol/protocol-reserve. Last commit to consider: dfb653d2e3fe163a248bbd9f8951cd6b96b06390 - Files:
- contracts/ProtocolReserve/ProtocolShareReserve.sol
- contracts/Interfaces/IIncomeDestination.sol
- contracts/Interfaces/IPrime.sol
- contracts/Interfaces/IProtocolShareReserve.sol
- contracts/Interfaces/IVToken.sol
- contracts/Interfaces/ComptrollerInterface.sol
- contracts/Interfaces/PoolRegistryInterface.sol
- Branch
Diamond Comptroller
Section titled “Diamond Comptroller”Scope: Upgrade of the Comptroller contract in the Core pool, implementing the Diamond pattern. Enabled in the VIP-174.
- Fairyproof audit report (2023/06/25)
- Peckshield audit report (2023/07/18)
- Certik audit report (2023/08/03)
- OpenZeppelin audit report (2023/08/17)
- Quantstamp audit report (2023/09/19)
Detailed scope
Code to be audited: https://github.com/VenusProtocol/venus-protocol/pull/224 Last commit: 331394866b0b78ea3b65efe03931acd582d0382e Files in the scope of the audit:
contracts/Comptroller/ComptrollerStorage.solcontracts/Comptroller/Diamond/Diamond.solcontracts/Comptroller/Diamond/facets/FacetBase.solcontracts/Comptroller/Diamond/facets/MarketFacet.solcontracts/Comptroller/Diamond/facets/PolicyFacet.solcontracts/Comptroller/Diamond/facets/RewardFacet.solcontracts/Comptroller/Diamond/facets/SetterFacet.solcontracts/Comptroller/Diamond/facets/XVSRewardsHelper.solcontracts/Comptroller/Diamond/interfaces/IDiamondCut.solcontracts/Comptroller/Diamond/interfaces/IMarketFacet.solcontracts/Comptroller/Diamond/interfaces/IPolicyFacet.solcontracts/Comptroller/Diamond/interfaces/IRewardFacet.solcontracts/Comptroller/Diamond/interfaces/ISetterFacet.solcontracts/Lens/ComptrollerLens.solcontracts/Lens/SnapshotLens.sol
BUSDLiquidator
Section titled “BUSDLiquidator”Scope: Contract to forcibly liquidate BUSD positions after enabling the “forced liquidations” feature in the BUSD market, in the VIP-191
Detailed scope
Code to be audited: https://github.com/VenusProtocol/venus-protocol/pull/362 Last commit: 592b022723740c6b7b066445f407f12253d85637
Forced liquidations in the Isolated pools
Section titled “Forced liquidations in the Isolated pools”Scope: Upgrade of the Comptroller contract in the Isolated pools, adding the “forced liquidations” feature, enabled on VIP-186
Forced liquidations in the Core pool
Section titled “Forced liquidations in the Core pool”Scope: Upgrade of the Comptroller contract in the Core pool, adding the “forced liquidations” feature, enabled on VIP-172
RiskFund and Shortfall handling
Section titled “RiskFund and Shortfall handling”Scope: RiskFund, Shortfall and ProtocolShareReserve contracts in the isolated-pools repo, enabled on VIP-170
These contracts were in the scope of the audits done before the launch of Isolated Pools in the VIP-134. Some upgrades were done on these contracts, and a new round of audits were done focused on these changes.
Peg Stability Module (PSM)
Section titled “Peg Stability Module (PSM)”Scope: Peg Stability Module contract for VAI/USDT, enabled on VIP-157
- Quantstamp audit report - 2023/08/07
- Certik audit report - 2023/05/24
- Peckshield audit report - 2023/04/26
- Hacken audit report - 2023/06/26
Oracles upgrade (2023/07/24)
Section titled “Oracles upgrade (2023/07/24)”Scope: Upgrade of the Resilient Price Feeds, enabled on VIP-145.
Oracles
Section titled “Oracles”Scope: New Resilient Price Feeds, enabled on VIP-123.
- OpenZeppelin audit report - 2023/06/06
- Peckshield audit report - 2023/04/24
- Certik audit report - 2023/05/22
- Hacken audit report - 2023/04/26
- HashEx vulnerability report - 2024/02/01. No risks, because the TWAP oracle is not used at all by the Venus Protocol. The
TwapOracleis removed from the repository to avoid any confusion.
Vaults
Section titled “Vaults”Scope: Upgrade of the XVSVault, VAIVault and VRTVault, enabled on VIP-127.
- Quantstamp audit report - 2023/05/19
- Peckshield audit report 1 - 2023/03/22
- Peckshield audit report 2 - 2023/04/19
- Fairyproof audit report - 2023/05/17
- Certik audit report - 2023/06/04
Isolated pools
Section titled “Isolated pools”Scope: Isolated pools, first enabled on VIP-134.
- Certik audit report
- Certik audit report (RewardsDistributor)
- Peckshield audit report 1
- Peckshield audit report 2
- Hacken audit report
- Code4rena contest - 2023/05/15
Automatic Income Allocation in the Liquidator contract
Section titled “Automatic Income Allocation in the Liquidator contract”Scope: Integration of the Automatic Income Allocation into the Liquidator contract used in the Core pool on BNB chain.
- OpenZeppelin audit report (2023/July/20)
- Quantstamp audit report (2023/July/17)
- Certik audit report (2023/July/4)
- Peckshield audit report (2023/July/5)
Detailed scope
- Pull request #241 in the
venus-protocolrepo.- contracts/Liquidator/Liquidator.sol
- contracts/Liquidator/LiquidatorStorage.sol
Swap router
Section titled “Swap router”Scope: SwapRouter contract, enabled on VIP-131.
- OpenZeppelin audit report - 2023/06/16
- Certik audit report - 2023/05/30
- Peckshield audit report - 2023/04/19
- Hacken audit report - 2023/06/28
VToken
Section titled “VToken”Scope: Delegate Borrowing in Venus. Upgrade of BUSD, USDC, USDT, BTCB and ETH markets, to reduce the risks on Venus that resulted from the September 2022 BNB Bridge incident. Executed on VIP-99.