# ZKP：实现安全高效的多链互通跨链桥技术

By [ViaBTC Capital](https://paragraph.com/@viabtc-capital) · 2023-03-28

---

背景：跨链技术的发展
----------

自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公链/网络作为见证人进行任意两条公链的信息传递，速度较快，费用较便宜，而且扩展性高，可以更容易连接到更多链。但代价是需要用户、流动性提供者完全信任外部验证器的资金或数据，即依赖于桥的安全性，而不是源链或目标链。

ZKP：实现安全高效跨链桥的零知识证明技术
---------------------

近年来，跨链桥事故频发，带来了巨大的损失。这反映了当前跨链桥引入额外的信任假设带来了更多的漏洞。最安全的跨链桥设计应该是最小化信任，即跨链桥仅继承它连接的两个链的安全属性，而无需信任其他第三方。链上验证可以实现跨链桥的最小化信任，即由目标链来验证源链的共识，并确认指定的交易已包含在源链的区块链中。例如，目标链的验证者运行源链的轻客户端，检查提交的源链Merkle根，并确认指定的交易确实已获得源链的验证者们的有效签名。然而，链上验证成本昂贵且难以扩展，目标链的验证者很难为不同的源链都运行轻客户端，有的目标链也不一定支持源链的共识签名方案。例如，Ethereum PoS共识中的验证者使用BLS签名，但EVM没有对这些签名中使用的BLS12-381曲线进行预编译，这使得Solidity实现这样一个轻客户端的成本过高。

  

最新的零知识证明系统的改进，使得可验证计算更加简洁，ZKP在跨链桥的设计中也发挥着特殊而重要的作用，就像zk-SNARKs为zkEVM项目提供扩展执行的动力一样。可验证计算也可以用来生成链状态的有效性证明，这个有效性证明可以为高效低成本的轻客户端验证共识，有利于最小化信任的互操作性。实际上，跨链桥并没有使用ZKP的零知识属性，而是利用其简洁性属性进行扩展，类似Rollup扩容的有效性证明。

  

领先的ZKP协议区块链公司提供跨链技术解决方案和开源技术
----------------------------

### Succinct Labs

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和以太坊两条链。另外，需要留意的是，安全性并没有达到以太坊共识的安全性。

![](https://storage.googleapis.com/papyrus_images/5135793629abd9f9fbd79fcf5ea305bc57ff0fc70901a23bbad0070849094cd1.png)

### Electron Labs

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包括一个区块头中继网络和一个更新者合约。在区块头中继网络中，中继者从源链中检索区块头，生成区块头的有效性证明，并将区块头与证明一起发送给更新者合约。该合约部署在目标链上，对于更新者合约，一旦相关证明通过验证，源链的相应区块头就会被存储起来。此外，更新者合约还保持着一个轻客户状态。一旦有新的区块头被添加，该合约就会像源链上的其他轻客户一样更新轻客户状态。更新器合同还向应用程序暴露了一个函数，通过这个函数，目标链上的应用程序可以获得源链上给定高度的块头，在获得区块头信息后，应用程序可以做更多的验证和功能。

  

为了快速地生成证明以及实现廉价的链上证明验证成本，zkBridge使用2层递归证明系统（2-layer recursive proof system）来满足以上两个条件。在第一层中，Virgo证明系统的分布式版本deVirgo结合了分布式sumcheck和分布式多项式承诺，实现最优并行，能够在分布式机器上运行时将证明生成加速几倍。在第二层中，zkBridge使用Groth16 来证明由deVirgo以前生成的证明确实证明了相应的区块头。

![](https://storage.googleapis.com/papyrus_images/aaae73867d9bf036dbc5321637d5f52ecabaabb91bc890a2cf55f151b71ce215.png)

### \=nil; Foundation

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的状态。

![](https://storage.googleapis.com/papyrus_images/e0c5eec3c6e3bc48bb199e3f2c537f66eccc5411f3b00701a17225e26f854bca.png)

总结：跨链桥的未来发展和区块链技术的革新

本文介绍了几个使用零知识证明技术实现跨链桥的项目。这些项目都是在探索如何利用零知识证明技术来生成有效性证明，以支持高效低成本的轻客户端验证共识，从而促进了最小化信任的互操作性。虽然这些项目目前还在开发中，并且通常局限在某些特定的链之间，但是，这些项目是对区块链互操作性问题的一种创新解决方案。我们相信，随着ZKP技术的持续发展，将会有更多安全的跨链解决方案出现。

  
  

**资料**

What I Talk About When I Talk About Bridges

[https://medium.com/coinmonks/what-i-talk-about-when-i-talk-about-bridges-429c16015774](https://medium.com/coinmonks/what-i-talk-about-when-i-talk-about-bridges-429c16015774)

  

Proof of Consensus Bridging between Ethereum and Gnosis Chain

[https://blog.succinct.xyz/post/2022/10/29/gnosis-bridge/](https://blog.succinct.xyz/post/2022/10/29/gnosis-bridge/)

Bringing IBC to Ethereum using ZK-Snarks

[https://ethresear.ch/t/bringing-ibc-to-ethereum-using-zk-snarks/13634](https://ethresear.ch/t/bringing-ibc-to-ethereum-using-zk-snarks/13634)

zkBridge: Trustless Cross-chain Bridges Made Practical

[https://rdi.berkeley.edu/zkp/zkBridge/zkBridge.html](https://rdi.berkeley.edu/zkp/zkBridge/zkBridge.html)

\=nil; zkLLVM Circuit Compiler

[https://blog.nil.foundation/2023/02/02/circuit-compiler.html](https://blog.nil.foundation/2023/02/02/circuit-compiler.html)

---

*Originally published on [ViaBTC Capital](https://paragraph.com/@viabtc-capital/zkp)*
