预言机(Oracle)是一种喂价(数据互通)服务,充当区块链与外部世界之间的桥梁。它可以将链下数据传入区块链网络,使链下数据能够被智能合约使用;或将链上数据传出给链下客户,让他们根据链上信息采取行动。主流的区块链预言机包括 Chainlink、UMA Oracle、Witnet、Band Protocol 等。
预言机合约是一种智能合约。其在链上接收来自其他智能合约的数据请求,将请求传递给预言机节点。在收到预言机节点反馈后又将数据结果广播给请求者。
预言机节点是预言机服务的链下组成部分。其从外部来源获取、验证信息并将信息传输给预言机合约。
链上是一个封闭的系统,智能合约是不能访问区块链以外的网络和信息的。因为链下数据源是可操作、可篡改并且不透明的,而这不利于区块链节点之间形成共识,即不利于区块链网络的安全性。
举个例子,假设一个智能合约需要根据当前 ETH-USD 汇率执行交易,其从传统价格 API 获得该数据。 从不同数据源得到的数据可能会不一致(更不用说 API 可能会被弃用或被黑客入侵),这意味着执行相同合约代码的节点会得到不同的结果。也就是说,这可能会导致网络无法达成共识,而区块链作为去中心化计算平台的价值也会被削弱。
因此,对于区块链而言,当智能合约输入一个特定值只能产生一个特定的结果这一点非常重要。
此外,链上智能合约需要与链下数据结合才能实现各种各样的应用,例如预测市场、保险等。
为了解决这些问题,Oracle 将外部数据上传并存储在区块链上。由于链上数据不可更改且公开可用,因此链上节点可以安全地使用链下数据来执行交易,并且不会破坏共识。
对于去中心化借贷市场而言,协议需要知道资产(例如 ETH)当前市场价格来确定用户抵押品的价值。这样他们才可以评估一个用户的借贷能力、检查其仓位是否安全。
在用户索赔时,保险协议需要链上/链下数据来验证可保事件的发生与否。例如,当某些天气现象发生时,保险协议需要向购买农作物保险的用户支付补偿。这里的天气数据就由预言机提供。
跨链预言机是指在不同区块链之间读写信息的预言机。其为区块链协议提供了一个中间件,使它们无需花费时间和开发成本就能够连接到任何区块链。
你可能对以下信息感兴趣:
- 什么是 Chainlink?
- 什么是 DeFi?