
从开发需求理解技术概念
区块链开发新技术涉及哪些技术概念,可以从三个问题入手:交易在哪里执行,执行结果如何验证,合约所需的数据从哪里获得。ZK-rollup主要涉及扩容与状态验证,预言机主要涉及外部数据接入。这些概念属于不同技术环节,不能把其中一种机制当作所有问题的解决方案。
Layer 2、有效性证明与状态承诺
以太坊开发文档介绍的ZK-rollup,将交易放在链下批量执行,再由链上合约验证有效性证明、确认状态更新。Merkle根用于紧凑地表示账户等状态;相关数据通过calldata或blob发布,支持独立重建状态。链下虚拟机承担执行,主链承担验证与结算。

理解这套结构,需要区分“状态摘要”和“正确性证明”。状态根描述某个状态的密码学承诺,有效性证明则用于验证状态变化是否遵守既定规则。只有一个新的状态根,并不能说明计算过程正确。

数据可用性与隐私的区别
数据可用性关注参与者能否取得重建状态所需的数据;有效性证明关注状态转换是否正确。两者回答不同问题,不能互相替代。
ZK-rollup适用于希望将执行移出主链、同时在主链验证结果的扩容需求。但名称中的“零知识”不意味着交易默认保密:公开发布的状态或交易相关数据仍可能被读取。设计长期查询功能时,也应区分数据发布与历史归档,不能直接将blob视为永久存储。
预言机、数据聚合与更新条件
Chainlink架构文档描述的数据馈送,由多个预言机运营者参与更新,经聚合形成链上数据。使用数据的消费者合约、提供访问入口的代理合约,以及保存聚合结果的聚合器合约,各有职责。更新通常由偏差阈值或心跳时间条件触发,OCR则涉及链下报告与聚合。
这类机制适用于合约需要外部数据的场景。接入时,除了读取数值,还需要理解数值代表什么、何时更新,以及应用能够接受多长的数据间隔。多个节点参与聚合有助于降低对单一报告者的依赖,但不能据此认定外部数据绝不会出错。
开发中常见的理解误区
证明验证通过,是否表示整个应用没有漏洞?证明覆盖的是被编码并验证的规则,不能自动保证业务规则、合约权限或外围组件都正确。
预言机数据是否随外部变化即时更新?阈值与时间条件意味着更新存在具体机制,应用应结合更新时间判断数据是否适用。
Layer 2和预言机是否可以互相替代?前者主要处理执行与结算安排,后者提供外部数据输入。开发时应分别确认两类机制承担的责任,再判断它们如何组合。