预言机是一种机制:将区块链外的信息传导到区块链内。预言机只负责数据的可信获取,不直接参与交易的执行。
在之前的推送里,我们就有介绍过智能合约,而智能合约中是怎么判定现实世界结果的呢?
比如说小卡和小明使用智能合约打赌今天中午12:00深圳是否会下雨,到了时间,智能合约会自动判定结果然后将奖励划给胜方,为实现去中心化、不受第三方控制的过程,智能合约是在区块链上的沙盒运行环境(通常是虚拟机)部署的,与外界隔离。
当智能合约在虚拟机中运行时,并不能进行网络操作、文件I/O或执行其他进程。并且出于运行独立性和安全性的要求,智能合约之间也只能进行有限的调用。
智能合约允许在没有第三方的情况下进行可信交易,实现交易的可追踪且不可逆转性,但是无法与区块链外的数据发生直接联系(如外部数据的获取与调用等)。
那么问题来了,到了中午12:00时程序如何获取当时深圳的天气信息呢?
那就需要一个外部的介质将数据写入区块链或分布式账本中,那么问题又来了,如果是由第三个人小红进行结果输入,如何保证公平性和去中心化?假如小红被其中一方收买,即使现实没有下雨也输入了下雨的结果,那么智能合约就失去了其意义。
那该怎么办?
这时候就需要“预言机”了。难道“预言机”能自动预知未来?不要被它的名字误导了,其实并不是这样。
什么是预言机
其实,“预言机”并不是什么神秘的魔盒,而是一种机制:将区块链外的信息传导到区块链内。并且我们需要明确的是,预言机只负责数据的可信获取,不直接参与交易的执行。
还是以上述的例子,如果小红一个人容易被收买,那么如果找来随机的20人来写入结果呢?让他们每个人拿出十块钱作为保证金,如果按照准确情况写入结果就能拿回保证金甚至还能获得额外奖励,而如果恶意写入错误的结果,就会被扣除保证金作为惩罚。这20个人做的事情就是简单的预言机做的事情。
此外,从这20个人的组织和工作形式(即是否去中心化)又可以将现有的预言机分为两类:中心化预言机,如Provable;去中心化预言机,其中又包括可信联盟预言机,(如 Maker DAO 的 OSM)和去中心化预言机,如 ChainLink、Tellorr、Band、Augur、UMA。
中心化预言机指由单一的特定预言者(Oracle)为服务请求方(User)提供数据,对某一特定的数据服务请求,在请求方指定n个数据来源并向中心化预言者发送合约请求后,服务商从1个或多个数据来源(Sn)的接口调用数据。中心化预言机的好处是高效、成本低,因为单一数据来源的成本远低于从多个数据来源汇总的成本,且仅从最可信的一个数据源调用数据,保证了整个预言机系统运行的高效。
而去中心化预言机则由多个预言者(Oracle)共同提供数据获取服务,利用纠删码(Erasure encoding)技术处理冗余答案来提高整个预言机系统的判断准确率。所有的预言者(On)将在规定时间内将数据源(Sn)提交的答案汇总和处理后,将汇总后的答案反馈给请求方(User)。
总的来说,中心化预言机的商业模式本质上是一个数据服务平台,而去中心化预言机是一个庞大的的数据服务网络,全网的互通互联,因其有效整合了系统加盟的多个预言者的资源,从而形成有效的商业合力。
因此不难理解中心化预言机在性价比和用户体验上具有先发优势,而去中心化预言机因在客情和生态的模式上占优而具有较大的后发优势,也在web3世界里成为主流发展方向。
预言机的实现原理和应用现状
刚刚所打的比方仍然是需要人手进行,实际上预言机是怎么实现区块链上的“先知”功能的呢?
实际上,预言机在链上链下信息传递过程中扮演着数据来源API接口之间桥梁的角色,从而实现区块链接口与外部数据API接口形成对接。它既可以从原生的链上获取数据,也可以通过爬虫或者可信第三方机构从链下获取数据。
通俗来说,“预言机”(即oraclemechanism,一般称Oracle)就是链上与链下信息交互的桥梁。有了预言机,就可以解决智能合约不能获取非预先部署好的链上信息的痛点,从而在更好地利用区块链技术接入现实世界,发展出更多的业务可能性,比如航班的延误险、汽车意外保险、商业约定等。
预言机总结
总的来说,预言机是相当于一个数据接口,不参与智能合约的执行、决策,而仅作为链上链下信息交互的一个桥梁,也可以理解为我们做研究得出结论时所用的参考文献库。
当然,它仍存在一些不足,比如说数据来源的真实性、准确率,不管是中心化或非中心化的预言机都是有可能出现错误的,并且这种错误引用可能给智能合约参与方带来巨大的不可逆损失。
]
免责声明:
本文观点仅代表作者个人观点,不构成本平台的投资建议,本平台不对文章信息准确性、完整性和及时性作出任何保证,亦不对因使用或信赖文章信息引发的任何损失承担责任