VDB-12: VIP-664 [BNB Chain Testnet] Add MCBT market to the Core pool#728
Conversation
List vMCBT (mock Modern Central Bank Token) in the Venus Core Pool on BNB Chain testnet via VIP-664: Chainlink direct price $2.50, resilient oracle routed to Chainlink, CF 60% / LT 70% / liquidation incentive 10% / reserve factor 25%, supply & borrow caps 236 MCBT, borrowing enabled. Adds a 4-part fork simulation proving the market is listed and functional (supply MCBT + borrow against it) and that the collateral factor, supply cap and borrow cap are all enforced. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
trumpgpt-bot
left a comment
There was a problem hiding this comment.
Clean VIP that closely follows the VIP-633 pattern. All deployed addresses verified on-chain: vMCBT (0xf9C77...AFe) → symbol "vMCBT", underlying MCBT, decimals 8, IRM = RATE_MODEL; MCBT (0x00298...F1) → symbol "MCBT", decimals 18; RATE_MODEL → multiplierPerBlock 951769406 = 0.0667e18/70080000 ✓, jumpMultiplierPerBlock 89469178082 = 6.27e18/70080000 ✓, kink 0.75e18 ✓; vMCBT.comptroller() = 0x94d1820b... = bsctestnet UNITROLLER (Diamond proxy) ✓; PROTOCOL_SHARE_RESERVE matches VIP-633. All Comptroller function signatures (_supportMarket, _setMarketSupplyCaps, _setMarketBorrowCaps, setCollateralFactor, setLiquidationIncentive, setIsBorrowAllowed) confirmed present in the deployed ABI. Pool ID 0 for setIsBorrowAllowed is correct for the Core pool (matches VIP-581 addendum). One minor clarity issue: the checkRiskParameters call in the simulation passes liquidationThreshold, which is silently not checked when isLegacyPool=true — the actual coverage comes from the inline it() below it, but the extra field is misleading at the callsite.
|
|
||
| checkRiskParameters(vMCBT_ADDRESS, MARKET_MCBT.vToken, { | ||
| collateralFactor: MARKET_MCBT.riskParameters.collateralFactor, | ||
| liquidationThreshold: MARKET_MCBT.riskParameters.liquidationThreshold, |
There was a problem hiding this comment.
[minor] liquidationThreshold passed here is silently ignored: checkRiskParameters only calls checkILRiskParameters (which verifies it) when isLegacyPool is false. For isLegacyPool: true (this market) the field is a no-op in this call. The actual coverage lives in the standalone it("liquidation threshold is 70%", ...) at line 117, so there is no gap — but keeping this field here suggests it's being verified by checkRiskParameters when it isn't. Drop liquidationThreshold from this call (or type the third argument as LegacyPoolRiskParameters) to make the intent clear.
Adds VIP-664 (
vips/vip-664/bsctestnet.ts) listing and configuring the vMCBT market in the Venus Core pool on BNB Chain testnet, plus a fork simulation (simulations/vip-664/bsctestnet.ts).Market parameters: Chainlink direct price $2.50, resilient oracle routed to Chainlink (main only); collateral factor 60%, liquidation threshold 70%, liquidation incentive 10%, reserve factor 25%; supply & borrow caps 236 MCBT; borrowing enabled (
setIsBorrowAllowed(0, vMCBT, true)); JumpRateModel base 0% / multiplier 6.67%/yr / kink 75% / jump 627%/yr. Seeds initial liquidity and routes the remainder to VTreasury.ProposalType.REGULAR.Deployed addresses used: MockMCBT
0x00298c15260FbE3C51D2a30765B1EedBd4f8b1F1, vMCBT0xf9C77bFA1F86574E6F39A61dab94d9Bb9ED21AFe, JumpRateModel0x1CcDaf39085bae4e27c3Ba100561b1AD1B5A6b80.Tests:
node_modules/.bin/hardhat test simulations/vip-664/bsctestnet.ts --fork bsctestnet→ 59 passing. The 4-part sim asserts the market is listed, all risk params/oracle/IRM are correct, supply+borrow works, and CF, supply cap and borrow cap are enforced. Oracle staleness across the timelock is handled (MCBT direct price is staleness-proof; canonicalsetMaxStalePeriodForAllAssetsguard applied).eslint/prettierclean.Note: the request's VIP block referenced
vUXRP/UXRP/236 UXRP— treated as copy-paste artifacts; the market added is MCBT/vMCBT with 236 MCBT caps.Opened by the Venus dev bot. Review required; the bot cannot merge.