预言机帮助将现实世界的数据带到链上,扩展了基于区块链的应用和服务的实用性。
要理解区块链中预言机的需求,就必须理解决定性(determinism)这一计算机科学术语,它描述的是一个没有随机性的基于规则的系统。比如可以执行程序代码的以太坊这样的区块链,是一种被称为状态机的决定性系统。状态机接受输入,使用它来产生输出,相应地更新其状态,然后重复这一循环。
区块链网络由称为节点的去中心化参与者组成。网络规则可以有所不同,但通常,大多数节点必须就处理的交易和区块链的整体状态达成共识。在这种去中心化环境中,所有输入必须被所有参与者以相同的方式读取和理解,以产生一致的输出。
对系统规则的严格遵循意味着,像以太坊这样的区块链被描述为决定性的。它只会计算那些所有参与者都知道的数据,因为这些数据可在链上获得,例如账户余额或智能合约执行的状态。
然而,区块链的决定性为依赖链下数据的智能合约创建了内在限制,例如加密货币相对于法币的价格或特定事件的结果,比如足球比赛的最终比分。
预言机是将这些链下数据带到链上的数据源,这样就能在不破坏区块链共识的情况下,用于智能合约的执行。预言机为依赖链下数据的智能合约使用案例解锁了广阔的可能性。
“预言机”(oracle)一词源自古拉丁语,在现代英语中有许多含义,包括在计算领域。在区块链中,这个术语有一个特别的定义,指的是从链下来源获取的信息源,为链上智能合约的处理打包。
区块链环境的决定性和去中心化特征意味着将链下数据引入链上引入了潜在的集中化和脆弱性。
例如,预言机常用于向去中心化金融应用程序提供价格信息。如果有人能够找到一种方式来操纵价格数据以获得利益,网络将无法知道这一点,并将基于错误信息验证交易。
由于区块链可以保护价值数十亿美元,这样的风险可能会造成昂贵的后果。
这个信任问题被称为“预言机问题”,这是实现智能合约潜力的最基本挑战之一。要成功通过预言机测试,预言机必须能够保证数据是从真实来源获得的,并且在链上处理之前没有被更改。
由于区块链 24/7 不间断运行,预言机还应能够保证数据源始终可在请求时获得。
公共区块链和去中心化应用程序(dapps)几乎完全依赖去中心化预言机。依赖单一集中化数据源的预言机通常不会通过预言机测试,因为单一实体也无法独立验证它们提供的数据的真实性和完整性。
去中心化预言机服务使用节点网络从各种链下预言机服务中获取数据,包括交易平台的价格数据或新闻终端的事件结果。然后节点网络比较数据源以检查其真实性,并丢弃可能扭曲数据的任何异常值。
去中心化预言机网络还使用基于加密的激励措施来确保为提供干净、准确的数据的节点得到奖励,并且如果发现它们提供不可靠的数据,将受到惩罚。
过程从智能合约向预言机网络生成链下数据的请求开始。网络响应通过从已建立为可靠的源拉取可用数据,并将数据汇总成对查询的单个聚合答案。然后将响应返回给原始智能合约。
不太常见的是,一些预言机也被用作传出服务,将链上数据传输到链外源。一个例子可能是将铸造的代币数量传输到在线 Web 监控服务。
尽管预言机理论上可以提供任何可想象的链下数据类型,但它们的使用通常分为三个主要类别。
如果没有由预言机服务提供的可靠财务信息的可用性,蓬勃发展的去中心化金融(DeFi)应用程序领域将不存在。价格预言机跟踪相对于法定货币的加密货币的价值,并跨交易所和全球资本市场跟踪诸如黄金或商品之类的资产数据,以便在各种 DeFi dapps 中使用。
区块链预测市场平台,如 Augur,允许对州选举或体育比赛的结果进行猜测,依赖于预言机数据来提供可靠的结果。
同样,诸如 Arbol 之类的保险应用程序依赖于去中心化天气预言机,提供有关气象事件的信息,以计算气候风险保险的准确保费。
随机数生成(RNG)是另一种通常由预言机服务提供的数据类型,因为真正的随机性与区块链环境的决定性相矛盾。尽管区块链网络可以生成某种程度的随机性,但像 PoolTogether 这样的骰子游戏和彩票型 dapps 依赖于产生序列或选择具有高度随机性的参与者的能力。
去中心化预言机使用一种称为可验证随机函数的加密算法在链下生成随机数。这使用公钥/私钥对来生成一个随机数和一个证明该数是随机的加密证明。然后将数字和证明提交到区块链以在智能合约中使用。
Chainlink是在支持的区块链和 dapps 的采用方面拥有最广泛覆盖范围的预言机提供商。Chainlink 向以太坊、Polygon、Avalanche、BNB Chain、Arbitrum 等许多区块链提供数据。其价格源被许多最大的 DeFi dapps 使用,包括Aave、Synthetix 和 Compound。
Band Protocol 是一个使用 Cosmos 的 InterBlockchain Communication (IBC) 协议构建的预言机服务,意味着它可以向任何启用 IBC 的区块链发送数据。它与支付协议 Celo 和 [去中心化交易平台」(https://metanethub.com/academy/web3/what-is-a-decentralized-exchange-dexInjective) Protocol 集成。
UMA(Universal Market Access)是一种高级类型的预言机,称为“乐观预言机”,旨在在标准预言机提供商提供的静态数据点之间发生争议时提供人为干预。UMA 主要针对开发者。