区块链的去中心化账本和智能合约为当今社会解决了P2P交互的信任问题,无需任何中心化机构进行信任背书,这是人类社会信任体系的重大革新。但是当前的智能合约无法主动向外部获取链外信息,使得它只能在一个封闭、孤立的环境中执行任务,无法做到和外部世界的互通互连。
预言机(Oracle)的出现旨在为区块链解决上述问题,作为智能合约与外部世界通信的网关,为区块链打开了一扇通往外部世界的窗户。
什么是预言机?
在计算机领域,预言机是一种抽象电脑,又称谕示机。预言机具备图灵机的一切功能,并额外拥有一种能力:可以不通过计算直接得到某些问题的答案,这个过程叫做Oracle(神谕)。也就是说,预言机可以解决图灵机通过计算也无法解决的问题,比如从外界获取问题的答案。
举个例子,有一个天气预报预警的DApp,用户可以通过链上智能合约进行天气预报的查询。天气预报的数据不是在链上自行生成的,而是需要智能合约向气象服务网站的接口发起请求获取数据。这时预言机就起作用了,智能合约可以向预言机发起请求,由预言机执行气象服务网站接口的调用,返回一致性的响应数据给智能合约,供智能合约处理。
看似很简单的执行流程,实际上其中隐含着许多问题,比如:
如何保证数据源的数据不会做恶?如果一个数据源给预言机节点A的答案是“是”,而给预言机节点B的答案是“否”,该怎么办?这里就需要引入多数据源请求来保证数据源的数据真实性。而事实上我们是不能保证用户请求的数据一定存在多个真实可信的数据源的,那么我们的预言机系统就必须要容忍数据源作恶这种问题的存在,比如不能对返回错误答案的预言机节点进行惩罚。
诸如此类的问题还有很多,为了预防这些问题的出现,去中心化预言机需要进行缜密、全面的设计。
A. 多预言机节点
为了防止单节点预言机的信任问题,需要多个节点共同执行预言机数据的请求处理。多节点会带来的数据不一致问题,这时数据的聚合一定是需要的。常用的聚合算法有BFT共识算法或者门限签名算法等。
B. “提交-揭露”机制
预言机节点之间的数据广播会带来Free-loading(吃空饷)问题,即一个预言机不是通过访问数据源来获取数据,而是复制其它预言机的答案。当吃空饷的节点占据大多数时,如果这些节点复制了一个错误的答案,这将变成一次大多数攻击,危害系统安全。我们可以通过“提交-揭露”机制解决此问题,预言机节点分两阶段提交数据答案,第一阶段提交的答案是加密的,在收到足够多的预言机答案之后,才解密全部答案。
C. 多数据源或可信单数据源
数据源的诚信问题是很难解决的,因为这不是预言机的问题,而是一个外部问题。用户在使用预言机时应确认所访问的数据源是安全可靠的,而当用户访问到一个不安全的数据源时,不安全的数据很可能导致预言机返回一个错误的结果。当然,通过使用多数据源访问数据可以在一定程度上防止少数数据源的作恶,但是这种做法不具通用性,因为并不是每一条数据都具备多个外部数据源供应。
D. 利益分配
去中心化预言机需要设计一套激励机制,以给与预言机节点行为对应的奖励和惩罚。预言机节点在加入去中心化网络时需要支付一定的保证金,以防止节点的作恶。理论上获取到与共识结果相同答案的预言机都应该获得相同的奖励,因为他们都是达成共识结论的贡献者。在惩罚规则方面,我们不能因为某个预言机节点的答案与共识结果不同,或者不能即时返回请求结果就惩罚他,因为我们不能辨别是预言机节点在作恶还是数据源在作恶。而对于Free-loading的问题,一旦在“揭露-提交”阶段发现节点在吃空饷,则需要按一定比例扣除其质押的保证金。
当前市场的预言机项目
1.ChainLink
Chainlink的目标是构建一个完全去中心化的预言机网络,网络节点兼容以太坊、比特币和 Hyperledger,并支持模块化:系统的每个部分都支持升级。其主要的想法是为预言机打造一个可信的市场。有良好行为的预言机节点会受到激励,其表现和声誉会公之于众,反之有恶意行为的节点会受到惩罚。Chainlink 一开始是在链上对预言机的数据进行聚合,后续设计为链下进行数据聚合。
2. DOS Network
DOS Network是一种可扩展的 layer2 协议,它为主流区块链提供分散的数据馈送 oracle 和分散的可验证计算 oracle。它将链上智能合约与链下互联网数据连接起来,为区块链提供无限可验证的计算能力,使更多的商业应用能够与真实世界的用例相结合。
3. Provable
Provable是一款中心化的预言机应用服务,为Ethereum、Rootstock、R3 Corda、Hyperledger Fabric、EOS等区块链提供预言机服务。
Provable开发的解决方案是使用中心化预言机,并证明从原始数据源获取的数据是真实的和未被篡改的。证明通过返回的数据与称为真实性证明的文档一起实现。真实性证明可以基于不同的技术,例如可审计的虚拟机和可信执行环境。
预言机应用场景
1.去中心化衍生品
衍生品是两方或多方之间的金融合约,其价值基于相关资产。衍生品允许人们对标的资产提出不同的视角(长期或短期),从实质上促进金融稳定。公共智能合约平台可以创建和交易金融衍生品,包括基于区块链的资产。预言机可以通过提供价格馈送,结算价值和合约到期来确定参与方的收益或损失,从而在去中心化衍生品中发挥重要作用。
2. 稳定币
获取有关稳定币和它们所固定的资产之间的汇率的外部数据是预言机的一个重要场景之一。
3. 去中心化预测市场
像Augur和Gnosis这样的去中心化预测市场利用人群的智慧来预测现实世界的结果,如总统选举和体育博彩结果。如果投票结果受到用户的质疑,预言机可用于快速和安全的解决方案。
4. 智能合约保险
在免信任且可靠的信任源加持下,保险产品可以通过智能合约的形式实现。当前的商业案例比如Etherisc的去中心化的保险应用(如航班延误保险和作物保险)平台,FlyingCarpet 的人工智能和地理数据的新型可编程保险等。
5. 去中心化贷款平台
像SALT Lending和ETHLend这样的去中心化点对点借贷平台允许匿名用户在区块链上抵押加密资产,以换取法定或加密贷款。可以应用预言机在创建贷款时引入市场利率,并监控加密抵押品与贷款金额的比率,如果贷款周期到了,则触发清算事件。
本文内容由 曲速未来 (WarpFuture.com)安全咨询公司整理编译,转载请注明。 曲速未来提供包括主链安全、交易所安全、交易所钱包安全、DAPP开发安全、智能合约开发安全等相关区块链安全咨询服务。