> For the complete documentation index, see [llms.txt](https://zkoracleofficial.gitbook.io/zk-oracle/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zkoracleofficial.gitbook.io/zk-oracle/xiang-mu-bei-jing.md).

# 项目背景

## 1. 为何需要预言机？

基于智能合约的去中心化应用程序因其自动化执行的特质而具有巨大潜力和落地价值，无需信任的智能合约取代中心化中间人将会对传统商业产生颠覆式创新。在Web2.0时代，中心化的企业是数据存储、分析和散布中获利最多的组织。在Web3.0中，去中心化网络可产生一个范式转移，可让使用者恢复自身数据所有权，并把互联网络真正归还到使用者手中。

然而，去中心化应用程序在一个无需信任的方式下运行，很多需求仍然需要依靠外部数据。可是，因为受限于本身的共识模型，区块链无法通过主动发起网络调用（Network call）来直接导入真实世界的数据与信息。区块链的共识机制决定了链上每笔交易和区块处理过后，每个节点必须要达到相同的状态，所以即使在链上布置接口直接导入数据，这些数据因为无法满足共识也不会被接纳。智能合约目前也没有一个简单的方法来访问可靠的现实世界数据的手段，这使其应用场景相当有限。当前去中心化应用程序依然依赖中心化数据服务来提供数据，这代表一开始在数据层面就丧失了去中心化的意义，包括如下方面：

a)     数据可用性问题

智能合约无法自行存储数据，对于去中心化的应用程序，没有内建的查询中间层来有效准确接收和验证现实世界数据。在去中心化应用程序可以用简单的方法调用接收实际外部数据输入之前，在采用这个技术和实现开发人员想要开发的DAPP应用之间将会有很难解决的障碍。

b)    对可信和可靠数据的需求

在完全的去中心化环境中，加入避免他人破坏和攻击关键数据来源的经济激励是非常重要的。在通过建立强有力的激励机制以确保高质量和可靠的数据资源之前，Dapps应用将有很大的风险并持续遭受这些安全问题。

比如：如果预言机提供的外部数据源控制了智能合约的数据输入，那它就有能力决定智能合约的反馈和行为。如果预言机受到损害，那么智能合约和所有依赖于智能合约的系统都一样会受到损害，从而使整个DAPP中的安全性都出现明显的弱点。

综上，DApps需要预言机系统与其协同工作，才能解决外部中心化数据可靠的访问的问题。

## 2. 中心化or去中心化？

预言机的工作流程可以概括为：数据提供者通过链下API获取外部数据并传输至链上预言机合约，预言机合约将会按照内置机制对数据进行验证并将符合条件的数据提供给用户的智能合约。预言机的工作流程看似简单，但是将整个过程确保数据满足用户对信任的需求，并尽可能地做到保密、低耗以及高效是非常困难的，这也是目前预言机需要探索和进步的方向。

![预言机的工作流程](https://3717660510-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MJFQs4eKNbVJsK04GK7%2F-MJVcJCkE-Yu9mV-hRw5%2F-MJW7eo7PT9ZYW-MqSon%2Fimage.png?alt=media\&token=4d6bb979-81c5-4442-afaa-9c04bd0302bb)

现有的预言机项目，从数据确权方式角度分类，可以分为中心化预言机和去中心化预言机两大类由于中心化预言机本身的机制弊端，去中心化正在成为预言机未来发展的主要趋势。

a)     中心化预言机

中心化预言机的数据来源于第三方中心化机构，为了确保数据的真实性，该机构必须具有完全权威性。此时用户对数据的信任问题转移为对该中心化机构的信任问题。

中心化预言机采用中心化的控制方式，可以帮助链上合约快速高效地获取数据。对于中心化带来的信任问题，目前主要解决方案是采用“真实性证明技术”作为保障。以Provable（原Oraclize）项目为例，它是目前比较知名的中心化预言机，专为以太坊提供中心化预言机服务。Provable依托亚马逊AWS 服务和TLSNotary技术，对每一个返回的结果都可以提供一个未被修改的证明，表明提供给合约的数据是数据源在某个时间点上的正确数据。“真实性证明技术”虽然可以证明供给合约的数据与数据源上数据相同，未被修改，但对中心化数据源本身的数据正确问题难以验证，也就是说这个机制存在数据源风险问题。Synthetix项目就曾经因为这个问题损失惨重：2019年6月25日，Synthetix系统的预言机Synthetix Oracle，给Synthetix智能合约提供误差非常大的外部数据，该数据报告的KRW（韩元）价格竟然是实际价格的1000多倍，Synthetix为此付出了约10亿美元的损失。虽然后来经过协商解决，Synthetix在支付一定代价后挽回了大部分损失，但是在这样的事件中，中心化预言机的致命缺陷暴露无遗。

