自2009年比特币诞生以来,区块链技术得到了长足的发展。尽管比特币和以太坊稳稳占据市场统治地位,但许多不同的区块链网络依然以其独特的功能和应用出现。由于不同区块链的架构不同,它们无法相互沟通和互动。随着各链的生态发展,尤其是DeFi的流行,如何弥合不同区块链之间的鸿沟也成为大家争相解决的课题。
由此,跨链桥应运而生!它可以使不同区块链之间的不同资产跨链转移甚至实现信息互操作。类似现实中的桥跨接河的两边,跨链桥能够将资产从一个区块链无缝转移到另一个区块链,从而使用户能够利用不同区块链网络的独特功能。除此之外,跨链桥还允许应用在不同的区块链之间传输数据和信息。虽然跨链桥提供了许多好处,但它也面临一些挑战,特别是安全问题。例如,2021年,跨链桥Poly Network被黑,损失超过6亿美元价值的加密货币。2022年,Axie Infinity的跨链桥Ronin Network也同样被盗超过6亿美元的加密货币。因此,跨链桥需要更加完善的安全措施来保护用户的资产和数据。
近年来,零知识证明(ZKP)在应用方面取得了巨大进展。ZKP是一种强大的密码学工具,可用于保护用户的数据隐私,也可作为Rollup扩容的有效性证明。同样地,ZKP也在跨链桥的设计中扮演着特殊而重要的角色。通过ZKP的简洁有效性证明,目标链可以高效验证源链的状态转换,尽可能地避免除目标链和源链之外的第三方风险,从而提高跨链的安全性。本文将介绍几种常见的跨链桥、零知识证明(ZKP)技术如何应用于跨链桥以及几个基于ZKP的跨链桥项目。
加密研究员0xjim曾按照跨链桥设计机制把跨链桥分为Team Human、Team Economics、Team Security 和 Team Game Theory。其中,Team Human中心化程度较高,代表是 Ronin Network,它们由 9个公开可知的实体运行全节点,通过多重签名验证交易并证明交易的有效性。签名通过阈值后,交易被视为已验证。正常情况下他们不会主动作恶,但是在这种中心化的方式里,这些人可能会被攻击,成为最大的漏洞,一旦私钥管理不当则容易酿成大祸。
第二类是Team Economics,如 Celer、Axelar、Thorchain。这些类似于多重签名,但加上了代币经济学,节点(验证者)需要质押代币作为保证金以防止作恶。如果作恶,验证者的质押将被大幅削减,因此从经济动机出发,验证者应诚实地验证交易的有效性。
第三类是Team Security,它们会结合可信执行环境TEE或者多方计算MPC来提高跨链桥的安全性,例如所有节点通过在如Intel SGX的TEE执行链下轻客户端验证,以确保私钥管理的隐私性和完整性。
第四类是Team Game Theory,如LayerZero、Nomad、Synapse,这些协议将桥分解为两个独立的工作,并抑制了两个工作执行者之间的作恶。对于LayerZero,预言机传递区块头,中继者传递交易证明,两者结合在一起执行链上轻客户端的职责。
这四类都是采用链下验证、多点认证的方式。前三种本质上是通过自身PoS公链/网络作为见证人进行任意两条公链的信息传递,速度较快,费用较便宜,而且扩展性高,可以更容易连接到更多链。但代价是需要用户、流动性提供者完全信任外部验证器的资金或数据,即依赖于桥的安全性,而不是源链或目标链。
近年来,跨链桥事故频发,带来了巨大的损失。这反映了当前跨链桥引入额外的信任假设带来了更多的漏洞。最安全的跨链桥设计应该是最小化信任,即跨链桥仅继承它连接的两个链的安全属性,而无需信任其他第三方。链上验证可以实现跨链桥的最小化信任,即由目标链来验证源链的共识,并确认指定的交易已包含在源链的区块链中。例如,目标链的验证者运行源链的轻客户端,检查提交的源链Merkle根,并确认指定的交易确实已获得源链的验证者们的有效签名。然而,链上验证成本昂贵且难以扩展,目标链的验证者很难为不同的源链都运行轻客户端,有的目标链也不一定支持源链的共识签名方案。例如,Ethereum PoS共识中的验证者使用BLS签名,但EVM没有对这些签名中使用的BLS12-381曲线进行预编译,这使得Solidity实现这样一个轻客户端的成本过高。
最新的零知识证明系统的改进,使得可验证计算更加简洁,ZKP在跨链桥的设计中也发挥着特殊而重要的作用,就像zk-SNARKs为zkEVM项目提供扩展执行的动力一样。可验证计算也可以用来生成链状态的有效性证明,这个有效性证明可以为高效低成本的轻客户端验证共识,有利于最小化信任的互操作性。实际上,跨链桥并没有使用ZKP的零知识属性,而是利用其简洁性属性进行扩展,类似Rollup扩容的有效性证明。
Succinct Labs和Gnosis合作推出了一种基于SNARK的桥,使以太坊和Gnosis Chain 等任意两条以太坊PoS链之间实现了最小化信任的互操作性。轻客户端以Solidity智能合约的形式部署在链上,通过零知识简洁证明生成源链状态的有效性证明,可以用来支持高效的轻客户端,允许Ethereum和Gnosis Chain之间的任意跨链通信,从而促进了最小化信任的互操作性。链上轻客户端在Gnosis上跟踪Ethereum区块头,反之亦然,无需额外的信任假设。同步委员会负责确认以太坊的状态,由随机选择的512个验证者组成,每27小时轮换一次。当2/3以上的验证者对区块头进行签名,则以太坊的状态被认为有效,所以该方案本质是个PoS桥。
Succinct Labs使用Circom编程语言和Groth16证明系统来实现轻客户端生成 zk-SNARK 证明,减少链上验证成本。轻客户端通过验证单个Groth16 zkSNARK来代替验证BLS聚合签名。另外,除了跟踪区块头,轻客户端还需要跟踪同步委员会的验证者。同步委员会每次轮换时,当前一组验证者签署一个区块头,其中包含下一个同步委员会公钥的SSZ哈希值。由于SSZ哈希使用SHA-256,对SNARK不友好,所需计算的约束数量很大。于是,Succinct Labs创建了一个电路,把下一组验证者的SSZ 哈希值映射到对SNARK友好的Poseidon承诺。然后,这个SNARK友好的承诺存储在链上,并作为BLS签名验证SNARK的输入,以确保正在验证的签名确实是来自同步委员会的验证者。
目前该技术仍在开发中,测试网的代币桥已推出用以演示,但还没有被用来保护真实资产,而且局限在Gnosis和以太坊两条链。另外,需要留意的是,安全性并没有达到以太坊共识的安全性。
Electron Labs是一个通过ZK轻客户端保护跨区块链通信的跨链协议,它的目标是利用 IBC协议和zk-SNARK技术,将以太坊和Cosmos生态系统(以及其他EVM链)连接起来,类似的项目还有Polymer和Gerege。
通常,Cosmos IBC在源链和目标链以智能合约形式部署轻客户端,以验证跨链交易。同理,如果开发者要将IBC连接到以太坊,需要在以太坊上面以Solidity智能合约运行 Tendermint轻客户端。但是,由于需要在Solidity验证数百个Ed25519签名,而 Ed25519预编译在以太坊上是不可用的,这将导致Gas成本十分高昂。因此,Electron Labs通过一个替代方案,没有直接在以太坊上验证Ed25519的签名,而是在链下构建了一个签名有效性的ZK证明,并在链上验证证明。
而以太坊方面的链上轻客户端模块将包括一个ZK Proof验证器而不是Ed25519签名验证器。中继器(Relayer)不用提交完整的轻型客户端,只提交有效性证明。为此,Electron Labs建立了一个基于Circom的库,可以为一批Ed25519签名生成一个zk-SNARK证明,在以太坊上可以低成本地验证这些签名。
Positron是Electron推出的第一个桥,该桥在Goerli(以太坊测试网)和Near测试网之间上线,用以展示零知识证明和链上轻客户端的实现。在公开测试阶段,RPC节点的速度限制曾一度导致Positron滞后处理每笔交易,数以百计的交易变成了几个小时的积压,后经处理已恢复正常。
zkBridge是一个无需信任、可扩展、通用和高效的跨链桥。任何节点都可以自由加入网络,转发区块头,生成证明,并要求获得奖励。具体来说,zkBridge包括一个区块头中继网络和一个更新者合约。在区块头中继网络中,中继者从源链中检索区块头,生成区块头的有效性证明,并将区块头与证明一起发送给更新者合约。该合约部署在目标链上,对于更新者合约,一旦相关证明通过验证,源链的相应区块头就会被存储起来。此外,更新者合约还保持着一个轻客户状态。一旦有新的区块头被添加,该合约就会像源链上的其他轻客户一样更新轻客户状态。更新器合同还向应用程序暴露了一个函数,通过这个函数,目标链上的应用程序可以获得源链上给定高度的块头,在获得区块头信息后,应用程序可以做更多的验证和功能。
为了快速地生成证明以及实现廉价的链上证明验证成本,zkBridge使用2层递归证明系统(2-layer recursive proof system)来满足以上两个条件。在第一层中,Virgo证明系统的分布式版本deVirgo结合了分布式sumcheck和分布式多项式承诺,实现最优并行,能够在分布式机器上运行时将证明生成加速几倍。在第二层中,zkBridge使用Groth16 来证明由deVirgo以前生成的证明确实证明了相应的区块头。
ZK技术开发公司=nil; Foundation是一家于2018年4月成立的基金会,旨在支持和促进数据库管理系统和应用密码学的研究和开发,为区块链和协议提供按需求生成零知识证明的完整技术解决方案。他们的投资者除了有头部机构Polychain,还包括ZK赛道明星协议StarkWare和Mina Protocol。
=nil; Foundation最近推出了一个名为zkLLVM的主流语言电路编译器,不涉及zkVM,可以通过简单编译已有的C++或Rust的EVM实现代码,帮助开发者快速而低成本地建立zkRollup、zkBridge和zkOracle等应用。同时,由于生成SNARK / STARKS证明需要大量计算能力,=nil; Foundation创建了一个ZK Proof Market,帮助团队更轻松地进行工作,并将某些类型的计算外包给第三方,允许证明请求者(Proof Requester)发布对任何预定义电路的证明请求,并提供开放报价的竞争市场。最后,Proof Market 的证明生成者(Proof Generator)执行订单并返回新生成的证明。
之前,他们已经在Mina-Ethereum和Solana-Ethereum之间创建了zkBridge。通过 zkLLVM,开发者可以直接用将C++、Rust等主流编程语言的代码编译成电路,生成必要的状态或共识证明来设置zkBridge。例如Mina Protocol和Ethereum使用zkLLVM 生成Mina的辅助状态证明电路和in-EVM验证器,实现了在EVM上低成本验证Mina的状态。
总结:跨链桥的未来发展和区块链技术的革新
本文介绍了几个使用零知识证明技术实现跨链桥的项目。这些项目都是在探索如何利用零知识证明技术来生成有效性证明,以支持高效低成本的轻客户端验证共识,从而促进了最小化信任的互操作性。虽然这些项目目前还在开发中,并且通常局限在某些特定的链之间,但是,这些项目是对区块链互操作性问题的一种创新解决方案。我们相信,随着ZKP技术的持续发展,将会有更多安全的跨链解决方案出现。
资料
What I Talk About When I Talk About Bridges
Proof of Consensus Bridging between Ethereum and Gnosis Chain
Bringing IBC to Ethereum using ZK-Snarks
zkBridge: Trustless Cross-chain Bridges Made Practical
=nil; zkLLVM Circuit Compiler