预言机(oracle)2.0:用完即走,为智能合约可信地与外部世界交互提供必要条件(上)

预言机(oracle)2.0:用完即走,为智能合约可信地与外部世界交互提供必要条件(上)

【水伯】《消费者洞察指引》作者,stygoogle创始人;

移动网络时代唯一壁垒就是认知,周二有约给思想洗澡让认知破壁!

预言机(oracle)



预言机(oracle)2.0:用完即走,为智能合约可信地与外部世界交互提供必要条件(上)




引语:奥威尔小说《1984》

新语或新话(英语:Newspeak)是乔治·奥威尔小说《1984》中设想的新人工语言,是中心化的大洋国的官方语言,被形容为“世界唯一会逐年减少词汇的语言”; 奥威尔在小说附录解释过新语的原则:新语建基于英语,但大量词汇及文法被简化、取代或取消,例如“好”(good)是指“喜欢老大哥”(to love Big Brother),而“坏”(bad)则已被“不好”(ungood)取代,结果,削弱人用不同方式及语句表达意见的能力,无法说出“老大哥是坏的”(Big Brother is bad),只能说“老大哥是不好的”(Big Brother is ungood);这符合中心化组织的意旨,它“通过限制英语的表达方式消除个人的思想”,如果你没有词语表达非法的思想,你就不可能违法,同时也意味着你将失去发生变异,产生进化的机会。

预言机是区块链智能合约获取外部信息的唯一途径,智能合同系统要求不可信任的代码用一种特殊的语言重写,不幸的是基于性能的安全沙盒将强迫所有的合同作者使用一种类似大洋国的大量词汇及文法被简化、取代或取消的语言,造成智能合约的实用性大打折扣;例如,按照农产品价格情况来支付投保人赔款的农产品价格险保单,传统IT人员一般认为是如下的流程:智能合约会在预定的时间,从期货交易场所获取农产品价格,然后按照获取的数据采取预设的行动,听起来很简单,但却不可能实现,为什么呢?因为这里衍生出了两个问题,一是共识问题,二是受信方问题。

一、预言机(oracle)是智能合约与外部进行数据交互的唯一途径

区块链里的所谓预言机(oracle)听起来像古希腊神话里的东西,在某种程度上,他们的功能是相似的,在古代,人们没有足够的知识和经验作出判断,于是诉诸于神话里面的信息来理解那些超出他们认知的事物;

1、什么是预言机(oracle)

同样,像比特币、以太坊和EOS这样的区块链没有直接的途径来随时获取链外的信息,所以也没有直接的方法来验证触发智能合约所需的条件,所以简单来说:

预言机(oracle),是可信任的实体,它签署关于外部世界状态的信息;因为签名确认可以很明确地实现,预言机允许确定的智能合同对不确定的外部世界作出反应;这些预言机是智能合约与外部进行数据交互的唯一途径。

一些智能合同系统,包括建立在比特币等区块链上的,都是严格确定的;预言机作为一个提供外部信息的平台,提供了智能合约在合约条款得到满足时运行的必要条件,其目的是在区块链和互联网之间建立一道可信的数据网关,其目标是打破智能合约获取数据的束缚,在保证可信的情况下,使其具有访问互联网数据的能力;为保证所获数据的真实可信,通过提供多种加密证明方法,构建可信的预言机;这些条件可以是与智能合约有关的任何东西: 温度,支付完成,价格变化等;为了可靠的与真实世界交互,这些系统依靠预言机(oracle)的外部系统提交的加密签名信息,预言机(oracle)的运行状态如下图:




2、预言机(oracle)的运行原理

多种区块链可以通过预言机(oracle)有效的访问互联网API,保护其Dapp的安全性和健壮性,目前仅支持Ehtereum、Bitcoin、Rootstock、Eris等几种种区块链;用以太坊为例子,目前采用Solidity的智能合约只能存取访问链内的信息,而预言机(oracle)作为一个数据传送者,可以在以太坊的DApps与Web APIs之间提供可靠连接,让基于智能合约的Dapp应用可信的地取得外部信息和数据,运行原理如下图:




