如今,以太坊占据着区块链行业基础设施的半壁江山,但是其主网的统治地位正在被许多后来者挑战。行业普遍的共识之一是,未来或将是多链共存的格局,跨链甚至全链则是多链生态中最关键的一环。
然而,如今连接各区块链网络的跨链桥安全问题频发,跨链生态似乎岌岌可危。ZK Bridge(使用ZK零知识证明技术的跨链桥)的出现,将有效解决当前跨链方案的多种缺陷,让万链互联成为可能。
在北欧神话中,海姆达尔(Heimdallr)是一个神秘且重要的神祇,负责守卫连接神域(Asgard)与人间世界(Midgard)的彩虹桥——比弗洛斯特(Bifröst)。如果我们把连接不同神域和人间世界的彩虹桥比作跨链桥,那么,零知识证明技术能否肩负起守卫跨链安全的重任,成就彩虹桥上万夫莫开的“海姆达尔“神话?
本文为LK venture投研团队对ZK Bridge赛道进行的全方位解析,力求展望零知识证明技术在解决跨链安全性和高性能瓶颈问题的发展空间。
TL; DR
- 什么是ZK Bridge?ZK Bridge是使用零知识证明技术的跨链桥,具有零信任、无许可、可拓展、高效率的特性。
- 为什么需要ZK Bridge?当前跨链桥的中心化问题和信任假设导致安全性不足,漏洞频出造成严重损失;而重视安全性的跨链桥,则效率低下,成本较高。ZK Bridge可以同时保有安全性、去中心化和高效率。
- 如何实现ZK Bridge?基于ZK-SNARK的轻节点方案
- 相关项目介绍:Succinct Labs, zkIBC by Electron Labs, zkBridge by BerkleyRDI。
什么是跨链桥?
跨链桥(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投研团队根据信任程度从高到低,对部分重点方案进行介绍。
跨链解决方案1:无质押多签
典型项目有Multichain、Wormhole、Ronin Bridge。这些都要求多重签名MPC实现,需要实体验证交易,并验证(即签名)其有效性。通过阈值后(往往是2/3),交易就被认为是已验证的。
·在该方案中,各实体需要运行全节点来进行验证。当然,无抵押导致撒谎没有实际成本,但不诚实导致的声誉受损可能会导致更大的潜在成本,所以验证节点往往与固定的链下身份关联,以此来增加节点的作恶成本。
·Multichain的消息验证由SMPC网络保障,SMPC 网络由 24 个节点组成,超过 2/3 节点签名的消息被认为通过验证,SMPC 节点成员不需要质押,且相对固定,AnyCall 的安全建立在对 SMPC 节点的信任假设基础上。
·Wormhole 的信任层采用 PoA 机制构建,由一组受信任的 Guardians(守护者 ))负责链间消息的验证,Guardians 是特定的具有资本背书和声誉背书的主体。目前,Wormhole 中的 Guardians 有 19 个,其中包括 FTX、Everstake 和 Chorus One 等知名大公司。
跨链解决方案2:预言机与中继
典型项目有LayerZero,通过将消息及消息证明传递和验证 Relayer 传递交易两者做分割,确保跨链过程的安全。
·LayerZero 的核心设计思想在于Oracle (预言机)和 Relayer(中继者)的分离,在 LayerZero 中,Relayer 负责传递消息及消息证明,Oracle 负责根据消息所在区块,按需从源链获取区块头,然后目标链上的终端根据 Oracle 获取的区块头验证 Relayer 传递的交易。只要二者不串通,就可以保证跨链的安全。
·需要注意,尽管 Layerzero 将其技术方案称为超轻节点(Ultra Light Node),但方案与Light Client有本质上的不同。LayerZero 通过 Oracle 提供的区块头来验证 Relayer 提供的交易证明,验证过程在目标链的终端发生,属于原生验证,但是对区块头本身的验证却是由作为外部验证人的第三方 Oracle 网络来完成的,验证过程发生在链下。
跨链解决方案3:有质押多签
在MPC的基础上增加了一层权益证明,典型项目有Celer, Axelar, deBridge, Hyperlane, Thorchain。
·如果作恶,验证者的质押将被大幅削减,在经济上实际增加了验证者的欺骗成本。
·PoS 桥要面对的一个问题是验证者的不均衡性,为了缓解该问题,Axelar 采用了二次方投票的方案,签名权重将与验证人质押的 $AXS 数量的平方根成正比;Hyperlane 则采用“可验证欺诈证明”方案,验证人联合作恶将立即被发现并执行 Slash;pNetwork 和 Bool Network 则直接要求所有节点质押相同数额的 Token。
跨链解决方案4:乐观验证(optimistic validation)
运用了博弈论知识,通过用户间的博弈场景提高用户作恶风险,典型项目有 Nomad, Synapse。
·乐观验证的基本逻辑是:在外部验证的基础上,设置一批挑战者和一个挑战窗口期,对不正确的验证进行挑战,验证者需要抵押,当其行为不当时,挑战者将提出挑战,并提供欺诈证明。若挑战成功,验证者的抵押金将成为挑战者的赏金。
·Nomad项目设置的挑战窗口期是30分钟。对于乐观验证方案,只需要至少有一个挑战者是诚实的,而且有经济激励去进行挑战。这相比外部验证而言,是更小的信任假设,在这样的信任假设下,攻击者无论付出多大的经济代价,都不能保证攻击一定成功。
原本跨链方案到此就结束了,但ZKP零知识证明技术的发展,为跨链桥的安全和效率两难困境带来了新的解决方案。
什么是ZK Bridge?
ZK Bridge是使用零知识证明技术的跨链桥,不引入信任假设,适配多种同构/异构链,链下生成零知识证明,链上只负责验证,大大降低链上计算和存储成本,具有零信任、无许可、可拓展、高效率的特性。
我们先对轻客户端的原理做一个基本概述。轻客户端,也称轻节点,在链上往往以轻智能合约的形式呈现。轻客户端跨链的基本原理是在目标链部署源链的轻节点合约,对源链来的消息进行验证。如果要实现双向跨链,就需要在两条链上互相部署对方链的轻节点合约。
相比全节点,轻节点是轻量化的节点,它不存储完整区块的序列,而仅存储区块头的序列。尽管区块头体积很小,但它包含了对区块中完整数据的密码学概括。当轻节点需要知道某个交易是否被包含在链中时,可以通过该交易所在区块的区块头及该交易的 Merkle 路径,对该交易执行SPV 验证。
下图中,绿色方块的合集,就是蓝色方块的默克尔路径。
为了维护目标链上部署的源链轻节点,需要由链下代理将源链的区块头不断同步到目标链。轻节点合约对负责同步区块头的链下代理并没有信任假设。因为轻节点合约会对其同步的区块头执行验证,链下代理无法欺骗轻节点。
轻节点验证区块头的逻辑,与全节点、矿工节点别无二致,分为有效性验证和最终性验证两部分。
LK Venture 投研团队认为,对于 PoW 链来说,有效性验证主要是指验证区块的工作量证明,最终性验证则是看该区块头后面有没有更多的有效区块被追加(在 BTC 链中,一般认为 6 个区块的追加可以确认一个区块的最终性,在以太坊中,则一般认为 25 个区块的追加可以确认一个区块的最终性)。
对于 PoS 链而言,有效性验证是指验证该区块是否由被随机选中的出块人生成,最终性验证则是看该区块是否被 2/3 以上投票权重的验证人签名。但 PoS 的轻节点并不需要验证有效性,只需要验证最终性。因为PoS链中,最终的区块一定有效,PoW链则未必。
ZK Bridge的实现,与轻节点加中继的方案流程相同,只是略有变化。ZK Bridge中,依然需要链下的中继者监听源链,将源链的区块信息转发到目标链。但是转发的不仅是区块头,还有使用ZK-SNARK算法生成的有效性证明。而在目标链上,轻节点也不是通过直接根据区块头进行计算去验证交易的有效性,而是根据有效性证明在链上验证,减轻计算负担。
ZK Bridge的实现技术路径为什么ZK Bridge有望终结跨链大战?
在目前以完成部署投入使用的跨链桥中,有多个项目都曾经遭受过严重的安全攻击,被盗金额非常巨大,在当时造成大规模的恐慌,时至今日大家仍对各大跨链桥的安全性抱有怀疑态度。人们愈发需要一个安全、零信任、去中心化的跨链桥,为未来的全链生态打下坚实基础。
2022年度部分跨链协议损失资金及追回资金统计在LK Venture 投研团队看来,ZK Bridge为跨链桥的安全和效率难以兼顾的困境带来了新的解决方案,即通过在链下生成对区块头的零知识证明,源链区块头的正确性由ZK-SNARK算法生成的证明去验证,因此没有增加任何外部的信任假设,唯一信任的是数学。
而且,零知识证明在链上的验证过程较原有的轻节点验证方案,将显著降低计算和存储成本。
ZK Bridge部分项目介绍
Succinct by Succinct Labs
Gnosis Chain Omnibridge是Ethereum与Gnosis之间的跨链桥,使用的是MPC的主流方案。 Gnosis团队成员希望能够探索不依赖中心化实体的跨链设计,Succinct Labs和Gnosis团队就此展开合作,Gnosis DAO提供grant用于R&D。
以太坊的验证过程主要包括以下内容的验证:区块头的Merkle证明;同步委员会中验证者的Merkle证明;正确轮换同步委员会的BLS签名等。这里的核心思想是使用zk-SNARK(Groth16)生成大小恒定的有效性证明,可以在Gnosis上进行高效的链上验证。
Succinct跨链解决方案图解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 by BerkleyRDI
zkBridge通过ZK-SNARKs证明远程区块链的区块头的正确性,因此不会引入任何外部信任假设。事实上,只要连接的区块链和基础轻客户端协议是安全的,并且区块头中继网络中存在至少一个诚实的节点,zkBridge就是安全的。当然,值得注意的是,虽然至少一个诚实节点就能保证安全性,但是不诚实节点过多会显著降低跨链桥的可用性,light client会频繁拒绝传来的proof,而无法获取真实信息。
zkBridge跨链解决方案图解具体来说,zkBridge主要由区块头中继网络Block Header Relay Network和更新者合约Updater Contract组成。在区块头中继网络中,中继从发送者区块链 C1 中检索区块头,生成区块头有效性证明,并将区块头及证明发送到设置在接收者区块链 C2 上的更新器合约中。对于更新器合约,一旦相关证明通过验证,C1 的相应区块头将被存储。此外,更新器合约还维护一个轻客户端状态。一旦添加新的区块头,合约就像 C1 上的其他轻客户端一样更新轻客户端状态,并更新 C1 的当前主链。更新器合约还向应用程序公开一个功能,通过该功能,C2 上的应用程序可以获取 C1 上给定高度的区块头。在获得区块头信息后,应用程序可以进行更多的验证(例如特定交易)并构建自己的应用。
为了使底层 zk-SNARK 系统与链上使用兼容,需要快速证明生成和低链上证明验证成本。zkBridge 的主要创新是:
·deVirgo:采用分布式的方法来生成 ZK-SNARK 证明,且无需信任假设。deVirgo方法通过将计算工作进行拆分,分配给更多的设备,大幅度提升了在链下生成 ZK-SNARK 证明的时间。
·递归证明:为了降低链上成本,zkBridge 使用递归证明,通过两次递归,将 ZK-SNARK 证明的体积压缩到 131 字节左右。第一步生成deVirgo证明,第二步使用Groth16证明生成器进行压缩。Groth16验证器生成执行deVirgo电路的完整性证明。
·批处理:zkBridge 实现了一个区块头的更新合约,它以区块高度为输入,返回相应区块头。但 zkBridge 并不会在每个新区块产生时,调用更新合约,证明者可以先收集 N 个区块头,生成一个单一的证明。N 值可以设置,N 越大,用户等待时间越长但系统运行成本越低。
目前 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 by Electron Labs
具体而言,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技术的成熟,能够打破跨链当前面临的安全-效率两难困境,让万链互联的愿景得以实现。V:taiyi4477