LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 【一文读懂】两则Oracle项目简介,以及Oracle在DeFi领域各项目中的架构和实际应

【一文读懂】两则Oracle项目简介,以及Oracle在DeFi领域各项目中的架构和实际应

2020-08-11 洁sir 来源:区块链网络

随着各式去中心化金融应用的蓬勃发展,背后不可忽视的议题是Oracle也逐渐被重视起来,近期许多相关项目代币价格更是涨得疯狂。

什么是 Oracle?

《精通以太坊(Mastering Ethereum)》Chapter 11: Oracles
Oracles provide a crucial service to smart contracts: they bring external facts to contract execution.

(翻译)Oracle 为智能合约提供关键的服务:把外部事实带进合约中执行。


Oracle 概念示意图

在进入本文之前,想先问你一个问题:要如何设计一个让智能合约取得链外信息的方法?
希望你在阅读本文之前都能先来思考片刻,假设区块链上的智能合约需要区块链外部的信息来触发与执行,那么可以如何做到这件事呢?这个架构的设计会长什么样子?有哪些决定性的细节呢?

为什么区块链需要 Oracle?

由于区块链是一个封闭的系统环境,目前区块链只能获取到链内的数据,而无法获取链外真实世界的数据。本质上来说,智能合约即写好了条件和结果的代码,当特定条件被给予或满足时即能够触发。而若智能合约执行需要的触发条件是区块链外部的信息时,就必须要依靠 Oracle 提供数据,透过 Oracle 将现实世界的数据输入到智能合约中。因为智能合约只能被动接收数据,无法主动去获取链外的数据,这就是区块链需要 Oracle 的原因。


Oracle 示意图 (来源ChainLink白皮书)

Oracle 的实际应用情境

Oracle 作为现实世界数据与区块链的桥梁,各式各样的区块链应用都需要 Oracle 提供外部数据。例如:稳定币、借贷平台、金融衍生品交易平台、预测市场、博弈游戏、保险等。


博弈游戏与随机数
无论是扑克牌等各样的博弈游戏都有个核心:随机性,由于在区块链上的随机数都是可以被预测和破解的,因此一种可行的方式是依靠Oracle 从外部供给智能合约不可预测的随机数。


智能合约保险与理赔

区块链上的智能合约保险也是,假设某间公司推出了透过智能合约执行的车祸保险,究竟有没有发生车祸、情节严重性及应理赔金额其实都必须要靠人来决定,并透过Oracle 从外部向智能合约供给信息才能触发理赔执行。


去中心化金融与即时价格资讯
最常见且大宗的应用莫过于DeFi相关领域。各式各样与加币货币币价或现实世界中的金融产品相关的应用前仆后继被推出,而这些金融应用不可或缺的即时价格信息便是存在于区块链外的现实世界当中,必须仰赖Oracle 来将信息供给区块链智能合约中。

我们实际来看一些牵涉 Oracle 的大型项目案例:

去中心化美元稳定币DAI的 Oracle 实例

以旧版的 DAI: Single Collateral DAI -现名 SAI 来作说明。不可讳言,在 DeFi 世界中最重要的 Oracle 即 MakerDAO 的 ETHUSD 价格 Oracle,广大的去中心化金融应用生态系都围绕着 MakerDAO 与 DAI 开展。


截至 2020年1月,DeFi 总市值约 7 亿美元;MKR 总市值约 5 亿美元;DAI 总市值约 1 亿美元。尽管MKR/DAI 的代币对与DAI 的抵押生成机制:CDPs (Collateralized Debt Positions)」都是完全去中心化地进行,但整个MakerDAO 系统仍有一个重大的潜在后门:系统需要依赖一个Oracle提供准确的ETH USD 即时币价信息。


注:旧版 DAI (SAI) 的抵押生成需参照 ETH 的即时币价。假设 ETH 币价为 150USD,则抵押一个 ETH 最多可以生成 100个DAI,抵押品的价值必须大于铸造 DAI 的 150%,即币价一旦跌到 149USD 便会触发清算机制。


由于币价资讯来自区块链外部(CoinMarketCap 即为诸多交易所之加权平均现价),因此 MakerDAO 的智能合约必须从区块链外部不断获取即时币价信息,以利于 CDPs 与清算作业的进行。

让我们了解下牵动整个 DeFi 生态系的 MakerDAO Oracle 实作过程:


MakerDAO 的 Oracle 架构


MakerDAO 智能合约系统运行所需要的ETH USD 币价是透过一个名为Medianizer的Oracle 智能合约来提供;Medianizer 获取最新币价信息的方式是由14 个相互独立的外部Price Feed单位通过智能合约输入。


MakerDAO Oracle 架构示意图

