借贷合约可以计算存入其中的 ETH 数量,但仅凭钱包余额,无法知道这些 ETH 值多少美元。预测市场也有类似的问题:合约能够保管抵押资产、计算赔付,却需要一套明确的方法来判定事件最终出现了哪种结果。
区块链预言机为智能合约提供其自身可用状态之外的信息,例如资产价格、事件结果,或基金公布的资产净值。借助这些输入,合约才能处理相应业务;应用也随之依赖数据的采集、传递和解读方式。
为什么智能合约不能直接打开网站?
在以太坊及类似区块链上,节点必须根据相同的交易和状态,复现相同的执行结果。普通网站的内容可能在两次请求之间改变,也可能暂时不可用,或向不同访问者返回不同答案。如果每个验证者都在执行交易时自行抓取实时网页,就可能无法得出一致结果。以太坊的预言机文档解释了合约执行与外部信息之间的这道边界。
因此,需要由外部流程将数据报告转为区块链能够接受的形式。合约可以读取已发布的数据,也可以验证随交易提交的报告。接入预言机,并不意味着合约从此能自由访问互联网。
区块链共识能够确认哪份报告被接受、哪些规则得到了执行,却不能独立证明气象站运转正常、企业如实披露,或某个市场价格未受操纵。
沿着数据流,看清各方负责什么
一个依赖价格的应用,通常涉及几个不同环节:
- 采集:交易所、交易机构或其他提供方生成资产的观测数据。不同来源覆盖的交易场所、交易时段和金融工具可能不同。
- 处理:预言机系统按照自身规则聚合数据、生成报告。多个运营方可以降低对单一报告者的依赖,但如果它们共用上游来源,仍可能一起受到同一故障影响。
- 传递:通过交易发布数值,或由调用方提交经过认证的报告供合约验证。这笔交易何时执行,取决于目标区块链。
- 应用:使用数据的合约检查数据源标识、单位和允许的数据时效,再执行自身的借贷、结算等规则。
不能仅凭一个预言机服务商的名字,就把这些责任混为一谈。例如,Chainlink 的去中心化数据模型区分了数据来源、节点报告和链上聚合。应用仍然需要正确接入最终的数据。
不同应用,需要不同的预言机设计
推送和拉取描述的是更新如何到达应用。仅凭这一区别,无法判断系统是中心化还是去中心化。
| 设计 | 信息如何到达 | 应用需要考虑什么 |
|---|---|---|
| 推送式数据源 | 更新发布到链上数据源,合约读取其中最新可用的数值。 | 更新触发条件、交易延迟,以及已存储的观测数据可能有多旧。 |
| 拉取式报告 | 调用方获取报告,在应用需要时提交。 | 报告认证、观测数据的时效,以及提交更新的成本。 |
| 乐观预言机 | 提出的答案可在规定期限内被质疑;发生争议后,按相应流程解决。 | 明确的结果判定标准、监督激励、保证金,以及结算所需时间。 |
Chainlink 说明了其推送式数据源更新所使用的价格偏差与心跳触发条件。心跳机制并不保证在网络拥堵或服务中断时,每次更新都能准时送达。UMA 的乐观预言机则为参与者留出质疑所提答案的时间。与需要即时价格的交易相比,这类机制可能更适合事件结果判定。
预言机的输入也不一定来自链外。合约可以利用去中心化交易所的链上历史数据计算价格。Uniswap v2 的累积价格设计支持时间加权平均价格,即 TWAP。取平均可以提高短时操纵的成本,但效果仍取决于流动性和选用的观测窗口。窗口越长,对真实价格变化的反应也越慢。
一个过时价格,如何改变清算结果?
假设有一笔简化的借贷仓位:抵押 10 ETH,债务为 12,000 美元,清算阈值为 80%。假定债务的美元价值不变,并忽略利息和费用。
当 ETH 为 2,000 美元时,抵押资产价值为 20,000 美元,债务占其价值的 60%。如果 ETH 跌至 1,400 美元,抵押资产价值就降至 14,000 美元,债务占比升至约 85.7%,超过假设的清算阈值。合约接受这一价格后,该仓位就满足了本例的清算条件。
如果应用仍使用之前 2,000 美元的观测价格,仓位可能看起来仍然健康,但实际抵押保障已经减弱。错误的偏低价格则可能造成相反的问题:原本健康的仓位被清算。这两种情况下,合约都可能完全按照代码执行。
因此,了解 EVAA 借贷协议这类系统,需要同时关注价格输入和清算规则。以上数字仅作演示,并非 EVAA 的实际参数。
签名刚生成,不代表数据也刚采集
需要分清三个时间:底层观测数据何时产生、报告何时形成,以及区块链何时接受报告。刚提交的交易,也可能携带较早的观测数据。
Pyth Pro 的接入指南区分了更新时点与单项价格数据的时效,并建议应用处理报价中的不确定性。有效签名可以按相应验证规则认证报告,却不能让每个数值都变成最新数据,也无法消除不同市场之间的分歧。
开发者还需要制定故障处置规则。拒绝过期数据、限制新增借款,或暂停依赖价格的操作,都有助于控制损失。自动切换到未经验证的备用来源,则可能引入另一项依赖。Chainlink 明确要求应用开发者负责数据检查、熔断机制和应急逻辑。
在部分 Layer 2 网络上,用户能否提交交易也是问题。排序器停机可能让用户无法调整仓位。Chainlink 的排序器运行状态指南介绍了状态检查和恢复后的宽限期;仅检查价格时间戳,并不能解决用户无法操作的问题。
使用应用之前,应先看清哪些规则?
查看应用使用的具体数据源和网络、对应的市场或报告来源、允许的最大数据时长,以及服务中断时如何处理。还应确认谁有权更换预言机或调整这些限制。“使用预言机”只是了解协议的起点,不能当作安全评级。
对于代币化资产,这一区分同样重要。发布基金净值,并不能证明资产托管、法律所有权或赎回权。我们关于 Chainlink、韩华与 RWA 基础设施的文章,解释了为何可靠的数据传递与资产权利是产品中的两个不同环节。
你可以通过 KTX Crypto Exchange了解相关市场。无论使用哪种产品,都应阅读其定价和结算规则:链上预言机的数值,不会自动成为订单的实际成交价。
常见问题
使用预言机,是否意味着必须购买它的代币?
不一定。用户往往可以直接使用应用,无须持有该应用预言机服务商的代币。是否产生更新费用、由谁支付,取决于具体接入方式。服务商的代币本身也存在市场风险。
预言机能转走我钱包里的资产吗?
一份数据报告本身,既不是钱包签名,也不是代币支出授权。合约可以根据报告触发其规则所管辖资产的相关操作,包括对已抵押资产执行清算。
预言机价格,等于可以实际成交的报价吗?
不等于。参考价格可能汇总多个来源,也可能是一段时间的均价。实际成交取决于交易场所、可用流动性、订单规模和费用。显示一个参考值,并不保证订单能按该价格成交。
区块链跨链桥和预言机是一回事吗?
两者在消息传递和验证基础设施上可能有所重叠。跨链桥通常用于跨链转移或传递消息;预言机则向应用提供信息。名称相近或功能重叠,并不代表它们的安全假设相同。
预言机能替企业保密敏感信息吗?
仅把数据送上链,不能实现保密。公开发布的数据可能被任何人查看。涉及敏感信息的应用,需要另外设计信息披露、访问权限和验证机制。
风险提示:即使区块链正常运行,预言机故障、数据来源遭操纵或接入错误,也可能造成损失。本文仅供知识学习,不构成投资建议。