此外，这样的中心化机制还存在其他明显的弊端：自身算法（譬如Provable使用的TLSNotary算法）逻辑与功能缺陷风险问题、单点故障问题导致的系统停机问题等等。这些潜在的风险仿佛一个个定时炸弹，一旦引爆将对系统平台以及用户财产产生巨大威胁。

b)    去中心化预言机

对于预言机来说，最终目的是为了实现安全可靠的数据传输上链行为，而中心化的弊端不仅无法让用户对系统完全信任，还会导致不少安全隐患。至此，去中心化或分布式成为预言机的探索方向和发展趋势。

与中心化预言机由中心化机构提供数据的机制不同，去中心化预言机使用与区块链分布式帐本相同的运行逻辑，采用多个节点同时提供数据的方式。因此，去中心化预言机的机制和流程更加透明，不依赖单个数据源消除了单点故障问题，独立的经济共识模型也保证了系统的稳定和发展，所以分布式结构有望解决中心化预言机中存在的单点故障和用户信任问题，从而打造一个无需信任（trustless）的系统。

Chainlink作为目前主流且热度非常高的预言机项目，是以太坊区块链上第一个去中心化预言机解决方案。在项目初期，Chainlink的方案主要是希望通过链上聚合与链上治理双管齐下的方式，来确保其数据的正确性。概括来讲，这种方案简洁有效，但同时也存在链上聚合带来的Gas费用消耗过高的问题。随着项目的发展和规模扩大，共识预言机客户端数量越多，其链上的交易数量就越多，Gas费用消耗必然会激增。在Chainlink的中长期规划中，链上聚合将逐步被链下聚合所代替，链上Gas费用的消耗问题也自然得到解决。

然而除了Gas费用问题，在数据验证机制方面， Chainlink与同样为主流去中心化预言机项目的DOS Network都存在系统性风险，这种系统性风险在于其节点间接验证与节点信用系统带来的攻击成本问题。这两个项目的合约只对数据上传者的身份和信用进行验证，通过这样间接验证的方式来保证数据的准确性。这样一来，节点的作恶成本几乎与信用质押是锚定的，或者说不会随着参与的数据提供行为而改变。间接验证的机制，可以有效提高系统效率，但也伴随着很高的节点作恶成功率。在处理小规模、非金融性场景时，因为作恶收益很小，简洁验证机制几乎没有安全隐患。可是一旦数据提供行为背后衍生的资产规模远大于节点质押资金时，作恶的成功率高且作恶收益也远大于信用风险，节点作恶的概率会大大提高。这是这类间接验证机制本质存在的问题，如果只通过修改表层逻辑关系（譬如提高节点信用风险等）并不能实质消除风险。基于上述考虑，这样的机制只适合小规模的应用，难以运用到大规模、金融性市场中去。

在DeFi之前，预测市场是去中心化预言机早期应用较多的领域，Augur和Gnosis就是去中心化的预测市场中比较知名的两个项目，简单地说，它们通过集体的预测将现实世界事件的预测结果带入区块链中。在理想情况下，表决权被分配给不同的代币持有者，且预测结果需要得到多数票对的同意。Augur和Gnosis擅长处理总统选举结果、体育博彩等低频率和未来的事件。然而，在针对处理频繁的、实时的和随机应变的事件时候，由于用户参与度高，投票周期过长等因素的问题被放大，这些问题也暴露了当前去中心化预言机针对大型、随机事件的效率问题。

总结一下，分布式、去中心化的理念是解决中心化预言机项目痛点的有效途径，其与预言机的结合市场的潜力不容小觑。目前市场上的去中心化预言机项目大多专注于DeFi，且可以适应的资金规模量级不高，即普适兼容性不高。此外，用户的隐私安全也是一个值得注意的问题。用户隐私数据泄露，尤其是在金融和预测市场是及其致命的漏洞，用户的个人信息和操作行为可以作为判断用户的策略意图的重要依据，会对后续结果产生巨大影响。
