弹性价格预言机

概述

在之前的版本中,金星协议 完全依赖 Chainlink 价格预言机来获取价格。这种依赖虽然通常可靠,但也造成了单点故障。如果没有辅助验证机制,错误或过时的价格可能会带来诸如不必要的清算或过度借贷等风险。

鉴于这些风险,金星协议 V4 引入了弹性价格预言机,这是一个更强大的系统,能够从多个数据源提取数据进行交叉验证。弹性预言机配备了一种算法,用于验证两个或多个数据源之间的价格一致性,从而在主要数据源不可靠或失效的情况下提供保障。

此外,改进后的预言机基础设施支持实时集成新的价格预言机,并允许为每个代币启用和禁用价格预言机。

主要特性

弹性价格源

弹性价格源以更强大、更可靠的解决方案取代了 Comptroller 合约中使用的单一价格提供商。这一新组件不仅从各种链上数据源获取资产价格,还包含一个回退机制,以保护协议免受预言机故障的影响。目前,该功能集成了 Chainlink、RedStone、Pyth Network 和 Binance 预言机,未来可能会添加更多预言机。

治理配置

金星协议 治理团队可以通过 金星 改进提案 (VIP) 对弹性价格源系统进行配置。这些配置包括预言机的暂停和恢复功能、价格源配置以及固定价格设置等。

安全措施

在实施弹性价格预言机的过程中,我们采取了多项安全措施,以确保 金星 协议的安全性和持续性:

  • 价格持续性: 我们在模拟环境中验证了升级前后的资产价格,以确保价格一致性。

  • 测试网部署: 预言机已在 金星 协议测试网环境中部署和测试。

  • 审计: 代码已通过 OpenZeppelin、Peckshield、Certik 和 Hacken 的审计。

相关代币预言机

对于类似 Liquid Staked Tokens (LST) 的关联代币,最佳实践建议预言机首先使用智能合约报价来获取关联资产之间的汇率,然后将其乘以第二个代币的美元市场价格,从而完成计算。

在 Venus 中,我们为每种 LST 资产使用专用预言机来计算价格,具体步骤如下:

  • 将 LST 转换为底层代币(使用 LST 合约提供的汇率)

  • 使用基于市场价格的“传统”预言机,将上一步计算出的底层代币转换为美元

Venus 中当前相关的代币预言机列表如下:

  • AnkrBNBOracle它返回 ankrBNB 代币的美元价格,使用 ankrBNB 合约提供的汇率,在链上将 ankrBNB 转换为 BNB。

  • BNBxOracle。它返回 BNBx 代币的美元价格,使用 stake manager 合约提供的汇率,在链上将 BNBx 转换为 BNB。 * eBTCAccountantOracleEtherfiAccountantOracle 的实例)。它返回 eBTC 代币的美元价格,使用 Accountant 合约中的汇率,在链上将 eBTC 转换为 WBTC。

  • PendleOracle。它返回 PT Pendle 代币的美元价格,使用 Pendle 市场合约,在链上将 PT 代币转换为其底层代币。

  • SFraxOracle。它返回 sFRAX 代币的美元价格,使用 sFRAX 合约提供的汇率在链上将 sFRAX 转换为 FRAX。

  • SlisBNBOracle。它返回 slisBNB 代币的美元价格,使用 stake manager 合约提供的汇率,在链上将 slisBNB 转换为 BNB。

  • AsBNBOracle。它返回 asBNB 代币的美元价格,使用 asBNB 铸造者 合约提供的汇率,在链上将 asBNB 转换为 slisBNB。

  • StkBNBOracle。它返回 stkBNB 代币的美元价格,使用 stake pool 合约中的汇率,在链上将 stkBNB 转换为 BNB。

  • WBETHOracle。它返回 WBETH 代币的美元价格,使用 WBETH 合约中的汇率,在链上将 WBETH 转换为 BNB。 * WeETHOracle。它返回 weETH 代币的美元价格,使用 流动性池 合约中的汇率,将 weETH 在链上转换为 eETH,并假设 1 eETH = 1 ETH。

  • WeETHsOracleWeETHAccountantOracle 的实例)。它返回 weETHs 代币的美元价格,使用 Accountant 合约中的汇率,将链上的 weETHs 转换为 WETH。

  • WstETHOracle。它返回 wstETH 代币的美元价格,使用 stETH 合约中的汇率,将 wstETH 链上转换为 stETH,并假设 1 stETH = 1 ETH。