币价的即时更新方式
14 个Price Feed会随时监控 MakerDAO 官方公告的先前共识价格,并在每当:
ETH 最新时价与官方公告的先前共识价格有一定比例差距时(目前定为 1%);距离上一次的价格更新已经超过 6 个小时。以上两个情况时,Price Feed将提交最新的币价信息给 Medianizer。


Medianizer 收到多个新币价信息后,将会取所有收到币价的中位数作为新的共识价格,并输入 MakerDAO 生态系的智能合约中。这样的共识机制只要有超过 50% 的Price Feed提供正确信息,系统便能维持安全稳定。至多 6 个Price Feed相互串通供给错误币价信息时,将不会影响最终的共识价格,即未达 51% 攻击。

这 14 个Price Feed究竟是何方神圣?为什么它们愿意发送交易为 MakerDAO 提供币价呢?

MakerDAO 的 Oracle 生态系运行

MakerDAO 的独特之处在于它是一个去中心化自治组织(D.A.O. — Decentralized Autonomous Organization),从稳定币 DAI 的发行乃至 Oracle 都有设计去中心化的机制来运行。


MakerDAO Oracle 生态系中不同的角色关系(来自MakerDAO Blog)

Price Feeds
为 MakerDAO 生态系提供币价资讯的Price Feeds将获得 DAI 作为报酬,以此奖励它们的服务并阻挡它们行恶意行为的意图。注:目前的 DAI 奖励是由 Maker Development Fund 基金资助,MakerDAO 规划未来奖励将从 Maker协议的 stability fees 提拨。
而 Price Feeds 的真面目其实是由 MKR代币持有者投票决选出的 14 个白名单地址(已知部分为大型交易所)。


表现好的地址,是指有持续、准时为 MakerDAO 提供正确币价信息,将能够留在白名单中赚取奖励报酬;表现不好的地址一般是偷懒没有提供币价信息或提供错误币价信息,则可能马上被 MKR代币持有者们罢免汰换掉。

介绍完 MakerDAO 获取 ETHUSD 币价信息的 Oracle 实例后,可以发现 MakerDAO 需要 Oracle供给的是相对单纯的「ETHUSD」单一信息。然而,假设需要的是更多种类的信息,例如:在区块链上打造一个去中心化的预测市场,该如何将球赛胜负或是选举结果等信息提供给区块链呢?紧接着我们来介绍另一个有趣的 Oracle 实例项目。

为去中心化预测市场而生的 Oracle: Augur

Augur 是一个架构上有些复杂的预测市场平台,每个人都可以在 Augur 上创建预测市场,而预测市场简单来说就是提出一个是非题或是选择题。我们实际通过一个范例来了解 Augur 的实现流程,假设有人在 Augur 上列出了一个预测市场题目,任何人都能够在 Augur 上针对选项进行下注,即投入以太坊。当结果出炉时,创建这个预测市场的人必须作为 Oracle 去将选举结果汇报给智能合约以进行清算。


如果汇报的结果是正确的,那么本盘轮预测市场将在经历一段异议提出期间(3–10 天)的等待后完成清算,就此结束。若汇报的是错误的结果,或者有人对于技术细节有不同意之处那么想提出异议的人能透过抵押部分的 Augur 平台治理代币REP,至其它的结果来进入争论期间。接着,其他的 REP代币的持有者将作为这盘预测市场的裁判来投票:究竟哪个结果才是正确的?

系统会将获得最多票数的结果视为正确结果,所有投票给正确结果的 REP代币持有者将可以获得奖励,投给其他结果的人将不会获得。投票结果出炉后仍然会有一段提出异议的期间,如果无异议将清算结束;若是有人想提出异议需要抵押更多的 REP代币展开新一轮的投票。


这样的流程大致上如同下方这张官方制作的流程图所示:


Augur 预测市场实现流程示意图(来源Augur Medium)

至此,我们便详尽地介绍完了 Augur。总体来说,在 Augur 上创建预测市场的人将作为 Oracle。REP代币的持有者将作为裁判,检视提出异议的预测市场并确保 Oracle 回报的是真实的结果。Augur 透过这样的奖励机制将能让平台变得更加值得信赖与可靠。

去中心化 Oracle 网络:Chainlink

有别于 Augur 透过挑战机制处理中心化 Oracle供给错误信息的问题。 Chainlink 试图解决 Oracle供给错误信息的方式是导入一个由去中心化 Oracle 网络组成的中介层——Chainlink Nodes。


比起由Chainlink 这个组织本身提供数据信息会造成的中心化信任问题,Chainlink 整合了从不同数据来源获取数据的众多Data Feeds(数据提供者)来提供一个共识过的数据信息,有些相似于MakerDAO 的共识机制。

Chainlink 的 Oracle 实例
Chainlink 透过链上的Oracle 智能合约与链外的Chainlink 节点实现去中心化的架构。假设链上的一个DeFi DApp想要透过 Chainlink 取得 CoinMarketCap 的币价信息,那么取得信息的流程大致上是如下图所示:


