弹性价格预言机
概述
在之前的版本中,金星协议 完全依赖 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。 *eBTCAccountantOracle(EtherfiAccountantOracle的实例)。它返回 eBTC 代币的美元价格,使用 Accountant 合约中的汇率,在链上将 eBTC 转换为 WBTC。PendleOracle。它返回 PT Pendle 代币的美元价格,使用 Pendle 市场合约,在链上将 PT 代币转换为其底层代币。SFraxOracle。它返回 sFRAX 代币的美元价格,使用 sFRAX 合约提供的汇率在链上将 sFRAX 转换为 FRAX。SlisBNBOracle。它返回 slisBNB 代币的美元价格,使用 stake manager 合约提供的汇率,在链上将 slisBNB 转换为 BNB。StkBNBOracle。它返回 stkBNB 代币的美元价格,使用 stake pool 合约中的汇率,在链上将 stkBNB 转换为 BNB。WeETHsOracle(WeETHAccountantOracle的实例)。它返回 weETHs 代币的美元价格,使用 Accountant 合约中的汇率,将链上的 weETHs 转换为 WETH。
关于流动性质押代币的假设
WeETHOracle 和 WstETHOracle 假设流动性质押代币 (LST) 与基础资产之间的价格比率为 1:1(例如,1 ETH = 1 stETH)。这种方法的主要风险在于智能合约漏洞和交易对手风险,这些风险可能会影响LST的赎回流程。在交易对手风险较大的情况下,尤其是在底层代币无法用LST赎回的情况下,直接智能合约定价可能变得不可靠。以下是我们缓解此类情况的计划:
我们将为每个LST代币部署两个链上预言机:
第一个预言机将基于LST代币与底层资产1:1的比例假设返回价格。
第二个预言机将基于二级市场数据(例如使用Chainlink)返回价格。
默认情况下,
Core
sUSDe
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
Ethereum
Liquid Staked ETH
ezETH
Upper bound: 1.01. Lower bound: 0.99
Liquid Staked ETH
rsETH
Upper bound: 1.01. Lower bound: 0.99
opBNB mainnet
Arbitrum One
ZKsync Mainnet
Optimism Mainnet
Base Mainnet
Unichain Mainnet
Further Reading
For more detailed information, refer to the following resources:
Audit reports
References
Last updated