Skip to content

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:

  1. resolve the live proxy implementation, diamond facets, beacon, or clone implementation at a recorded block;
  2. map that deployed code to the exact reviewed commit and read the report’s in-scope and out-of-scope sections;
  3. review findings, acknowledged risks, remediation status, assumptions, and any later code changes—not only the auditor name or report count;
  4. verify live permissions, pause state, oracle configuration, risk parameters, and external dependencies separately; and
  5. 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.

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.

Detailed scope
  • Bailsec: the isolated-pools repository at commit 5b73f3cbb022a0b34bbf701c017ebac51e4ba8d8, resolutions reviewed at commit fcbecf35c5465b0ae48d534c3421f3f22e4a4fbb.
  • Sherlock: the isolated-pools repository at commit 7b02a6082d213c01dc51614baba47f520eedf193 (final 01714a3b8a47383d87bea329c090b0b8affa3bd6), and the protocol-reserve repository at commit a7b8f12de27657378d4173432852c70b000339e2 (final 4e589e25b99dcdf65bd72e63be06271d828da560):
    • 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-pools repository at commit 7e3c344d5dcc60e5829ff583f6a1e2218112cb6b, and pull request #168 in the protocol-reserve repository at commit a7b8f12de27657378d4173432852c70b000339e2:
    • 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.

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
  • Pull request #74 in the venus-periphery repository:
    • CollateralGateway.sol
  • Pull requests #710 and #714 in the venus-protocol repository:
    • MarketFacet.sol, PrimeV2.sol, PrimeLens.sol (#710)
    • ComptrollerLens.sol (#714)

Scope: BStockLiquidator, the liquidation contract for bStock collateral.

Detailed scope
  • Pull request #683 in the venus-protocol repository, 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.

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-periphery repository, at commit ecf8d8f93a440110fa8cd8f23b908cd5ef454004:
    • 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.

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-hub repository, at commit 6715424bd06c93ab6f63170ed407431d64374845:
    • contracts/lens/HubLens.sol
    • contracts/lens/HubCapacityMath.sol
    • contracts/Hub/Hub.sol
    • contracts/adapters/AdapterCoreV1.sol
    • contracts/adapters/AdapterFRV.sol

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-hub repository, at commit 3450b9dc41dbdef1655965f21395bab20d982565, with the fixes in pull request #25. The report reviewed the band as PriceGuards.sol; the fixes renamed it to NavGuard.sol and changed YieldGroupBase.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

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-hub repository, 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

Scope: E-Mode support in the Core pool on BNB Chain.

Detailed scope
  • Pull request #614 in the venus-protocol repository:
    • 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.

Detailed scope
  • Pull request #115 in the governance-contracts repository:

    • 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-protocol repository:

    • 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

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-contracts repository:
    • 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

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

Scope: ERC-4626 wrapper for Venus markets for isolated pools, enabling seamless integration with external DeFi protocols that follow the ERC-4626 standard.

Detailed scope
  • Pull request #497 in the isolated-pools repository.

    • 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-reserve repository

    • contracts/Interfaces/IProtocolShareReserve.sol

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

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

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

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

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

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.

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

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-protocol repo:
    • Change: allow Governance the logical deletion of markets from the Comptroller contract
      • contracts/Comptroller/Diamond/facets/MarketFacet.sol
      • contracts/Comptroller/Diamond/facets/PolicyFacet.sol
  • Pull request #349 in the isolated-pools repo:
    • 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-protocol repo:
    • 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

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

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

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.

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.

Detailed scope
  • Pull request #324 in the isolated-pools repo

  • 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-protocol repo

  • Change: Time-based XVSVault

    • contracts/XVSVault/TimeManagerV5.sol
    • contracts/XVSVault/XVSVault.sol
    • contracts/XVSVault/XVSVaultStorage.sol
  • Pull request #128 in the oracle repo

  • 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 #414 in the venus-protocol repo
      • contracts/Tokens/VTokens/VToken.sol
    • Pull request #337
      • contracts/VToken.sol
  • Pull request #417 in the venus-protocol repo

  • Change: Seize XVS rewards

    • contracts/Comptroller/Diamond/facets/RewardFacet.sol
  • Pull request #410 in the venus-protocol repo

  • 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

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.

Detailed scope
  • Pull request #467
    • contracts/Tokens/VAI/VAIController.sol

Scope: Enable XVS transfers between networks other than BNB Chain, for example, between Ethereum mainnet and opBNB mainnet. Detailed scope. Enabled in VIP-292.

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.

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

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.

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

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 oracle repo
    • contracts/oracles/WstETHOracle.sol

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.

Detailed scope
  • Pull request #9 in the protocol-reserve repo.

    • 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-reserve repo.

    • 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

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

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.

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
  • 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

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.

Detailed scope
  • Core pool - interest reserves:
  • Harvesting BNB income:
  • Isolated pools - Liquidations & interest reserves:
  • Distribute the collected incomes - ProtocolShareReserve contract
    • Branch develop in 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

Scope: Upgrade of the Comptroller contract in the Core pool, implementing the Diamond pattern. Enabled in the VIP-174.

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.sol
  • contracts/Comptroller/Diamond/Diamond.sol
  • 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/facets/XVSRewardsHelper.sol
  • contracts/Comptroller/Diamond/interfaces/IDiamondCut.sol
  • contracts/Comptroller/Diamond/interfaces/IMarketFacet.sol
  • contracts/Comptroller/Diamond/interfaces/IPolicyFacet.sol
  • contracts/Comptroller/Diamond/interfaces/IRewardFacet.sol
  • contracts/Comptroller/Diamond/interfaces/ISetterFacet.sol
  • contracts/Lens/ComptrollerLens.sol
  • contracts/Lens/SnapshotLens.sol

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

Scope: Upgrade of the Comptroller contract in the Isolated pools, adding the “forced liquidations” feature, enabled on VIP-186

Scope: Upgrade of the Comptroller contract in the Core pool, adding the “forced liquidations” feature, enabled on VIP-172

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.

Scope: Peg Stability Module contract for VAI/USDT, enabled on VIP-157

Scope: Upgrade of the Resilient Price Feeds, enabled on VIP-145.

Scope: New Resilient Price Feeds, enabled on VIP-123.

Scope: Upgrade of the XVSVault, VAIVault and VRTVault, enabled on VIP-127.

Scope: Isolated pools, first enabled on VIP-134.

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.

Detailed scope
  • Pull request #241 in the venus-protocol repo.
    • contracts/Liquidator/Liquidator.sol
    • contracts/Liquidator/LiquidatorStorage.sol

Scope: SwapRouter contract, enabled on VIP-131.

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.