Chainlink 架构示意图

Chainlink 的 Oracle 实例流程


Chainlink 实作流程图

1.用户的智能合约(DeFi DApp)发起一个链上的请求;
2.Chainlink 的智能合约收到请求后在链上记录下这个请求的内容;
3.Chainlink 节点内的区块链接口(Core)抓取这个请求内容,并发送给对应外部接口(Adapter);
4.外部接口按请求内容至外部 API(CoinMarketCap)取得数据信息;
5.外部接口将数据格式整理完成后派送给区块链接口;
6.区块链接口将数据信息汇报给 Chainlink 智能合约;
7.Chainlink 智能合约将一至多个节点回传的数据信息进行一次共识整理,并发送结果给用户智能合约。


Chainlink 在Chainlink 节点与外部数据资讯来源两个层面都透过去中心化的架构来降低信息错误的风险。

Chainlink 的节点网络 Oracle 架构


Chainlink 的架构核心即为由许多的数据提供者组成的链外Chainlink 节点网络,想要成为在Chainlink 网络中提供数据的节点必须要抵押特定量的Chainlink 平台治理代币LINK 。使用者如果想要透过 Chainlink 来取得数据信息时需要以 LINK 来支付费用,而这些 LINK 将会分配给提供正确数据资讯的节点们作为报酬。而提供错误信息或是有其它异常行为的节点将会被扣除部分抵押的 LINK 作为惩罚。


透过这样的方式,去中心化的 Chainlink Oracle 网络试图透过抵押与奖惩机制来提供一个比起中心化的 Oracle 在架构上更加稳定的解决方案。

各专业 Oracle 实例解析

去中心化借贷平台 Compound 的 Oracle 实例


我们来看看大家最熟悉的Compound Finance,杠杆交易的操作员可以透过在 Compound 上抵押借贷资产来做多或做空。而 Compound 需要仰赖 Oracle 来获取即时的币价信息更新抵押率以进行清算。


我们直接来看 Compound白皮书上的相关论述:


Compound 的 Price Oracle 会从前十大交易所抓取币价信息并进行整合。根本来说仍然是由 Compound 团队以中心化的方式来实作。

去中心化合成资产平台 Synthetix 的 Oracle 实例


Synthetix以太坊上的去中心化合成资产发行协议,同时也是全世界DeFi 领域总市值第二大的平台,透过抵押平台币 SNX 可以发行出各样的虚拟资产,如:法币(美元、欧元、日币等)、商品(金、银、石油)、虚拟货币(BTC、ETH)等。


Synthetix 需要透过 Oracle 不断供给即时外部信息来追踪这些商品的实时价格,让投资者不必真的持有外币或黄金,也能参与这些投资标的的涨跌幅。而这样需要众多即时且大量外部信息平台的 Oracle 究竟如何运作呢?可以在官方文件 Synthetix白皮书中找到相关论述:


Synthetix 的 Oracle 是由 Synthetix 的官方团队来运作,透过演算法抓取多个数据来源整合(就是 Synthetix 团队中心化来处理)。然而,最后提到有规划在未来将把Oracle 给去中心化,未来将会透过Chainlink 来为Synthetix 上的各样合成资产即时报价。

结论


1. 中心化 Oracle 与信任
可以看到在上述案例中,Oracle 都是由平台方中心化地来处理,对于使用者而言其实仍然存在一定程度的风险。根本来说使用者必须相信平台为了平台名誉不会供给假的数据资料。然而,如此便又回到了中心化的问题,使用者信赖的对象仍然是平台营运方,而非架构本身,实在是有违去中心化的精神与真谛。


2. 观察专业的 Oracle运作方式

在了解什么是Oracle 之后,未来在参与去中心化金融与各式的区块链应用时,除了注意平台如何操作、界面好不好用、能如何赚钱套例外,当平台牵涉到区块链外部的信息时,我们更应该注意这个项目的Oracle运作方式,才不会让自己的宝贵资产陷于风险当中。


若是一个预测市场或赌盘的 Oracle 不会随着赌盘总投注金额的上升而让攻击成本上升,那么这个 Oracle 便存在着结构性风险。一旦攻击 Oracle提供错误信息的成本小于能够从赌盘获得的利润,将让 Oracle 陷入被攻击的风险当中,任何人有权影响 Oracle供给信息的人都会有十足的犯罪动机。

目前 Oracle 其实仍是个较新的话题,不过Oracle 要解决的不只是技术问题,也是经济学问题。许多的专家仍在着手研究提出更理想的 Oracle 架构。期侍未来能看到更多样化的 Oracle 解决方案。

原文链接:Oracle——A bridge between blockchain and the real world

—-

编译者/作者:洁sir

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...