预言机(oracle)在以太坊上部署了一个Oracles的智能合约,如果需要其数据访问服务,只需要在自己的智能合约中引用该智能合约,然后根据API文档中描述的方法进行相关的调用即可;如果某些组织利用以太坊技术搭建了自己的私有链或者联盟链,预言机(oracle)在Github上提供数据服务的开源智能合约代码,通过自己部署后,一样可以像公有链一样调用;预言机(oracle)提供了多种数据源服务器,包括Url访问、数据搜索引擎、区块链内容数据、IPFS文件访问等等,其中Url访问和区块链内容数据提供了基于TLSNotary的可信证明技术,也是常见的数据访问需求。

3、预言机(oracle)可信证明机制原理

预言机(oracle)之所以可以提供一个可证明的诚实从外部世界安全获取信息的能力,是依赖于TLS证明技术(TLSnotary),除此以外,预言机(oracle)还提供了其他两种证明机制:Android SafetyNet证明、IPFS大文件传送和存储证明;TLSnotary证明主要基于安全传输层协议TLS 1.1,TLS用于在两个通信应用程序之间提供保密性和数据完整性,最大优势就在于独立于应用协议,更高层协议可以透明地分布在 TLS 协议上面;

TLS包含三个基本阶段:

1、对等协商支援的密钥算法;

2、基于私钥加密交换公钥、基于PKI证书的身份认证;

3、基于公钥加密的保密数据传输。

在整个传输中,TLS的master key可以分成三个部分:服务器方、受审核方和审核方;在整个流程中,互联网数据源作为服务器方,预言机(oracle)作为受审核方,一个专门设计的,部署在云上的开源实例作为审核方,每个人都可以通过这个审计方服务对预言机(oracle)过去提供的数据进行审查和检验,以保证数据的完整性和安全性。

二、预言机(oracle)为智能合约可信地与外部世界交互提供了必要条件

智能合约的触发和运行不能没有数据源;没有这种提供外部信息的平台,智能合约只能应用在少数地方,实用性也会大打折扣;然而,一旦有了这些预言机系统,智能合约几乎可以应用在现实世界的每个领域,一旦数据被传入区块链,便可以作为执行合约所需的输入或者提供使用案例,其带来的改变对大多数行业来说都是颠覆性的。

1、区块链世界和现实世界的不相兼容,沟通依赖预言机(oracle)

区块链世界和现实世界在形式上有一个根本的区别,区块链是确定性的,这意味着其是一个接一个发生的特定事件的反映,亦即一系列顺序特定且具有因果关系的“交易”;然而,在链外访问的信息并不是如此,他们可以是不连续的,因此这些信息在区块链里无法被信任或使用;区块链的固有特性赋予了它不变性,但也减少了灵活性和可扩展性;由于区块链本身是一个去中心化系统的世界,区块链对外界信息不了解,外面的信息如何输入到区块链里,众多区块链节点如何接入外部信息,是否变成中心化方案,这个都会有很多变数。




举一个基于区块链的数字货币交易所的例子,这个系统需要定时获取指定数字货币的最新价格,在传统的互联网系统中这个是最简单不过的,就是定期输入价格数据或通过第三方接口来获取数据,但就基于区块链的系统来说,情况会变得很不一样;在区块链体系中,作为第三方的外部数据来源(data feed),会发送给区块链和智能合约指定的信息数据,而由于数据传送者是一个中心化的参与者,因此不能想当然地认为智能合约可以自己去直接获取相关外部数据,这样你想从某些互联网交易中获取ETH/USD的最新成交价格,数据传送者会从这些交易数据中返回折中计算的成交价格,这个数据传送者也会整合不同的数据来源并达成共识获取平衡的交易价格;但是,你怎么能确保这个数据传送者不会在过程中修改数据?在接收外部数据的节点是单个节点又还是所有节点都接收呢,这些外部数据的又如何在区块链中达成共识取得信任呢?区块链世界和现实世界的不相兼容,使得我们必须提供一个预言机才能使他们之间的双向沟通成为可能。

2、共识依赖预言机(oracle)

区块链是基于共识的系统,只有在每个交易和区块处理过后,并且每个节点达到相同状态,智能合约才能正常运行,所有事情必须是精确一致;如果节点之间对数据状态有歧义,整个系统就无法可信稳定运行了,在上面的案例中,智能合约由链上的每个节点独立执行,因此如果智能合约从外部服务获取数据的话,这个数据获取过程是由各节点重复和独立完成的,假设这个区块链有100个节点,那么就会有100条获取数据的请求从每个节点发送到数字货币交易所,但是因为这个数据来源于区块链外部,价格是实时波动的,由于网络延迟、节点处理速度等各种原因,每个节点获取的并不是同一时刻的价格,输入到智能合约的价格数据也就不同,因此对应的各节点智能合约输出也会不同,在这种情况下,整个区块链的信任基础就会崩溃,无法达成共识。




