Summary
Deploys the new DeviationBoundedOracle (DBO) on BNB Chain mainnet and upgrades the Core Pool Comptroller (Diamond), VAIController, and ComptrollerLens to integrate it. The DBO wraps the existing ResilientOracle with a per-market rolling 15-minute min/max price window, returning protected (min(spot, windowMin), max(spot, windowMax)) pricing on the borrow path when spot deviates beyond the per-market threshold. Phase 1 ships DBO inactive for 23 of 24 assets and active only for TRX as a low-liquidity pilot — Phase 2 (separate future VIP) will activate the remaining assets after the keeper and parameters are validated.
Description
This VIP performs a one-shot deployment of the DBO infrastructure plus the Comptroller and VAIController upgrades required to integrate it. The Comptroller upgrade routes borrow-path pricing through DBO; the liquidation path is unchanged and continues to use the existing ResilientOracle spot price. ACM permissions are granted in a single batch via ACMCommandsAggregator (42 grants total), adding a Keeper role and Guardian-callable governance setters on top of the existing permission set. Per-asset configs are seeded in step 13: 23 assets with isBoundedPricingEnabled = false (DBO returns (spot, spot) → no behavioural change), TRX with isBoundedPricingEnabled = true (live protection active).
Actions
This VIP performs the following 13 actions on BNB Chain:
- ACMCommandsAggregator: push permission batch — load the 42 grants for the Keeper role and Guardian-callable governance setters.
- Grant aggregator
DEFAULT_ADMIN_ROLEon the AccessControlManager so it can execute the grants in step 3. - Execute the batched permission grants via
ACMCommandsAggregator. - Revoke
DEFAULT_ADMIN_ROLEfrom the aggregator after execution. - Upgrade Unitroller implementation to the new Diamond-based implementation (
0x82cA18785BBbacBeD1C4f482921E2B2E989D8C08). - Set the new Unitroller implementation on the Comptroller proxy.
diamondCut— apply the facet cut fromvips/vip-665/utils/cut-params-bscmainnet.json.- Wire new
ComptrollerLens(0x75A71Ad878f6f24616A2AE21d046C0C8E72f67F8) on the Comptroller. - Upgrade VAIController implementation to
0x8A7d8589A597619A7842d3BC284b9a5a276FaE56. - Set the new VAIController implementation on the VAIUnitroller.
- Accept ownership of the deployed
DeviationBoundedOracle(0xc79Cb7efEBd121DC4B39eA141C214606595D665A) by callingacceptOwnership(). - Wire DBO into Comptroller — set the DBO address as the borrow-path price source.
- Seed per-asset configs via
setTokenConfigson DBO with 24 entries fromvips/vip-665/utils/asset-configs-bscmainnet.json— 23 withisBoundedPricingEnabled = false, TRX withisBoundedPricingEnabled = true.