本文对 ZK Bridge 赛道进行的全方位解析,力求展望零知识证明技术在解决跨链安全性和高性能瓶颈问题的发展空间。
撰文:LK Venture
如今,以太坊占据着区块链行业基础设施的半壁江山,但是其主网的统治地位正在被许多后来者挑战。行业普遍的共识之一是,未来或将是多链共存的格局,跨链甚至全链则是多链生态中最关键的一环。
然而,如今连接各区块链网络的跨链桥安全问题频发,跨链生态似乎岌岌可危。ZK Bridge(使用 ZK 零知识证明技术的跨链桥)的出现,将有效解决当前跨链方案的多种缺陷,让万链互联成为可能。
Heimdallr 守卫彩虹桥配图
图片来源: Klugh, Maria Tales from the Far North (Chicago, IL: A. Flanagan Company, 1909)
在北欧神话中,海姆达尔(Heimdallr)是一个神秘且重要的神祇,负责守卫连接神域(Asgard)与人间世界(Midgard)的彩虹桥 — — 比弗洛斯特(Bifröst)。如果我们把连接不同神域和人间世界的彩虹桥比作跨链桥,那么,零知识证明技术能否肩负起守卫跨链安全的重任,成就彩虹桥上万夫莫开的「海姆达尔」神话?
本文为 LK venture 投研团队对 ZK Bridge 赛道进行的全方位解析,力求展望零知识证明技术在解决跨链安全性和高性能瓶颈问题的发展空间。
跨链桥(Cross-chain Bridge)是一个允许在不同区块链网络之间实现价值和信息传输的技术解决方案。通过利用一系列加密和协议技术,跨链桥实现了资产和数据的安全、可验证和无需信任的转移,进而促进了区块链网络之间的互操作性。
一般来说,我们会把跨链桥分为直接的资产跨链桥和更具备通用性的消息跨链桥。
跨链桥作为一个中心化的巨额资金池,天然会吸引黑客 — — 攻击成功的收益是巨大的。此外,由于不同链之间的安全假设可能存在差异,资产跨链的代码更为复杂,代码审计也无法找出所有漏洞,也就为有着巨大激励驱动的黑客以可乘之机。
具体的攻击方案可以分为以下几种:
1. 中心化攻击:部分跨链桥依赖于中心化的中继器或验证器来传输和验证交易。这种设计可能会导致单点故障,攻击者可以通过攻击这些中心化组件来破坏整个跨链系统。
2. 经济激励攻击:跨链桥通常需要设置合适的经济激励来确保验证器和中继器的诚实行为。然而,设计合适的激励机制并不容易,激励不足或激励设计失衡可能会导致恶意行为或串谋攻击。
3. 双花攻击:在某些情况下,攻击者可能会尝试在源链和目标链上同时花费同一笔资产,从而导致资产的双花。跨链桥需要设计有效的防范措施来防止双花攻击。
4. 重放攻击:攻击者可能会尝试在目标链上重放已经在源链上发生的交易,从而试图获取不正当利益。跨链桥需要实现一定的交易验证和防重放机制来防止此类攻击。
5. 链下协调攻击:跨链桥的一些实现依赖于链下协调,如状态通道或侧链。攻击者可能会通过对链下协调环节进行干扰或攻击,来破坏跨链桥的正常运作。
6. 链间共识攻击:由于跨链桥涉及多个区块链网络,每个网络可能采用不同的共识算法。攻击者可能会利用链间共识的弱点来发起攻击,例如,在一个链上实施 51% 攻击以影响跨链桥的正确性。
There are no solutions. There are only trade-offs.
没有解决方案。只有权衡利弊。
— — Thomas Sowell 托马斯·索维尔(芝加哥经济学派代表人物之一)
跨链最核心的问题就是如何验证另一条链的消息是可靠的。针对该问题产生了不同解决方案,包含不同程度的信任假设。
跨链桥的信任图谱
目前主流跨链解决方案技术参数对比
轻节点加中继,其实是最早出现的跨链解决方案,代表项目要数 BTC Relay,目的在于用比特币进行支付去使用以太坊的服务。然而,由于要进行大量的链上计算与存储,运行链上轻客户端的代价昂贵。而且由于不同链间共识算法和签名算法等的异构,导致跨链方案不可扩展,需要为每对特定的两条链专门实现 light client & relay。
迄今为止,只有 Cosmos 应用链上的 IBC 实现了大规模的链上轻客户端,其成功之道在于 Cosmos 的应用链的标准化程度极高,每个应用链都需要运行 Tendermint 共识,并遵守 IBC 标准。在一个拥有不同共识机制、签名方案和虚拟机的多链世界中,链上轻客户端验证是难以实现的。
当前主流跨链项目为了避免高昂的链上轻节点成本,将验证过程移至链下,同时也带来不同程度的信任假设和潜在欺诈风险,LK Venture 投研团队根据信任程度从高到低,对部分重点方案进行介绍。
典型项目有 Multichain、Wormhole、Ronin Bridge。这些都要求多重签名 MPC实现,需要实体验证交易,并验证 ( 即签名 ) 其有效性。通过阈值后(往往是 2/3),交易就被认为是已验证的。
典型项目有 LayerZero,通过将消息及消息证明传递和验证 Relayer 传递交易两者做分割,确保跨链过程的安全。
在 MPC 的基础上增加了一层权益证明,典型项目有 Celer, Axelar, deBridge, Hyperlane, Thorchain。
运用了博弈论知识,通过用户间的博弈场景提高用户作恶风险,典型项目有 Nomad, Synapse。
原本跨链方案到此就结束了,但 ZKP 零知识证明技术的发展,为跨链桥的安全和效率两难困境带来了新的解决方案。
ZK Bridge 是使用零知识证明技术的跨链桥,不引入信任假设,适配多种同构 / 异构链,链下生成零知识证明,链上只负责验证,大大降低链上计算和存储成本,具有零信任、无许可、可拓展、高效率的特性。
我们先对轻客户端的原理做一个基本概述。轻客户端,也称轻节点,在链上往往以轻智能合约的形式呈现。轻客户端跨链的基本原理是在目标链部署源链的轻节点合约,对源链来的消息进行验证。如果要实现双向跨链,就需要在两条链上互相部署对方链的轻节点合约。
相比全节点,轻节点是轻量化的节点,它不存储完整区块的序列,而仅存储区块头的序列。尽管区块头体积很小,但它包含了对区块中完整数据的密码学概括。当轻节点需要知道某个交易是否被包含在链中时,可以通过该交易所在区块的区块头及该交易的 Merkle 路径,对该交易执行 SPV 验证。
下图中,绿色方块的合集,就是蓝色方块的默克尔路径。
为了维护目标链上部署的源链轻节点,需要由链下代理将源链的区块头不断同步到目标链。轻节点合约对负责同步区块头的链下代理并没有信任假设。因为轻节点合约会对其同步的区块头执行验证,链下代理无法欺骗轻节点。
轻节点验证区块头的逻辑,与全节点、矿工节点别无二致,分为有效性验证和最终性验证两部分。
LK Venture 投研团队认为,对于 PoW 链来说,有效性验证主要是指验证区块的工作量证明,最终性验证则是看该区块头后面有没有更多的有效区块被追加(在 BTC 链中,一般认为 6 个区块的追加可以确认一个区块的最终性,在以太坊中,则一般认为 25 个区块的追加可以确认一个区块的最终性)。
对于 PoS 链而言,有效性验证是指验证该区块是否由被随机选中的出块人生成,最终性验证则是看该区块是否被 2/3 以上投票权重的验证人签名。但 PoS 的轻节点并不需要验证有效性,只需要验证最终性。因为 PoS 链中,最终的区块一定有效,PoW 链则未必。
ZK Bridge 的实现,与轻节点加中继的方案流程相同,只是略有变化。ZK Bridge 中,依然需要链下的中继者监听源链,将源链的区块信息转发到目标链。但是转发的不仅是区块头,还有使用 ZK-SNARK 算法生成的有效性证明。而在目标链上,轻节点也不是通过直接根据区块头进行计算去验证交易的有效性,而是根据有效性证明在链上验证,减轻计算负担。
ZK Bridge 的实现技术路径
在目前以完成部署投入使用的跨链桥中,有多个项目都曾经遭受过严重的安全攻击,被盗金额非常巨大,在当时造成大规模的恐慌,时至今日大家仍对各大跨链桥的安全性抱有怀疑态度。人们愈发需要一个安全、零信任、去中心化的跨链桥,为未来的全链生态打下坚实基础。
2022 年度部分跨链协议损失资金及追回资金统计,图片来源: DeFiyield (https://defiyield.info/)
在 LK Venture 投研团队看来,ZK Bridge 为跨链桥的安全和效率难以兼顾的困境带来了新的解决方案,即通过在链下生成对区块头的零知识证明,源链区块头的正确性由 ZK-SNARK 算法生成的证明去验证,因此没有增加任何外部的信任假设,唯一信任的是数学。
而且,零知识证明在链上的验证过程较原有的轻节点验证方案,将显著降低计算和存储成本。
Gnosis Chain Omnibridge 是 Ethereum 与 Gnosis 之间的跨链桥,使用的是 MPC 的主流方案。 Gnosis 团队成员希望能够探索不依赖中心化实体的跨链设计,Succinct Labs 和 Gnosis 团队就此展开合作,Gnosis DAO 提供 grant 用于 R&D。
以太坊的验证过程主要包括以下内容的验证:区块头的 Merkle 证明;同步委员会中验证者的 Merkle 证明;正确轮换同步委员会的 BLS 签名等。这里的核心思想是使用 zk-SNARK(Groth16)生成大小恒定的有效性证明,可以在 Gnosis 上进行高效的链上验证。
Succinct 跨链解决方案图解,图片来源: Succinct 官网 (https://www.succinct.xyz/)
Succinct Labs 的跨链方案能够在任意两条 Ethereum 兼容的 PoS 链间传递任意消息。当前实现了 Ethereum 与 Gnosis 之间的跨链 Demo,Ethereum 上部署了 bridge deposit 合约,允许用户储蓄。bridge deposit 会传递消息给 arbitrary message bridge (AMB),AMB 在合约中存储该消息。Operator 负责获取同步委员会的证明,为有效的 BLS 签名验证生成 SNARK 证明,并向 Gnosis 链轻客户端提交更新。
在 Gnosis Chain 上,存款交易所在的以太坊区块被确认(通常 2 epochs,约 12 分钟),并且轻客户端已经更新到高度大于或等于该块的区块后,Relayer 会自动向 Gnosis AMB 提交一个 executeMessage 交易。executeMessage 交易包含针对轻客户端已更新的插槽的 Merkle 存储证明。在 executeMessage 期间,AMB 使用轻客户端获取所请求插槽的以太坊状态根,并验证 Merkle 存储证明,以显示消息已在 AMB 的另一侧上 send。然后,AMB 使用消息中指定的 calldata 调用接收智能合约。
出于技术栈成熟程度和链上验证开销的考虑,团队选择使用当前最成熟的 Circom 语言和链上验证最便宜的 Groth16 证明系统来生成 ZK-SNARKs,而没有使用更新更快的 PLONK + KZG or FRI。
值得注意的是,该项目虽然上了测试网,但是可用性较差。经作者测试,Goerli 测试网的 Succincts token 经过 bridge 数量减少,但是 Gnosis 网络未收到 token,同时网站上的 dashboard 没有 bridge 记录显示。而且需要注意现在的跨链是单向的。只能从 Goerli 到 Gnosis,而不能反过来。
zkBridge 通过 ZK-SNARKs 证明远程区块链的区块头的正确性,因此不会引入任何外部信任假设。事实上,只要连接的区块链和基础轻客户端协议是安全的,并且区块头中继网络中存在至少一个诚实的节点,zkBridge 就是安全的。当然,值得注意的是,虽然至少一个诚实节点就能保证安全性,但是不诚实节点过多会显著降低跨链桥的可用性,light client 会频繁拒绝传来的 proof,而无法获取真实信息。
zkBridge 跨链解决方案图解,图片来源: https://rdi.berkeley.edu/zkp/zkBridge/zkBridge.html
具体来说,zkBridge 主要由区块头中继网络 Block Header Relay Network 和更新者合约 Updater Contract 组成。在区块头中继网络中,中继从发送者区块链 C1 中检索区块头,生成区块头有效性证明,并将区块头及证明发送到设置在接收者区块链 C2 上的更新器合约中。对于更新器合约,一旦相关证明通过验证,C1 的相应区块头将被存储。此外,更新器合约还维护一个轻客户端状态。一旦添加新的区块头,合约就像 C1 上的其他轻客户端一样更新轻客户端状态,并更新 C1 的当前主链。更新器合约还向应用程序公开一个功能,通过该功能,C2 上的应用程序可以获取 C1 上给定高度的区块头。在获得区块头信息后,应用程序可以进行更多的验证(例如特定交易)并构建自己的应用。
为了使底层 zk-SNARK 系统与链上使用兼容,需要快速证明生成和低链上证明验证成本。zkBridge 的主要创新是:
目前 zkBridge 已经以 Solidity 在以太坊上实现了一个 Cosmos Client 的实例,据测试,可以在 2 分钟内生成一个 Cosmos Zone 区块头的 ZK-SNARK 证明,然后在以太坊端,验证费用是小时 230k gas 的常量,对比来看,如果不用 ZK-SNARK 证明,这个费用将是 64 Million Gas 。
需要注意,中继网络计算将遭受与 MPC 相同的通信复杂性,这将严重影响证明时间。 GKR 多层求和检查协议的通信复杂度为 O(N log2( 签名数量 )),其中 N 台机器在中继网络中。即使对于 32 个签名的情况,中继网络中有 32 台机器,也可能导致网络中大量顺序通信,损害分布式计算带来的性能。
具体而言,zkIBC 希望模拟 Cosmos 主权链使用的无信任通信协议 — — Inter Blockchain Communication Protocol (IBC),并将使用拓展到 Ethereum。 zkIBC 使用 ZK-SNARKs 进行轻客户端状态验证,快速证明 Ethereum 上交易,跟上 Tendermint 共识链的出块时间。
主要的难点在于在 Cosmos SDK 中使用的 Tendermint 轻客户端运行在 Ed25519 曲线上,而以太坊区块链不支持该曲线,在以太坊的 BN254 曲线上验证 Ed25519 签名昂贵和低效。
项目路线图分为五个阶段:调研 -ed25519 签名证明的实现 - 测试网 - 递归 Snark 实现减少冗余 - 主网。2023 年 2 月 2 日,Positron testnet 正式面向公众上线,支持 Near 和 Ethereum 之间的跨链。当前的测试网需要等待约 20–30 分钟才能实现最终性,其中包括 Goerli 网络最终性(15–20 分钟)、ZK-Proof 生成(5–8 分钟)、Near 链上铸造(10–20 秒)。
该项目宣称完全开源,经过测试,跨链过程使用流畅,UI/UX 设计良好,且支持双向跨链。
区块链技术发展到一定阶段,通常会演化成为关于取舍的哲学。在公链中,有着安全 - 可拓展 - 去中心化的三难困境;而在跨链中,可能也存在着安全 - 效率的两难困境:追求效率,则会引入第三方信任假设,导致安全性受损;追求安全,使用完全轻节点与中继的方案,则会招致高昂的链上严重费用。
但是实际上,从制度设计上来看,即使是信任程度最高的无质押 MPC 方案,其实也在绝大多数情况下保证了跨链桥的安全。之所以多个跨链桥被盗,反而是因为追求透明将代码开源,复杂代码中隐藏的漏洞让黑客有了可乘之机。
LK Venture 认为,随着技术不断进步,ZK 方案可用性逐渐增强,ZK Rollup 有望在 2023 年下半年将投入大规模使用,ZK Bridge 也方兴未艾。希望 ZK Bridge 技术的成熟,能够打破跨链当前面临的安全 - 效率两难困境,让万链互联的愿景得以实现。
参考资料:
1. zkBridge: Trustless Cross-chain Bridges Made Practical(https://rdi.berkeley.edu/zkp/zkBridge/zkBridge.html)
2. Bridging the Multichain Universe with Zero Knowledge Proofs(https://medium.com/@ingonyama/bridging-the-multichain-universe-with-zero-knowledge-proofs-6157464fbc86)
3. Exploring ZK Bridges(https://zkvalidator.com/exploring-zk-bridges/)
4. Overall Comaprison Between Multiple Blockchains(https://dune.com/springzhang/cross-blockchain-comparison-overview)
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。