解决的方法其实很简单,不通过智能合约发出外部数据获取指令,而是由第三方发送一笔区块链交易,在交易中附加需要的数据,交易会将数据嵌入区块,并同步到每个节点,从而保证数据的完全一致,因此可以用于智能合约的计算中;总结就是由第三方将数据推送进区块链,而不是由智能合约将数据拉取进去。

3、受信方依赖预言机(oracle)

前面提到的解决共识问题方法核心就是区块链被动接收数据,与外部的交互依赖于第三方,这个时候就会引入第二个问题,第三方如何信任?第三方如果在数据传输过程中私自篡改数据怎么办?如何审计第三方是否从正确的地址获取的数据?为解决可信问题,就需要引入预言机(oracle);预言机是一种可信任的实体,它通过签名引入关于外部世界状态的信息,从而允许确定的智能合约对不确定的外部世界作出反应;预言机具有不可篡改、服务稳定、可审计等特点,并具有经济激励机制以保证运行的动力;目前来说,预言机有两种模型,一个是单一模型,另一个是多重模型,有时候多重模型又称为预言机(oracle)网络。




单一模型只包含一个预言机,这一预言机是可信任的,它会正确地执行代码,合约的参与者能确信它不会与合约的某一参与方相勾结,单一模型类似于软件即服务提供者;对于大部分应用,单一模型已经就足够安全,并且经济实惠。目前一个单一模型的实例是Oraclize;多重模型包含多个预言机,甚至是预言机网络,在这一模型中,代码的执行分布在若干独立的预言机中,例如10个,将这10个预言机的数据设置一个可信临界,临界值数量的智能预言机必须就结果达成一致,例如,用户使用7/10模型,只有当等于大于7个智能预言机一致时,合同才能够执行,多重模型比单一模型更加复杂,成本更加高,但是它提供了更好的安全保障。

(注:知道了“是什么”、才知道该做什么,知道了“为什么”、才知道结果会怎样;上篇我们理解了是什么、为什么,下篇将继续为我们讲述“该怎么做”,别人是“如何做的”。敬请期待!)

彩蛋:预测市场是为未来事件预期结果进行定价

为什么预测市场能够成行?简单来说,通过低买高卖以奖励能作出更佳市场预测的人,通过买高卖低来惩罚作出较差市场预测的人;迄今为止的证据表明,预测市场的预测结果不比预测相同事件的专业机构差。

现代的预测市场起源于上世纪90年代初,其理论基础包括有效资本市场假设(Efficient Capital Markets Hypothesis,ECMH)和海耶克假设(Hayek Hypothesis);本质上,预测市场是基于市场原则来收集整合交易各方对同一事件的信心和判断,从而产生对事件的未来结果的预测;如果说,股票市场是在为股票未来的预期收益定价,预测市场就是在为未来事件的预期结果进行定价。

其中的著名理论“Futarchy”由预测市场之父Robin Hanson提出,主要概念被精简为,“用选票表达价值观,用钞票下注信念”;在这样的制度下,一个机构设定一个目标,让人们用经济学方法支撑各自认为有用的方法;如果甲乙双方需要作出决定,就会发行代表两方的代币,并形成相应的代币市场;具有较高价格的市场拥有决策权,然后胜出市场的代币持有人可以按照该目标实现情况获得相应收益。

-End-

发布于 2018-03-27

文章被以下专栏收录

    在日常生活工作当中,我们想让别人做的事情,和别人真正在乎的事情,也存在着一道难以跨越的鸿沟,我们该如何跨越鸿沟建起桥梁呢? 为了建立起正确的桥梁,我们不但要问what,更要问why?在经典消费心理学实践中,我们发现:“消费者并不是在做出最好的选择,而是比过去某个选择(默认选择)感觉更好的选择”; 这就引申出了以下四个必须要给出答案问题: 1、消费者过去的默认选择是什么? 2、相对默认选择的不合理,消费者真正在乎什么? 3、如何激发消费者的改变来解决不合理? 4、唤醒消费者,解决不合理。