un.Block

Posted on Oct 09, 2021Read on Mirror.xyz

预言机 Oracle

不要把 Oracle 理解成 “甲骨文”,或者数据库

上段时间我们的保姆级教程栏目有些偏航,讲了不少关于保险和 NFT 的内容,本期我们回归正道,继续学习一些区块链世界中的基础概念 —— 预言机。

预言机是什么

预言机是一个向区块链提供外部信息的链下服务,它扮演着连接区块链和外部世界的角色。

为什么需要预言机

虽然智能合约解决了人与人之间的信任交互问题,但区块链是一个确定的、封闭的系统环境,区块链只能获得链上的数据,却无法获取到链下的真实世界的数据。

举个例子,张三和李四通过智能合约打赌,2020 东京奥运会开始的一周内 A 国的奖牌数量会不会突破 50 枚。张三觉得会突破 50 枚,李四认为不会,他们为这个赌约下注 100 UNB 币,下注的代币被锁在智能合约中,智能合约会根据最后的结果将代币转账到获胜一方的钱包中。

问题来了,智能合约无法获取真实世界的数据,它又怎么能知道 A 国到底有多少奖牌呢?

因此,我们需要 预言机 (Oracle) 来完成这项工作。

预言机做了什么

继续我们的例子,每天,智能合约都会通过 预言机 来查询 A 国奖牌数量,智能合约向预言机发起一个查询请求,预言机调用东京奥运会奖牌榜的官方数据接口,获取到 A 国奖牌数量后,将数据返回给智能合约。获取到奖牌数据的智能合约就会执行相关操作,判断赌约的获胜者是张三还是李四。

在这个打赌的例子中,预言机 充当了一个传话者的角色。假如没有了预言机,张三和李四之间的打赌无法实现。

预言机真的“诚实”吗

上面我们说到,预言机通过东京奥运会奖牌榜的官方数据接口来获取 A 国的奖牌数据,但这个数据接口的数据是真实可靠的吗?万一网站数据出错了呢?万一预言机被张三劫持了,提供虚假数据呢?这些都是有可能发生的,区块链世界中也发生过预言机被攻击的安全事件。因此,我们需要对预言机进行缜密、安全的设计,确保数据的可靠性和真实性

  • 多预言机节点:多个预言机节点共同执行数据请求,再通过数据聚合算法来解决数据的可能不一致问题。
  • “提交-揭露”机制:预言机节点可能为了偷懒,直接复制别人的数据,当这种情况占大多数时,一个错误的数据就可能造成大多数攻击,危害系统安全。“提交-揭露”机制就是,预言机节点先提交加密的数据,在数据足够多时,再进行解密,得到最终结果。
  • 多数据源或可信单数据源:通过使用多数据源访问数据可以在一定程度上防止少数数据源的作恶,但是这种做法不具通用性,因为并不是每一条数据都具备多个外部数据源供应。
  • 激励机制:设计一套激励机制,以给与预言机节点行为对应的奖励和惩罚。预言机节点在加入去中心化网络时需要支付一定的保证金,以防止预言机节点的作恶。

哪里需要预言机

  • 去中心化金融衍生品:衍生品是两方或多方之间的金融合约,其价值基于相关资产。抵押借贷就是最常见的衍生品,当前抵押率的计算就需要预言机提供资产价格数据。
  • 去中心化预测市场:去中心化预测市场利用人群的智慧来预测真实世界的结果,如总统选举和体育博彩结果,预言机为预测市场提供了来自真实世界的最终结果。
  • 稳定币:预言机可以为稳定币提供外部汇率数据,如稳定币锚定所资产的实时市场价

总而言之,预言机是去区块链的重要一环,它为区块链打开了一扇通往外部世界的窗户。

下期我们来了解一下目前主流的预言机项目。

相关阅读: