Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
fcef1c0
feat: draft VIP-664 list vhUSDT, vhUSDC, vhU in Venus Core Pool
trumpgpt-bot Aug 19, 2026
8299dd4
docs(vip-664): document IRM, CF=LT and default-param rationale per re…
trumpgpt-bot Aug 19, 2026
a1ef313
docs(vip-664): close listing-template review flags (supply-cap unit, …
trumpgpt-bot Aug 19, 2026
f876402
fix(vip-664): pin capped oracle to asBNB design
Debugger022 Aug 19, 2026
f29431f
test(vip-664): add bscmainnet fork simulation
Debugger022 Aug 19, 2026
87a743d
fix(vip-664): arm the growth cap and reuse the IRM
Debugger022 Aug 19, 2026
ebf20ad
feat(vip-664): add bsctestnet VIP and simulation
Debugger022 Aug 19, 2026
cf27bed
test(vip-664): assert the E-brake seeded bounds
Debugger022 Aug 19, 2026
8c84638
feat(vip-664): set the borrow cap and IRM explicitly
Debugger022 Aug 19, 2026
13aa1d4
feat(vip-664): list vSHARE only on bsctestnet
Debugger022 Aug 21, 2026
4983df3
feat(vip-664): mint the bootstrap shares from the Hub vault
Debugger022 Aug 21, 2026
03f622d
chore(vip-664): fill the deployed bsctestnet addresses
Debugger022 Aug 21, 2026
7be241c
fix(vip-664): use the plain IRM, not the CheckpointView
Debugger022 Aug 24, 2026
99bf28a
feat(vip-664): adjust bootstrap parameters to $10 and 10 vhToken per …
Debugger022 Aug 24, 2026
ccdea76
chore(vip-664): fill the deployed bscmainnet addresses
Debugger022 Aug 24, 2026
eba104e
feat(vip-664): mint the bscmainnet bootstrap shares from the vault
Debugger022 Aug 24, 2026
7994357
chore(vip-664): reseed the oracle snapshots from block 117780230
Debugger022 Aug 24, 2026
aa6a7cf
refactor(vip-664): drop the redundant _setInterestRateModel commands
Debugger022 Aug 24, 2026
b1de3c6
fix(vip-664): keep propose() inside the simulated gas limit
Debugger022 Aug 24, 2026
15d6b6f
test(vip-664): cover the bscmainnet listing end to end
Debugger022 Aug 24, 2026
57cb2d3
docs(vip-664): correct the protocol seize share note
Debugger022 Aug 24, 2026
7ab07de
test(vip-664): cover the Liquidator seize path
Debugger022 Aug 24, 2026
24ab7c7
chore: prepare VIP-659 for proposal
fred-venus Aug 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
227 changes: 227 additions & 0 deletions simulations/vip-659/abi/CappedOracle.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
[
{
"inputs": [
{
"components": [
{ "internalType": "address", "name": "market", "type": "address" },
{ "internalType": "address", "name": "ptOracle", "type": "address" },
{ "internalType": "enum PendleOracle.RateKind", "name": "rateKind", "type": "uint8" },
{ "internalType": "address", "name": "ptToken", "type": "address" },
{ "internalType": "address", "name": "underlyingToken", "type": "address" },
{ "internalType": "address", "name": "resilientOracle", "type": "address" },
{ "internalType": "uint32", "name": "twapDuration", "type": "uint32" },
{ "internalType": "uint256", "name": "annualGrowthRate", "type": "uint256" },
{ "internalType": "uint256", "name": "snapshotInterval", "type": "uint256" },
{ "internalType": "uint256", "name": "initialSnapshotMaxExchangeRate", "type": "uint256" },
{ "internalType": "uint256", "name": "initialSnapshotTimestamp", "type": "uint256" },
{ "internalType": "address", "name": "accessControlManager", "type": "address" },
{ "internalType": "uint256", "name": "snapshotGap", "type": "uint256" }
],
"internalType": "struct PendleOracle.ConstructorParams",
"name": "params",
"type": "tuple"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{ "inputs": [], "name": "InvalidDuration", "type": "error" },
{ "inputs": [], "name": "InvalidGrowthRate", "type": "error" },
{ "inputs": [], "name": "InvalidInitialSnapshot", "type": "error" },
{ "inputs": [], "name": "InvalidSnapshotMaxExchangeRate", "type": "error" },
{ "inputs": [], "name": "InvalidTokenAddress", "type": "error" },
{
"inputs": [
{ "internalType": "address", "name": "sender", "type": "address" },
{ "internalType": "address", "name": "calledContract", "type": "address" },
{ "internalType": "string", "name": "methodSignature", "type": "string" }
],
"name": "Unauthorized",
"type": "error"
},
{ "inputs": [], "name": "ZeroAddressNotAllowed", "type": "error" },
{ "inputs": [], "name": "ZeroValueNotAllowed", "type": "error" },
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "uint256", "name": "oldGrowthRatePerSecond", "type": "uint256" },
{ "indexed": true, "internalType": "uint256", "name": "newGrowthRatePerSecond", "type": "uint256" },
{ "indexed": true, "internalType": "uint256", "name": "oldSnapshotInterval", "type": "uint256" },
{ "indexed": false, "internalType": "uint256", "name": "newSnapshotInterval", "type": "uint256" }
],
"name": "GrowthRateUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "uint256", "name": "oldSnapshotGap", "type": "uint256" },
{ "indexed": true, "internalType": "uint256", "name": "newSnapshotGap", "type": "uint256" }
],
"name": "SnapshotGapUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "uint256", "name": "maxExchangeRate", "type": "uint256" },
{ "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" }
],
"name": "SnapshotUpdated",
"type": "event"
},
{
"inputs": [],
"name": "ACCESS_CONTROL_MANAGER",
"outputs": [{ "internalType": "contract IAccessControlManagerV8", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "CORRELATED_TOKEN",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MARKET",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PT_ORACLE",
"outputs": [{ "internalType": "contract IPendlePtOracle", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "RATE_KIND",
"outputs": [{ "internalType": "enum PendleOracle.RateKind", "name": "", "type": "uint8" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "RESILIENT_ORACLE",
"outputs": [{ "internalType": "contract ResilientOracleInterface", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TWAP_DURATION",
"outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNDERLYING_DECIMALS",
"outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNDERLYING_TOKEN",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMaxAllowedExchangeRate",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "asset", "type": "address" }],
"name": "getPrice",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getUnderlyingAmount",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "growthRatePerSecond",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isCapped",
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{ "internalType": "uint256", "name": "_annualGrowthRate", "type": "uint256" },
{ "internalType": "uint256", "name": "_snapshotInterval", "type": "uint256" }
],
"name": "setGrowthRate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{ "internalType": "uint256", "name": "_snapshotMaxExchangeRate", "type": "uint256" },
{ "internalType": "uint256", "name": "_snapshotTimestamp", "type": "uint256" }
],
"name": "setSnapshot",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "uint256", "name": "_snapshotGap", "type": "uint256" }],
"name": "setSnapshotGap",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "snapshotGap",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "snapshotInterval",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "snapshotMaxExchangeRate",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "snapshotTimestamp",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "view",
"type": "function"
},
{ "inputs": [], "name": "updateSnapshot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }
]
Loading
Loading