Skip to content

Latest commit

 

History

History
66 lines (34 loc) · 5.42 KB

oracles.md

File metadata and controls

66 lines (34 loc) · 5.42 KB

预言机

什么是预言机?

预言机为智能合约提供了链上和链下数据。例如,ETH 和 MKR 的喂价数据。系统依靠预言机安全地提供每种资产的价格,帮助系统智能合约确定变量: 如每个CDP可以生成多少Dai、清算价格、以及是否达到清算价格等。

为什么预言机是恶意攻击者的攻击目标?

如果 ETH 的参考价格由某一方确定,那么他们可以谎报错误价格,导致很多问题。假设 ETH 价格被谎报过低,如0.01美元,那么系统中的CDP都将被清算并因抵押不足而需支付清算罚金。另一方面,当 ETH 价格谎报过高,如1,000,000美金,那么任何 CDP 用户都能发行过量的Dai,因为系统认定其抵押品价值高于实际价值。这意味着超额发行的 Dai 没有充足的抵押品支撑,从而导致该系统破产。

如何保证预言机机制的安全?

为防止数据谎报,数据发布是分布式的,即多个数据报告者是彼此独立的。目前 ETH 喂价由14个喂价商 将其数据发送到 Medianizer 合约。Medianizer 使用报告价格的中位数作为官方参考价格。使用中位数而不是平均值使得操纵参考价格难度增加,因为需要控制超过半数的喂价商才能谎报价格。此外,使用中位数可以自动过滤掉异常值。

此外,预言机安全模块(OSM) 可以通过将喂价数据延迟一小时,进行保护。此让 MKR 代币持有者有时间识别喂价系统的漏洞或攻击。当前,OSM 激活于 MKR 喂价,而非 ETH 喂价。因为在单抵押 Dai 中,当 CDP 被清算时,抵押品是依据喂价以当前市场价格出售,所以 ETH 价格不能延迟。而在多抵押 Dai 中将会进行更改,确保所有喂价均能延迟。

预言机安全模块是什么?

预言机安全模块(OSM) 延迟一小时发布新的参考价格,让 MKR 代币持有者有时间对喂价系统漏洞或攻击做出反应。当前,OSM 激活于 MKR 喂价,而非 ETH 喂价。因为在单一抵押 Dai 中,当CDP被清算时,抵押品是依据喂价以当前市场价格出售,而在多抵押 Dai 中,将通过不需要喂价的拍卖机制出售。

谁是喂价商?

喂价商是匿名的,由 Maker 内部团队、加密社区有影响力的人物以及社区的活跃成员组成。

系统是否知道提供预言机喂价的人员身份?

Maker 基金会中的小部分知道当前所有的喂价商身份。

喂价系统的原理是什么?

ETH 参考价格由 Medianizer 合约发布,该价格由 14个喂价商 提供。在下列情况下,每个喂价商向 Medianizer 发送数据更新:

  1. 当前价格与近期提交价格相差超过预定值 (目前介于1%~2%之间,具体差异值取决于喂价商)
  2. 距离最后一次价格更新时间超过t小时 (时间由每个喂价商设置).

每个喂价商都会使用 Setzer 工具从一组交易所数据中提取一个中位数发送给 Medianizer。然后,Medianizer 会从每个喂价商报告的中位数中再次提取中位数。喂价商可以设置Setzer,选择指定的交易所提取数据。

什么是 Medianizer?

Medianizer 是预言机系统中的智能合约,用来收集喂价信息以及发布每种资产的参考价格,维持一个喂价商白名单和每个地址提供的近期价格记录。Medianizer 每次收到新的价格后,参考价格将重新计算和更新。

Medianizer 多久发布一次更新的参考价格?

当每个喂价更新时,Medianizer 就会“捕捉”到更新价格,然后将该价格跟其它喂价放在一起重新计算中位数并更新参考价格。

MakerDAO 治理可以改变预言机安全模块的延迟时间吗?

可以,这个参数称为“喂价延迟”。

如何成为喂价商?

目前没有书面化的成为喂价商流程。在 Maker 最初设置喂价机制的时候,Maker 基金会内部人员自愿成为喂价商。之后开放给越来越多人的人,来自社区或其它项目,其身份一直保持隐私。

预言机系统能防止女巫攻击吗?

引用 维基百科关于女巫攻击的解释, "在女巫攻击中,攻击者通过伪造身份破坏 P2P 网络的信誉系统,从而给该系统造成重大影响。信誉系统遭受女巫攻击的脆弱程度取决于伪造身份的成本有多低廉,系统接受来自非可信任实体输入的接受程度有多高,以及信誉系统是否对所有实体一视同仁。"

预言机系统可以防止女巫攻击。因为预言机系统存在一份可抵御女巫攻击的喂价商白名单。成为喂价商并非易事,需要 Medianizer 合约接受才能推送数据。因此,无法低廉地通过伪造喂价商身份进行攻击。

如果某个交易所价格闪崩会怎样?

Dai 信贷系统使用的参考价格是从14个不同的喂价商报告价格的中位数,而喂价商是从多个交易所获取价格中提取的中位数。因此,异常值会被自动过滤掉。举个例子,如果某个交易所“闪崩”,价格组会如示:

[0.70, 104.00, 104.11, 104.13, 104.49, 105.02, 105.45]

该数组的中位数仍然反映了资产的实际市场价格。因此,单个交易所的崩盘不会影响发布的参考价格。