跨链桥最常见的形状,是一组被信任的操作员在一端看、在另一端说。你说你从 A 链转了资产,桥的委员会点头,B 链才认账。这套模式的软肋从来不是转账本身,而是谁来作证:委员会可能作恶,也可能被攻破。零知识桥想做的是把作证这件事从人手里拿走。以 Polyhedra 的 zkBridge 与 zkLightClient 为例,它用一份零知识证明,让接收链用极小的代价相信发送链上确实发生了一次状态变化——不需要相信中继者,也不需要相信某个多签委员会。这篇讲它到底怎么做到的,以及和锁铸与轻客户端两种桥模型、IBC 轻客户端怎么抓双签对照,多出来的那一层证明究竟补了什么。
先把轻客户端放回问题里
一条链的完整账本要全节点才存得下,可全节点吃带宽。轻客户端是折中:它不下载所有区块,只拿区块头,再用共识签名或默克尔分支证明某笔具体数据确实被这条链承认过。桥本质上是想在接收链上跑一个另一条链的轻客户端——问题是,轻客户端要在资源受限的地方(尤其智能合约里)验证上百个验证者签名,非常昂贵。zkBridge 的切入点,就是把这个昂贵的验证,换成一份可以低成本核验的零知识证明。
把轻客户端的逻辑编进电路

官方的做法可以一句话概括:把目标链的轻客户端协议编译进 zk-SNARK 电路。证明者在链下运行这套逻辑,产出一份证明,声称我按规则核对过发送链的共识;接收链只需要验证这份证明,不必自己去数那几百个签名、也不必重算默克尔路径。对以太坊这类委员会链,它可以在一份证明里覆盖成百上千个验证者签名(例如信标链同步委员会的签名聚合);接收链验一次证明,就等价于把整段轻客户端逻辑跑对了一遍。
中继网络与更新合约各干什么
落地时 zkBridge 分两块:一条区块头中继网络,和部署在接收链上的更新合约。中继网络从发送链取区块头、生成这些区块头有效的证明,把区块头连同证明一起交给更新合约。更新合约维护一份轻客户端状态,只有当区块头自带的证明通过校验,它才收下并更新当前主链。这样,被信任的不再是中继者的嘴,而是证明本身——中继者影响的是数据到不到的活跃度,而不是能不能伪造一次状态跳转。这也是它相对传统数据可用性委员会式信任模型的差别:安全性不再系在几个签名门槛上。
成本与延迟因此变了
因为一份证明能覆盖多条交易、多个区块头,接收链可以把过去逐条核验签名或默克尔 proofs 的开销,压缩成一次 SNARK 验证;多笔跨链交互还能攒进同一份证明批量处理。这就是 zkBridge 论文强调省 gas、降延迟的来路。省多少取决于电路和验证者数量等参数,本文不把它写成固定数字,具体以官方论文与文档为准。Polyhedra 团队还把这套思路接到以太坊的痛点上:为信标链同步委员会的签名验证减负,服务轻客户端和类单一时隙最终性的方向。
边界、以及一个命名坑
零知识不是把信任归零,而是换了存放位置。第一,电路即信任:核对共识和默克尔分支的逻辑被写进电路,如果电路逻辑有错,证明可能技术上通过却判断错了东西,所以电路要审计。第二,活跃度仍靠人:区块头和证明需要有人生成并提交,中继者不用被信任,但没人提交就会卡。第三,轻客户端状态会老化,长期离线仍有弱主观性那类边界,参见检查点同步与弱主观性。第四,一个必须点破的坑:Sygma 与 Polyhedra 不是同一支实现。Sygma(源自 ChainSafe)用的是叫 Spectre 的零知识轻客户端协处理器来做共识证明,而 Polyhedra 用的是 zkBridge 与 zkLightClient,早期还搭在 LayerZero 的消息协议上。两者都顶着 zk 桥的名头,别把它们当同一个官方口径,接入时以各自文档核对桥地址与信任假设。涉及具体参数、上线状态与资产支持以官方文档为准;本文只讲机制,不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。