把区块链外的信息写入区块链的机制就被叫做预言机。比如,咱俩写一份智能合约,如果明天下雨那你给我1块钱,否则我给你一块钱。智能合约在区块链上,那么这个是否下雨的数据,就需要用预言机从外部读取了。换句话说,预言机就是区块链和现实世界之间的桥梁。
预言机不是预测市场,不是大家去投票决定一个事情真伪的机制。有些预言机服务只是从单一的 API 去读数据的,这样智能合约的最终安全性就又归于某一个中心化组织了。
这让人联想到区块链存证这个应用。区块链自身能保证的是数据的不可篡改。对于保证存入的信息的真伪,目前没有很好的方法。一些区块链存证方面的基本思路是这样的,那就是跟中心化权威机构合作。例如,如果这个信息是公安机关存入的,那么就认为是有效的。这种思路,Peter 个人认为也是有实用价值的,毕竟利用到了区块链的不可篡改的特性。当然,最大的权力还是在中心化组织手里,跟区块链的”共识决定一切,市场决定一切“愿景是不相符的。
总结一下,当前的预言机或者说区块链读取的数据的安全性都是带有着一定程度的安全性妥协的。
如何用去中心化的思路保证数据的真实性呢?
Peter 自己和朋友们讨论比较多的一种思路是从成百上千个互相不相干的 API 或者硬件传感器去读取数据,然后交叉对比去获得事情的真相信息。未来物联网发展起来,这个思路还是有可能实现的。Andreas 也有过类似的讨论 https://youtu.be/DyAjgkwwgyI?t=436 。
总之,去中心化的数据上链,需要人类社会变得十倍百倍的数字化之后,才比较可行。
安全的数据上链问题,是目前区块链发展的很大一个瓶颈。这个事实可以帮助我们理解这样几个现象。
第一,为何区块链智能合约目前几乎只有博彩类的有真实用户。因为真实世界和区块链是两个几乎隔离的世界。区块链最大的优势是公平随机数和链上资产,所以如果大家去进行链上资产的博彩游戏,这个还是可行的。
第二,为何大企业搞的联盟链的比较多。既然公链跟真正跟物理世界对接的时候,还是要依赖于中心权威机构的数据做预言机输入,那么完全去中心化似乎意义就不大了。那么类似联盟链这种思路,干脆把节点也做成实名制的,用大公司的信用做上链数据的背书,也不是没有道理了。虽然对于普通人来讲,这些联盟链跟大公司的数据库没有太大区别,但是区块链让各个大公司之间达成一定的数据共享和互信,也在很多场景下是有意义的。
总之,智能合约的每一点滴的进展都是缓慢和艰巨的。
最后总结一下。预言机机制是把真实世界的数据传递给区块链,以便让智能合约可靠运行的机制。安全可靠的数据上链,是非常有挑战性的。