主题分享 | 王琦: 预言机问题——区块链应用落地的阿喀琉斯之踵
没有预言机,就会导致区块链与外部世界的隔离。所有需要与外部世界交互的应用场景,都无法实现。这会大大限制区块链生态的发展。预言机的功能是给链上提供真实世界的数据的中介,其最重要的特性是需要保证预言机这个中介本身没有作恶,没有篡改数据。
Claire:
预言机是区块链和现实世界的连接器,其作用非常重要。今天我们有幸请到DOS Network合伙人兼运营负责人王琦先生和我们分享有关预言机的资讯。欢迎来自北美的王琦先生!🎉🎉🎉
王琦:
哈喽魔笛手技术社区的朋友们大家好,很荣幸能有这么一个机会跟大家分享有关于区块链Dapp,预言机,以及DOS Network方方面面的问题~ 此次我们分享的主题是预言机问题——区块链应用落地的阿克琉斯之踵。
首先我给大家做一下自我介绍:我叫王琦,是 DOS Network 的联合创始人,主要负责技术,市场和运营相关的工作。本科毕业于北京邮电大学通信工程专业,硕士毕业于卡内基梅隆大学电子与计算机工程专业,之前在硅谷的Pure Storage和甲骨文做软件工程师兼技术负责人。我入圈也是比较早,13年就开始投资比特币,关注区块链行业了,可以说也是经历了几轮牛熊了。 后来以太坊出现以后,我就更多的关注了区块链技术方面的东西。在这个过程中发现了预言机,这个区块链世界中比较重要的一个问题,于是在18年和朋友一起出来做DOS Network。
今天的分享我们主要分为5个部分,分别为
- 我对当前公链和Dapp发展的一些思考
- 什么是预言机
- 预言机的应用场景
- 现有的预言机解决方案
- 介绍DOS Network
1.首先我先分享一下我对于当前主流公链和Dapp发展的一些思考
目前活跃度最高的三大主流公链,还是Ethereum,Tron和EOS。整体来说,主流公链上应用总数在数量上还可以,DApp开发依然保持着一定的热度,依然有团队入局,但趋势减缓,这跟最近市场的寒冷也有关系。
从活跃人数来看,活跃度较低。同时考虑到发生在EOS和Tron上的项目方刷量,Dapp挖矿者的机器人刷量等等情况,真正的活跃用户量只能更低。
从各类型DApp的总量来看,目前区块链落地应用领域在范围上相对局限,几乎集中在博彩,链上金融,游戏等领域。
博彩类
博彩类应用目前为止还占有Dapp中最大的交易量。区块链公开不可篡改和去中心化和价值转移比较方便的特性符合博彩应用场景。早在2013年的时候,博彩就已经很流行了,人们常用比特币或者莱特币下一区块哈希做赌博。但由于出块时间慢,不像EOS上出块时间短且用户体验非常好。博彩类Dapp主要集中在EOS和Tron上的主要原因是他们的出块时间较短,用户的游戏体验较有保障。但是目前区块链博彩项目可被认作是一种场内互割行为,很难带来场外增量资金去引来下一波牛市。
资金盘
资金盘也是跟区块链本身的特性相符合的一类应用,这一类应用的主要代表是代表:PoWH3D、FOMO3D。创造出PoWH3D、FOMO3D的匿名团队Team Just是一支极具赛博朋克精神的团队。Team Just虽然开发的是资金盘游戏,却在游戏设计上可圈可点。特别是其用户留存机制,是围绕建立PoWH3D的大生态而展开。但是资金盘应用本身就有非法性质,而在短暂的狂热,大量用户被割过之后,也很难再对这类应用形成大规模兴趣,因此也不是长期可持续的。
游戏
区块链上游戏设计的主要问题是,游戏之所以要做在区块链上,主要还是因为要受益于链上资产公开透明不可篡改的性质。但是一款游戏吸引玩家的本质在于游戏性,而区块链带来的好处只能算一些附加价值。更不要说受区块链性能影响,链上游戏普遍比较简单,游戏体验相较传统游戏较差,基于此很难吸引真正的游戏爱好者。目前大多的链上游戏玩家,包括NFT游戏的玩家,普遍是以资金盘和投机的心态在参与,难以使生态真正繁荣。今后的游戏设计者还是应该回归到注重提高游戏性上来。
链上金融
在中期,我个人最看好这一类应用的发展,因为这一类金融应用完美的契合了区块链的特性,同时也合法满足了投资者对于加密资产保值增值的需求。
代表应用有WBTC、MakerDAO DAI (稳定币)、Compound (资金池借贷) / Salt、EthLend / Dharma (P2P借贷)、dY/dX Market (crypto衍生品)
其中我尤其看好稳定币对生态发展的帮助:
1、首先对于熊市保本拿利息,可以把一些资产换成稳定币抵御加密资产波动性。
2、其次方便ETH长期支持者持续投资。例如可以通过抵押原本持有的ETH,贷出DAI,然后拿DAI买入ETH。
相较于EOS和Tron,虽然以太坊TPS低,但是去中心化程度更高。这也是为什么以太坊上的金融工具更齐全,稳定币大多都发在以太坊上的原因。(刚刚看到消息,Tether在Tron上也刚刚发了USDT)。因为去中心化程度高比较安全且社区和开发者环境最好 。在中期,我看好以太坊向金融公链的方向发展。在未来可能随着分片,plasma,状态通道,预言机的发展会有突破以及更多应用场景落地的可能性。
我认为区块链目前最大的场景还是在价值的存储和流动上。对于Dapp应用的发展,目前还是在探索阶段,依然有很多痛点。主要在两个方面:用户和开发者
Claire:
经常回滚有可能令人很恼火
王琦:
用户痛点是:
A. 首先DApp对于普通用户入场门槛较高,区块链的应用对于用户教育成本高,如果用户并不了解如何使用应用则会导致用户体验差。一个好的区块链产品应该弱化 “区块链” 这个概念的存在。
B. 大量ICO / 持币者是为了投机而不是为了使用产品,很多Dapp应用的使用场景并不适用于区块链,难以吸引真正的用户。
Dapp开发者的痛点是:
A. 公链生态、社区、开发环境的选择复杂:公链项目太多,资金分流,很多新的公链网络共识效应不够,宛如死链,而且并没有良好开发者社区和文档。因此导致一款DApp在不同公链间的移植成本很高。
B. 在费用和抵押的角度: EOS/Tron上流行应用的开发团队需要抵押几十万/几百万的币。这导致很多DApp的开发者望而却步。这在很大程度上抑制了DApp的开发。
C. 经验和背景:目前区块链处于行业初期,资深开发人员太少,资深的开发者还是以在传统的互联网公司居多;虽然有一些从传统互联网公司转行到区块链的开发者,缺少对区块链认识,对区块链的理解还不够深。
举一个例子,18年EOS博彩类Dapp经常被黑且代币被盗,主要原因在于黑客猜中了随机数,因为区块链链上是无法产生安全的随机数,链上随机数有被破解的风险。但也从侧面证明被黑Dapp开发者对区块链随机数运用的经验不多。最好的解决方式是通过链下预言机获得随机数。
D. 区块链和智能合约本身性能局限性:TPS限制了每日活跃用户数量(DAU), 而且链上存储/计算资源昂贵且有限。
E. “预言机问题” :现在只能调动链上的区块记录以及余额等简单状态,缺乏其他维度的信息,数据上链能力缺失,这些都制约区块链应用落地。区块链应用与现实世界信息有交互需求(例如:博彩应用获取随机数,链上金融应用获取实价等),需要用到预言机。但是很多项目方并没有用预言机而是使用一些中心化的方法或者某些有安全风险的替代品。
这里就引出了我们今天要讨论的主题 预言机问题——区块链应用落地的阿克琉斯之踵。
2.可能大家在很多地方都听到过预言机这个词,但又对他不甚了解。那接下来,我就为大家介绍一下什么是预言机,以及为什么区块链需要预言机。
预言机他的英文翻译叫Oracle。在区块链的世界里,他既跟甲骨文公司和数据库没什么关系,也不代表他有什么神力能预测未来。
简单来说,预言机就是一个提供你所需要的任何数据和结果的中介。在区块链的世界里他就是给区块链提供外界数据的中介,可以把他看成区块链和外界世界联络的纽带。在去年,央行发布的报告《区块链能做什么?不能做什么?》中,也提到了预言机,并把它定义为:区块链外信息写入区块链内的机制。V神在王峰十问的访谈里也曾提到——去中心化预言机是促进区块链生态发展的重要基础设施。
那么为什么我们需要预言机呢?
是因为在区块链中,只能获取到链内的数据,而不能访问到链外真实世界的数据,这意味着区块链与现实世界是割裂的。而导致这个问题的原因是,区块链是一个封闭的确定性的自恰的系统。
区块链是一个基于共识的系统,要保证各个节点在验证同一个程序的时候要达到确定的相同的结果。因此它必须依照系统内部的信息来自恰的运行才能保证这一点,不能基于外部世界不确定的信息。
举个例子,如果现在要在智能合约里面计算两个账户的余额之和 A + B,因为这两个账户的余额 A 和 B 都是系统内的信息,都是确定的信息,当一个节点计算完这个和的结果后,把这个结果发布出去,在任何一个节点上都能轻易地验证他是否是对的,因为这是一个确定的结果。
但是如果我们在智能合约里要基于一个互联网上的帖子的点赞数量 C 做一些运算。那么这就是一个系统外的信息,是不确定的,在不同节点去外界拿这个数据 C 得到的结果可能是不一样的,甚至同一节点不同时间去外界拿的结果都可能是不一样的。因此节点之间并不能相互验证正确性。而且随着更多的节点加入网络,新的节点需要把之前区块链上的所有交易重放一遍,这个时候去取得帖子的点赞数量也是有可能完全不一样的,新节点也没法去确认链上原本的数据是否是正确的。这样区块链的共识机制就会崩溃
因此区块链不能开这个主动的同步的获取外界数据的网络端口。智能合约要想基于外部世界的数据做些事情,就必须化主动为被动,化同步为异步。不能主动去拿链外数据,必须要依靠预言机这个中介把数据输入进来。一个链外的数据或者事件,经由预言机以交易的形式发送到链上以后,就变成了一个确定性的输入。就可以被智能合约引用了。
如果没有预言机,就会导致区块链与外部世界的隔离。所有需要与外部世界交互的应用场景,都无法实现。这会大大限制区块链生态的发展。
戈文波:
看来类似于操作系统的中间件。
王琦:
没错,就是middleware.
总结一下,预言机的功能是给链上提供真实世界的数据的中介,其最重要的特性是需要保证预言机这个中介本身没有作恶,没有篡改数据。
3.预言机的应用场景
其实针对预言机的功能,它的可应用场景非常广泛,只要是链上需要外界可靠的数据输入或者算力它都可以起到作用。比如
A. 我们熟知的也是目前区块链上应用最广泛的博彩游戏
博彩类游戏都需要随机数,在链上无法产生安全的随机数,前一段时间在EOS上频发的博彩类游戏频繁被黑的情况,就是因为项目开发者使用了不安全不正确的产生随机数的方式。通过预言机从链下引入一个安全的无偏的随机数,是这类问题的一个正确的解决方式
B. 金融衍生品交易平台
衍生品交易平台提供金融类的智能合约,允许用户做空或者做多背后的资产,例如Market Protocol, Decentralized Derivatives Association, DyDx Protocol 等都提供类似的服务。这类智能合约需要实时从链外获取资产价格,来确定参与各方的收益和损失,以及触发平仓交易等。
C. 稳定货币
稳定货币是一种和法币有稳定兑换率的加密货币,稳定货币可以作为价值的储藏和交易的中间媒介,因此又被誉为数字货币世界里的圣杯。 这里的稳定货币并不是指tether或者digix那种由一个中心化机构发行的货币,而应该是一种去中心化的被算法自动控制的加密货币, 包括Dai等以加密资产抵押物为基础的稳定货币。
D. 借贷平台
SALT Lending, ETHlend等去中心化P2P借贷平台允许匿名的用户用区块链上的加密资产抵押,来借贷出法币或者加密资产。 这类应用需要使用Oracle在贷款生成时提供价格数据, 并且能监控加密抵押物的保证金比率,在保证金不足的时候发出警告并触发清算程序。 借贷平台也能用Oracle来导入借款人的社交和信用和身份信息来确定不同的贷款利率。
E. 保险应用
Etherisc正在建立一个高效透明低消耗的去中心化的保险应用平台, 包括航空延误险, 农作物保险等等。用户以ether支付保费,购买保险,并根据保险协议得到自动赔付。Oracle能为这类应用引入外部数据源和事件, 帮助去中心化的保险产品作出赔付的决定,并能安排未来的自动赔付。
F. 预测市场
去中心化的预测市场比如Augur, Gnosis等等,他们应用了群体的智慧来预测真实世界的结果, 比如总统选举和体育结果竞猜。在投票结果被用户质疑的时候,需要Oracle提供真实的最终结果。
当然,币圈变化多端,新玩法和多种多样的应用层出不穷,潜在的应用场景还有无信任环境下如何验证身份,快递追踪和IoT应用等等我就不一一赘述了。
- 现有预言机解决方案
对于现有的解决方案,根据是否是去中心化的系统,我们可以分为两大类: 中心化预言机和去中心化预言机。
中心化的预言机代表就是Oraclize。
在去中心化的大类中我们根据是否需要人工参与又可以分为两类:
A. 需要人工手动参与的共识型预言机——预测市场
B. 不需要用户人工参与的去中心化预言机典型代表——Chainlink。
在下面我会一一详细介绍。
首先我们先对预言机的中心化和去中心化做一些讨论。
其实不管是针对预言机还是针对其他系统,中心化和去中心化都有类似的优缺点。中心化的预言机,有单点失效的问题,当中心化的预言机出现了宕机等等问题的时候,那么预言机的功能也不可用了。另外一个就是信任的问题。对于预言机来说,像我刚刚提到的,最重要的点就是怎么能保证预言机本身是可信的,没有篡改数据。中心化的预言机,需要面临的问题是,你必须信任这个第三方的中心化机构。而预言机提供的数据,往往是作为触发条件的,比较重要的数据。这个时候这个信任问题就显得尤为严重。
去中心化的预言机有更好的可靠性,但是性能要比中心化的稍低的。另外一个最大的好处就是,我们无需信任一个第三方的机构,整个系统可以在一个 “Code is Law” 的原则下在运行。这与中心化的服务器和去中心化的区块链之间的差别很像。想象一下,我们在区块链上构建Dapp,如果关键的触发信息和数据都需要中心化的预言机来搬运,那么颇有些与我们使用区块链的初衷相违背的意味。
下面我们来详细介绍一下现存的这几个预言机解决方案。
目前市场上唯一可用的预言机产品是运行在以太坊主网上的Oraclize,这是一个中心化的预言机项目,由Oraclize公司在运营,数据是由Oraclize公司架设的服务器在提供。因为唯一可用,所以Oraclize几乎占据了目前以太坊上大部分的预言机请求。
从图中可以看出目前Oraclize处理的请求数量平均在5000一天。
另外,在很多人眼里,Augur, Gnosis, Bodhi 等预测市场类项目也被划归为预言机这一类,原因在于预测市场得出的结果,也可以作为其他Dapp的输入数据。同时也有一些预言机项目是依赖用户的输入和投票来产出数据结果的,这类项目我们统一划归为基于用户输入参与的共识类预言机。
但是这种做法在很多场景不适用:
会造成比较大的延迟。需要等待大量用户的投票输入,无法产生实时的结果。
无法自动化,需要用户手动输入,由此会导致单个请求的成本大大增加。想象一下即使是比特币挖矿,也必然是由软件自动化运行。如果需要依赖手动操作,则需要给与用户大量激励,导致成本急剧上升。
最后就是不需要用户人工参与的去中心化预言机的典型代表:Chainlink。是由软件自动抓取链下数据,然后汇总到链上。Chainlink 17年9月就完成了ICO,目前还在以太的测试网中,且功能并不完备。Chainlink的实现从理念上,我们认为是正确的,但是实现的方式代价高,性能和可扩展性都比较低,并且由于基于声望的系统,容易受到攻击和相对中心化的问题。
这里先简单介绍一下Chainlink 和DOS Network的区别:
首先,是做共识的方式,Chainlink是由多个节点抓取数据以后都要汇总到链上,在链上做聚合,这样做的坏处是1.可扩展性不好,随着参与节点的增多,性能会急剧下降。2.开销比较高,因为有多条信息要发送到链上,gas消耗高,而且这个消耗随着节点数增多而线性增长。3.这样会造成更高的延迟,因为需要等到所有的发往链上的信息都被确认之后才能做聚合。而DOS是在链下做共识,性能高,扩展性好,开销低。
第二,Chainlink是基于声望的系统,即声望越高的节点约大概率被选为工作节点,这样会造成多种问题:
- 会形成重点的攻击目标,攻击者只要重点攻击这些声望高的节点就行了。
- 会造成网络的马太效应,从而产生中心化的问题,这些声望高的节点会越来越强,总是大概率的选到他们,使得他们在巨大的利益面前更容易作恶。而且会使得新加入网络的节点很难去与他们竞争。
第三, Chainlink会用可信硬件SGX,SGX有多种问题,应用率不高,准入门槛高,有漏洞可被攻破。
第四, Chainlink 将预言机的种类,按照请求类别做了划分,一个节点只能处理一种类别的请求。我们觉得这样是没有必要的,因为请求对于节点来说是透明的,并不需要特别分类。这样会导致更加中心化的问题。
- 最后来给大家简单介绍一下DOS Network,DOS Network也是不需要人工投票参与的去中心化预言机。
我们团队本身就是早期智能合约开发者,在这个过程中,我们发现智能合约Dapp有跟链外数据交互的需求。同时经过调研发现,做预言机的项目不多,很多需要预言机的场景却用到中心化的预言机或者其他不好的替代方案。现有的预言机都有着各自的缺陷仍然无法做到让DApp商业化的应用真正落地。因此我们决定专注在这个领域,发起了DOS Network项目,旨在为大家带来支持多链的去中心化预言机服务网络——为拓展区块链可用性提供可靠数据输入及可验证的计算力。
DOS Network 是一个Layer 2 二层网络, 可以支持多条链。
我们的系统架构分为两个部分,链上和链下。链上部分,是一套部署在主流区块链上的管理合约,可以理解为是一个接口,用户通过这个接口来获取服务。链下部分是一个去中心化P2P网络,是真正给用户提供服务的节点组成的。
工作流程大概是这样的:
A. 当链上的智能合约需要链外数据的时候,他需要调用我们部署在链上的DOS合约接口。
B. 链上DOS合约会在链下网络的节点中随机选择工作组,并将请求分配过去。
C. 工作组内的节点会去相应的数据源抓取数据,并且就得到的结果在组内达成共识。
D. 这个共识之后的结果会返回给链上DOS合约,在合约里进行验证,通过验证后,再通过调用回调函数的方式返回给智能合约。
我们采用基于可验证随机方程(VRF)的共识机制,由可验证随机方程产生的随机数在网络中随机选取工作组,组内的节点分别去获取数据,并对数据结果进行签名,得到签名碎片,当有超过一定阈值的节点获取到相同的数据就可以将签名碎片组装成一个有效的签名,从而形成对数据结果的有效共识,并将共识之后的结果和可以被验证的证明返回给链上合约。
通过这套系统,我们可以不用信任任何第三方机构,得到实时的链外数据,并且有比较好的性能和可扩展性。
这里需要强调的是,我们碰到的大家比较多的一个问题是,数据源是从哪里来的,是我们系统内指定的,还是用户指定的。
用户需要指明他要从哪个数据源获取信息
我们构建了一个安全可信的数据通道。而数据源,需要用户自己来指定。理论上,用户要访问哪些数据源对我们来说都是透明的。因此只要是互联网上能访问到的数据源,我们都可以支持。
你可以这么理解,在中心化服务器上,可以通过网络调用很方便的访问任何互联网API资源,但是去中心化区块链切断了这条通路。而我们就是帮助区块链架起了这条数据访问的通道。至于说你要访问什么API,我们是不管的。
如果用户不信任单一数据源的话,可以发起多个请求,获取多个数据源的数据,然后对这些数据进行聚合得到最终的结果。举个例子,如果合约不信任币安的数据,那么要么不使用币安的数据,要么告诉预言机除了币安之外还需要Bitfinex和Coinbase的数据然后在合约内用三个数据源做交叉验证 - 这是应用层的需要做的,但不是预言机在协议层(或者说infra层)必须做的。协议需要保证的是预言机对每个请求怎么自证清白没有篡改结果,如果有篡改怎么监测出来并且惩罚恶意提交者。这是应用层和协议层的典型区别。
接下来聊一聊我们系统中,通证的作用
在我们的系统中,通证可以起到很多作用:
节点维护者需要抵押一定量的通证才能加入网络为智能合约和开发者提供预言机服务并赚取手续费和挖矿奖励。恶意节点会被检测出来,并且作为惩罚,恶意节点的抵押会被没收。
预言机服务使用者需要向网络维护者付费。收费方式会同时支持按次付费模式和订阅使用模式。同时DOS通证会作为首先支持的原生的费用通证。同时考虑到稳定币在简化费用模型以及减轻节点运营者受价格波动负面影响等方面的作用,未来可能也会支持稳定币作为费用通证。
DOS通证也授予了节点运营者和通证持有者对预言机网络和生态的治理权。举例来说,节点运营者和通证持有者可以投票来表决是否要支持、支持哪些稳定币来作为费用通证。
在未来支持链外付费数据源和上线数据交易市场之后,请求链外付费数据的智能合约和开发者还需要给付费数据源支付相应的费用。
如果大家对我们的项目比较感兴趣,想要加入我们的网络成为节点只需要做两件事情:
- 在系统中抵押一定量的通证
- 运行我们的客户端软件
其他有关于项目的具体细节大家可以访问我们的官网或者查看我们的白皮书来了解。
相关链接
对于我们项目目前的进展:我们在去年第四季度在以太坊测试网上发布了alpha版本测试网络,开发者已经可以通过调用我们的链上合约来获取链外数据和安全的随机数。 目前我们正加紧开发beta版本测试网,预计本月底就可以跟大家见面。beta版本会涵盖我们数据预言机的功能。 我们预计在第二季度就可以上以太主网了,同时开始支持其他主流区块链如EOS, Tron等。
今天的分享就结束了,看看大家有没有什么问题。