关于流动性质押代币的假设

WeETHOracleWstETHOracle 假设流动性质押代币 (LST) 与基础资产之间的价格比率为 1:1(例如,1 ETH = 1 stETH)。这种方法的主要风险在于智能合约漏洞和交易对手风险,这些风险可能会影响LST的赎回流程。在交易对手风险较大的情况下,尤其是在底层代币无法用LST赎回的情况下,直接智能合约定价可能变得不可靠。以下是我们缓解此类情况的计划:

  • 我们将为每个LST代币部署两个链上预言机:

  • 第一个预言机将基于LST代币与底层资产1:1的比例假设返回价格。

  • 第二个预言机将基于二级市场数据(例如使用Chainlink)返回价格。

  • 默认情况下,

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

AAVE

-

Upper bound: 1.05. Lower bound: 0.95

Core

ADA

-

Upper bound: 1.05. Lower bound: 0.95

Core

asBNB

-

Upper bound: 1.05. Lower bound: 0.95

Core

BCH

-

Upper bound: 1.05. Lower bound: 0.95

Core

BETH (Paused)

-

-

Core

BNB

Upper bound: 1.01. Lower bound: 0.99

Core

BTCB

Upper bound: 1.01. Lower bound: 0.99

Core

BUSD (Paused)

-

-

Core

CAKE

-

Upper bound: 1.05. Lower bound: 0.95

Core

DAI

-

Upper bound: 1.05. Lower bound: 0.95

Core

DOGE

-

Upper bound: 1.05. Lower bound: 0.95

Core

DOT

-

Upper bound: 1.05. Lower bound: 0.95

Core

ETH

Upper bound: 1.01. Lower bound: 0.99

Core

FDUSD

-

Upper bound: 1.05. Lower bound: 0.95

Core

FIL

-

Upper bound: 1.05. Lower bound: 0.95

Core

LINK

-

Upper bound: 1.05. Lower bound: 0.95

Core

lisUSD

-

-

Core

LTC

-

Upper bound: 1.05. Lower bound: 0.95

Core

MATIC (Paused)

-

-

Price feed from $POL

Core

PT-sUSDE-26JUN2025 (Paused)

-

-

Core

SOL

-

Upper bound: 1.05. Lower bound: 0.95

Core

SolvBTC

-

Upper bound: 1.05. Lower bound: 0.95

Core

SXP(Paused)

-

-

Core

THE

-

Upper bound: 1.05. Lower bound: 0.95

Core

TRX

-

Upper bound: 1.01. Lower bound: 0.99

Core

TRXOLD(Paused)

-

Upper bound: 1.01. Lower bound: 0.99

Core

TUSD

-

Upper bound: 1.05. Lower bound: 0.95

Core

TUSDOLD (Paused)

-

-

Core

TWT

-

-

Core

UNI

-

Upper bound: 1.05. Lower bound: 0.95

Core

USDC

Upper bound: 1.01. Lower bound: 0.99

Core

USDe

Upper bound: 1.06. Lower bound: 0.94

Core

USDT

Upper bound: 1.01. Lower bound: 0.99

Core

VAI

-

Upper bound: 1.05. Lower bound: 0.95

Core

WBETH

-

Upper bound: 1.05. Lower bound: 0.95

Core

XRP

-

Upper bound: 1.05. Lower bound: 0.95

Core

XVS

-

Upper bound: 1.05. Lower bound: 0.95

Stablecoins

lisUSD

-

-

Stablecoins

USDD

-

-

Stablecoins

USDT

Upper bound: 1.01. Lower bound: 0.99

Stablecoins

EURA

-

-

DeFi

BSW

-

-

DeFi

ALPACA

-

-

DeFi

USDT

Upper bound: 1.01. Lower bound: 0.99

DeFi

USDD

-

-

DeFi

ANKR

-

-

DeFi

ankrBNB

-

-

DeFi

TWT

-

-

DeFi

PLANET

-

-

GameFi

RACA

-

-

GameFi

FLOKI

-

-

GameFi

USDD

-

-

GameFi

USDT

Upper bound: 1.01. Lower bound: 0.99

Liquid Staked BNB

ankrBNB

-

Liquid Staked BNB

asBNB

-

Upper bound: 1.05. Lower bound: 0.95

Liquid Staked BNB

BNBx

-

-

Liquid Staked BNB

PT-clisBNB-24APR2025

-

Liquid Staked BNB

stkBNB

-

Liquid Staked BNB

slisBNB

-

-

Liquid Staked BNB

WBNB

-

-

Meme

BabyDoge

-

-

Meme

USDT

Upper bound: 1.01. Lower bound: 0.99

Tron

BTT

-

-

Tron

TRX

-

-

Tron

WIN

-

-

Tron

USDD

-

-

Tron

USDT

Upper bound: 1.01. Lower bound: 0.99

Liquid Staked ETH

ETH

Upper bound: 1.01. Lower bound: 0.99

Liquid Staked ETH

weETH

Upper bound: 1.01. Lower bound: 0.99

Liquid Staked ETH

wstETH

Upper bound: 1.01. Lower bound: 0.99

BTC

BTCB

Upper bound: 1.01. Lower bound: 0.99

BTC

PT-SolvBTC.BBN-27MAR2025

-

-

Ethereum

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

crvUSD

-

-

Core

DAI

-

-

Core

TUSD

-

-

Core

USDC

-

-

Core

USDT

-

-

Core

WBTC

-

-

Core

WETH

-

-

Core

FRAX

-

-

Core

EIGEN

-

-

Core

sFRAX

-

-

Core

USDS

-

-

Core

BAL

-

-

Core

USDe

Upper bound: 1.01. Lower bound: 0.99

Core

tBTC

-

-

Curve

crvUSD

-

-

Curve

CRV

-

-

Ethena

PT-sUSDE-27MAR2025

-

-

Ethena

PT-USDe-27MAR2025

-

-

Ethena

sUSDe

-

-

Ethena

USDC

-

-

Ethena

USDe

Upper bound: 1.01. Lower bound: 0.99

Liquid Staked ETH

ezETH

Upper bound: 1.01. Lower bound: 0.99

Liquid Staked ETH

PTweETH-26DEC2024

-

-

Liquid Staked ETH

pufETH

-

-

Liquid Staked ETH

rsETH

Upper bound: 1.01. Lower bound: 0.99

Liquid Staked ETH

sfrxETH

-

-

Liquid Staked ETH

WETH

-

-

Liquid Staked ETH

wstETH

-

-

Assume 1:1 for ETH:stETH

Liquid Staked ETH

weETH

-

-

Assume 1:1 for ETH:eETH

Liquid Staked ETH

weETHs

-

-

opBNB mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

BTCB

-

-

Core

ETH

-

-

Core

FDUSD

-

-

Core

USDT

-

-

Core

WBNB

-

-

Arbitrum One

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

ZKsync Mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

WBTC

-

-

Core

WETH

-

-

Core

USDC

-

-

Core

USDC_E

-

-

Core

USDT

-

-

Core

ZK

Upper bound: 1.01. Lower bound: 0.99

Core

zkETH

-

-

Assume 1:1 for WETH:rzkETH

Optimism Mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Base Mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Unichain Mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

WBTC

-

-

Core

WETH

-

-

Core

USDC

-

-

Core

USD₮0

-

-

Core

UNI

-

-

Further Reading

For more detailed information, refer to the following resources:

Audit reports

References

Last updated