像以太坊或者EKT这样的纯粹的运行于虚拟世界的、可以支持智能合约和DApp开发的区块链系统,并没有直接的途径来获取和验证链外的数据。但是智能合约如果想要更好的服务于现实世界(而不是仅仅应用于游戏领域),就需要真实的链外数据写入区块链,完成和智能合约的交互。承担这部分功能的模块或者应用,就被成为区块链的预言机(Oracle).
一、什么是预言机
简单来说,预言机是一个可信任的实体,它可以对外部信息的状态进行签名。这个外部信息和签名可以发送给智能合约,智能合约可以根据接收到的数据来判断是否满足触发智能合约预先设置好的条件,从而完成智能合约和外部世界的交互。
预言机作为一个提供外部数据的平台,提供了智能合约在合约条款得到满足时运行的必要条件,在区块链和真实世界直接建立了一道可信的数据网关。预言机不生产数据,只是一个数据的搬运工。
二、为什么需要预言机
区块链系统上的数据是有序的、可信的以及规范的,但是真实世界的信息却可能是杂乱无章的、无序的。我们来看一个案例:
2018年的世界杯即将开赛,球迷可以把对赌的约定写入智能合约。比如球迷A预测巴西队会夺冠,而球迷B则预测德国队夺冠。它们把各自的约定写入一个智能合约并投入代币作为赌注。如果巴西队夺冠,则把B的赌注转给A。如果德国队夺冠,就把A的赌注转给B。而如果两队都没有夺冠,则智能合约自动解除。
这个方案看似不错,但是接下来的问题是如何把比赛的结果传入到这个赌约里,以验证该如何触发智能合约的条件并得到结果?如果由双方球迷来写入结果,那一定不是客观的。预言机就是提供了这样一个机制,来保证把正确的结果写入区块链。
上面比赛的例子是现实世界中一个非常简单的案例,而如果要把智能合约推向更加广泛的应用,比如保险、期货或者供应链等,那智能合约需要清楚的定义合约触发的条件,而预言机也需要能够更加精确的来对显示世界的信息进行验证。
三、预言机的几种分类
预言机根据其实现形式,可以简单分为人和机器(广义上的)两类。这两类可以继续细分,比如机器可以分为传感器、Web API以及AI等。
人或组织
很多开发区块链系统的极客可能会认为人或者组织是不可靠的、可能产生腐败的,因此不是一个好的预言机。只有算法或者程序才是最靠谱的数据源。持有这种观点的人忽略了人类社会发展的一般规律。如果人类世界是一个纯粹的虚拟世界,那信赖程序或者算法或许还说得通。但是在人类社会中,人是天然去信任强大的机构或者人物的。对于某些边界模糊的问题,由人组成的组织拥有对算法的天然优势。举一个例子,假设诺贝尔奖的评定写入了智能合约,里面设计到某个人的科学成果是否对科学的发展产生了足够的推动和影响。那这个预言机(可以理解为诺贝尔评审委员会)你是希望由程序组成,还是由一群德高望重的科学家们组成?
机器
传感器:传感器是非常好的记录现实世界信息的数据源,尤其是传感器不是被某个组织全部掌握,而是广泛的分散在个人中的话。举一个例子,如果我们想到区块链上去查询“北京今天的PM2.5值是多少?”这一类问题,那么由政府机构的监测站和个人手里的检测设备可以共同的组成一个预言机。这个语言机有很大的反脆弱性和可信性。即使某些设备的数据被篡改或者宕机,最后由这一个统一的预言机系统产生的结果依然是可信的。
Web API: 互联网上已经记录了很多现实世界中的各种信息数据,如果能把这部分数据做一个过滤和筛选,那互联网或者对互联网信息封装的接口也可以作为一个预言机。继续以上面的球赛为例,可以设计一个这样的语言机:通过API监听世界各大体育媒体的报道,综合这些媒体的报道来判断最后是哪一个球队胜利。
Web API 也可以由信用高的组织提供,比如Google或者Facebook。
AI: AI 现在正在火热发展,如果AI 系统成熟,那么AI作为预言机则有着更大的想象空间。它可以更加快速的完成对各种条件的收集、统计以及验证。另外由于区块链系统天然提供了代币的激励机制。如果AI作为预言机可以获取系统的经济激励,而它可以把这种经济激励用于维持自身系统运转的必须消耗的话,那么AI 就是一个自给自足的预言机系统了。
四、对 EKT 预言机的一些思考
EKT 作为一个多链多共识的区块链平台,提供了对智能合约的运行支持。预言机作为系统基础设施的一个部分,我们也对预言机的设计做了一些思考,在这里和大家分享:
预言机的设计必须考虑经济激励和惩罚
链外数据写入区块链的过程是可以被篡改的,因此在这个过程里必须考虑到经济激励和惩罚机制。如果一个预言机可以源源不断的提供真实世界的数据,那么它可以在系统里获取相应的Token奖励。而如果一个预言机试图作恶,那么作恶对预言机的损失要远远大于它持有的Token。
引入多数据源互相验证
EKT 提供了多链多共识的机制,那预言机也可以利用这个多链多共识的机制,不同链可以对同一个数据进行验证。
数据的验证权和Token数量绑定
在数字世界新建“僵尸粉”实在是太容易了。因此数据的验证权需要和DPoS的投票权类似,需要先通过投资来获取。这里和第一条提出的“惩恶扬善”的原则相对应。
EKT 是一个全新的公链系统,其底层的多链多共识架构对预言机的实现提供了一个更好的支持。不同主链、不同共识机制提供的数据源验证,对目前已经存在的但是还不够成熟的预言机机制提供了一个更可信的基础平台。
好了,今天关于“预言机与EKT”的文章就到这里了。
如果大家有任何关于技术上的问题想与我讨论,
如想关注EKT的项目进展,欢迎关注微信公众号:EKT多链技术