用零知识证明桥接多链宇宙

这篇具有很好参考价值的文章主要介绍了用零知识证明桥接多链宇宙。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 引言

zk bridge的缺陷,隐私应用,零知识证明
bridge为双向通讯协议,用于向目标链C2上某应用 证明 在源链C1上发生了某事件,或 用于向目标链C1上某应用 证明 在源链C2上发生了某事件。链之间传输信息可为:

  • messages
  • funds
  • 或 其它数据

源链C1上的state change可在目标链C2上进行链上验证,通常是以合约形式实现对方链的light client:C2上的合约持续跟踪C1链的区块头,以Merkle proof来验证源链提交的root。
通常C1、C2采用不同的field和曲线,验证操作需要out of field arithmetic。此外,随着区块头的持续增加,client需要存储并验证新的区块头,这将导致大量的计算和存储开销,且通常效率低下。为了绕过该问题,很多bridge采用了更集中的方式来构建:
zk bridge的缺陷,隐私应用,零知识证明
上图这样的light client protocol构建存在致命的缺陷:一小组trusted validators来对state changes进行签名。其信任假设为信任中心化的bridging entity,通常为一小撮trusted parties,这与区块链的基础原则相违背,会带来censorship和security问题。

尽管桥很有用,但搭建风险也很大。区块链历史上一些最昂贵的Hack仅针对桥。根据Vulnerabilities in Cross-chain Bridge Protocols Emerge as Top Security Risk,过去一年来,69%的资金丢失源于对bridge的攻击,损失达数十亿美金:
zk bridge的缺陷,隐私应用,零知识证明
根据 BlueHat IL 2022 - Niv Yehezkel - A primer on cross-chain bridges and how to break one 可知,这样的安全弱点的根本原因在于bridge充当了中心化的存储单元。大多数现有bridge(for liquidity)采用Lock-Mint-Burn-Release机制。经典的逻辑为:用户发送资金到C1链上的bridge合约以“lock”资金,即这些资金在C1中不再可用;然后bridge允许用户在C2链上mint出等量的资金;用户使用了部分资金之后,想要将剩余资金退回到C1链,可“burn” C2链上资金,一旦bridging entity验证通过后,可在C1链上“release”剩余的资金。这样的链间bridge,会有大量的资金待着bridge中,而其安全性仅依赖于少量的trusted parties,使其成为主动攻击的目标。

构建bridge的主要技术难点在于:

  • 1)低计算开销(高效处理跨链数据、高效处理out of field arithmetic)
  • 2)低存储开销(Succinctness)
  • 3)安全性/trustless(Soundness)

本文重点关注基于零知识证明(Zero Knowledge Proofs,ZKP)所构建实现的桥,主要对比了:

  • Succinct Labs的Bridge方案:Succinct Verification of Proof of Consensus
  • Electron Labs的Bridge方案:Bringing IBC to Ethereum
  • Berkley RDI的Bridge方案:zkbridge
    zk bridge的缺陷,隐私应用,零知识证明

总之,使用ZKP设计的bridge解决了去中心化和安全性问题,但由于large circuit size,其引入了计算瓶颈问题。计算开销问题可通过以下手段改进:

  • 硬件加速
  • 使用特定的SNARKs
  • 一些技巧,如对public data进行commit,以减少存储开销。

由于bridge work的大部分工作是proving data-parallel circuit,使用类似deVirgo这样的可并行化ZKP方案是一个值得研究的方案。

此外,多链宇宙中的链采用了不同的field和curve,从最底层来说,对field arithmetic进行优化是关键基石。通过MPC来实现proof generation的并行化,将引入MPC本身存在的communication complexity瓶颈问题,这也是一个未决问题。

2. Bridge & ZKP

近年来,ZKP在rollups中的应用有了长足进展,ZKP的soundness属性支持安全、去中心化应用。这也意味着,ZKP可探索用于构建bridge,目前在该领域主要有3大有趣的开发方向:

  • 1)Succinct Labs 2022年9月发表 Towards the endgame of blockchain interoperability with proof of consensus:其方案为Succinct verification of consensus with zkSNARKs,其使用a single zk-SNARK实现了以太坊PoS(Proof of Stake)light client。详细可见Zero Knowledge Summit Berlin 2022 (Full Live Stream)中分享。
  • 2)Electron Labs https://github.com/Electron-Labs:其方案为bringing IBC(Inter Blockchain Communication)to Ethereum with zkSNARKs,目前已有一个工作原型,借助a single zk-SNARK将Cosmos SDK(Tendermint)bridge 到以太坊light client。
  • 3)Berkley RDI zkBridge: Trustless Cross-chain Bridges Made Practical:基于Tiancheng Xie等人2022年论文zkBridge: Trustless Cross-chain Bridges Made Practical。使用a 2 step recursive zk-SNARK,实现了将Cosmos SDK bridge到以太坊轻节点,以及将以太坊轻节点 bridge到 EVM兼容链(本文不覆盖该内容)。

以上项目借助zk-SNARKs的属性,重新定义了bridge的设计思想。以上所有方案,都假定了,存在某轻节点协议,使得节点可同步固化的区块链状态对应的区块头。

借鉴ZKP rollup技术 到 ZKP bridge,主要存在2大挑战:

  • 1)bridge中涉及的circuit size要比rollup大数个数量级;
  • 2)如何降低链上的存储和计算开销。

3. Succinct Labs的Bridge方案:Succinct Verification of Proof of Consensus

Succinct Labs的Bridge方案为:Succinct Verification of Proof of Consensus,利用了zk-SNARK的succinct属性(而不是Zero Knowledge属性),来在链上验证consensus validity proofs。目前已在Gnosis链与以太坊链之间构建了a trust minimized bridge,具体见:

  • ZK Beacon Chain Light Client Spec (Gnosis Chain version):Gnosis Chain是eth2的canary链。Gnosis希望为beacon链共识(在Gnosis链上)实现一个基于ZK的轻节点客户端,它可以由链外用户或(bridge中的)EVM合约验证。由于信标链使用BLS12-381,目前没有Eth预编译程序,使用ZK有助于克服高昂的gas开销。实现基于ZK的轻节点,需要为sync committee生成SNARK证明。这包含了512个validators,约每27小时(256个epoch)轮换一次,因此,对延迟的需求是最低的。(尽管若轻节点更新越频繁,意味着在该27小时期间需要处理更多的区块头和签名。)

以太坊每27小时需随机选出512个validators组成sync committee。这些被选中的validators需在该27小时期间为每个区块头签名,若某区块头获得超过2/3 validators的签名,则认为其状态为有效状态。验证过程包含了:

  • 1)验证区块头的Merkle proof;
  • 2)验证在sync committee的validators的Merkle proof;
  • 3)验证BLS signatures for correct rotation of the sync committee。

以上验证要求每27小时在链上存储512个BLS公钥,验证每个区块头时需验证其签名,从而在链上会有基于BLS12-381曲线的512次Elliptic curve additions 和 1次pairing check,相应的开销是高昂难以承受的。Succinct Labs Bridge方案的核心思想为:

  • 使用zk-SNARK(Groth16)来生成(constant size的)validity proof,该证明可在Gnosis链上高效验证。

zk bridge的缺陷,隐私应用,零知识证明
以太坊轻节点使用Gnosis链上的某solidity合约,而链下计算包含:

  • 1)构建验证validators及其BLS签名的circom circuits
  • 2)计算zk-SNARK proof

然后,区块头和相应的proof会提交到该智能合约,该合约会在Gnosis链上验证相应的区块头及其proof。
SNARK部分的circuit size和proving time总结为:
zk bridge的缺陷,隐私应用,零知识证明
优化点包括:

  • 使用ZK friendly Poseidon hash 对512个validator的公钥进行commit。为此,使用Poseidon哈希可解决存储开销的问题,并降低circuit size。降低circuit size的原因在于:
    • 每27小时会更新trusted committee,且之前的committee使用SSZ(Simple Serialization)的SHA256序列对new committee进行数字签名。不同于直接将其用于SNARK中——将创建large circuits(每个bitwise操作对应一个gate,而SHA运算中有大量bitwise操作),而是对当前公钥使用Poseidon hash进行commit——对应为a SNARK friendly representation of the corresponding circuit。

Succinct Labs的Bridge方案的特点在于:

  • 所使用的桥接方案与特定应用强相关(依赖于共识协议),并从zk-SNARKs的soundness属性中派生其安全性。
  • 此外,借助优化,可实现低存储开销、降低circuit复杂度,实现succinct verification并可generalizable。但是使用zk-SNARK会降低所追求的信任假设。

4. Electron Labs的Bridge方案:Bringing IBC to Ethereum

Electron Labs致力于使用IBC(Inter-Blockchain Communication)构建从Cosmos SDK生态 到 所有自治链的 bridge。
不过,不同于Succinct Labs的Bridge方案,Electron Labs的Bridge方案需在以太坊合约内验证某(Cosmos SDK)轻节点。实际上,在以太坊上运行其它链的轻节点看起来是充满挑战的。
在Cosmos SDK中,其Tendermint轻节点是运行在twisted Edwards curve(Ed25519)之上的,而以太坊链上并不原生支持Ed25519曲线。因此,在以太坊(BN254)链上验证Ed25519签名的效率不高且开销巨大。
zk bridge的缺陷,隐私应用,零知识证明
Cosmos SDK的每个区块头都包含了约128个EdDSAq签名(基于Ed25519曲线),这些签名由一组validators签署(验证一个区块需要有32个high stake签名)。验证这些签名将生成large circuits——这将是相当大的计算组件。基本问题就在于,如何在以太坊链上高效验证来自其它链的ed25519签名。解决方案为,在链下生成signature validity proof,然后在以太坊链上仅验证该proof本身。
circom库支持BN128/BLS12-381/Ed448-Goldilocks曲线,而ed25519的base field为 p = 2 255 − 19 p=2^{255}-19 p=225519,为支持ed25519曲线的模运算,需将ed25519的单个field element以3个85 bit整数来表示,详细见:

  • 使用Circom,来定义Ed25519 maths in R1CS model

circom生成的为Ed25519 signature verification circuit的R1CS表示,包含了上面定义的Elliptic curve point additions/doublings模运算。具体见:

  • https://github.com/Electron-Labs/ed25519-circom

借助circom构建的Ed25519 signature verification circuit对应为 每个验签约200万个约束。
zk bridge的缺陷,隐私应用,零知识证明
witness computation之后,借助https://github.com/iden3/rapidsnark Rapidsnark库来为ed25519 signature verification生成Groth16 proof。由于ed25519 curve signatures不支持aggregation,因此,无法像BLS签名那样为aggregated signatures生成a single SNARK proof。不过,ed25519签名支持verified in batches,其proof-time与batch内的签名数量呈线性关系。
zk bridge的缺陷,隐私应用,零知识证明
因此,若减少batch内的签名数量,可降低proof time(降低延迟),但由于会增加为每个batch生成的proof数量,会增加开销(gas费)。

Electron Labs Bridge方案的特点在于:

  • 所使用的桥接方案与特定应用强相关(依赖于共识协议),并从zk-SNARKs的soundness属性中派生其安全性。
  • 需在以太坊上验证Tendermint轻节点的ed25519签名,无需引入任何新的信任假设。
  • 使用Circom,来定义Ed25519 maths in R1CS model 这种out of field modular arithmetic方案,是链上计算验证的一种很有价值的优化。
  • Cosmos SDK的产块间隔约为7秒,为了跟上产块速率,prover time应大大降低。Electron Labs提出了使用多台机器并行计算来生成proof,以保证生成证明的速度与产块速度一致,且借助recursion 来生成a single zk-SNARK proof,详细见:
    • Bringing IBC to Ethereum using ZK-Snarks

5. Berkley RDI的Bridge方案:zkbridge

不同于以上2种industry-led ZKP bridge方案,zkbridge可基于多个应用来构建。其思想与前2种方案类似,在2条链上需要一个轻节点和合约来跟踪对应对方链的最新状态的digest。bridge的核心组件为:

  • 1)block header relay network
  • 2)updater contract
  • 3)应用相关的合约(sender:SC1,receiver:SC2)

zk bridge的缺陷,隐私应用,零知识证明
block header relay network由一组relay nodes组成,这些relay nodes会监听所桥接链的状态改变,并从全节点中获取相应的block headers。

bridge中relay node的主要功能为:

  • 生成ZKP proof,以证明源链上区块头的正确性,同时,将该区块头及相应的证明 relay到目标链的updater contract。updater contract会验证该证明,若验证通过则接受该区块头,否则拒绝。与上面industry-led方案最大的不同点在于,zkbridge的信任假设减少为了:只要relay network中存在一个诚实的节点,则zk-SNARK是sound的。

Berkley RDI Bridge方案zkbridge的关键创新在于:

  • 并行使用Virgo prover zkSNARK算法,具有succinct verification/proof size且不需要trusted setup,详细见论文:

    • Virgo prover是指论文 Virgo: Zero Knowledge Proofs System without Trusted Setup
    • deVirgo是指论文 zkBridge: Trustless Cross-chain Bridges Made Practical

    动机在于:验证N个签名的circuit 本质上是包含了 N份完全相同的sub-circuits,名为data-parallel circuit,每个sub-circuit是相互排斥的。适于上面的ed25519验签场景。

Virgo prover是基于GKR protocol的zero knowledge扩展,其为layered circuit中的每个sub-circuit运行sum check arguments 和 a polynomial commitment scheme。deVirgo在一组relay nodes上运行a Virgo prover,避免the linear growth of the proof size by aggregating the proofs and polynomial commitments into a master node。以ed25519签名为例,相应的circuit size为:
zk bridge的缺陷,隐私应用,零知识证明
对于验证100个签名的circuit,其有约1千万个gates,proof size为210KB(与Virgo prover相同)。zkbridge采用2-step recursion:

  • 1)第一步,生成a deVirgo proof。
  • 2)使用Groth16 prover对deVirgo proof进行压缩。Groth16 verifier会生成 a proof of integrity of the execution of the deVirgo circuit。

采用recursion的各奔目的是为了实现:

  • 1)succinctness(proof size)
  • 2)减少验证gas开销

relay network会将Groth16 proof提交到updater contract进行链上验证。

deVirgo proof system为抗量子攻击的,因其仅依赖抗碰撞哈希函数,主要的计算瓶颈在于大size的circuit中的Number Theoretic Transforms(NTT)。
同时,zkbridge的relay network计算将存在与MPC一样的communication complexity问题,这同样会影响prover time。
GKR multilayered sum-check protocol的communication complexity为O(N log_2(gates per layer)),其中N为relay network中的机器数。以32个签名,32台机器为例,relay network中的communication轮数将相对较大,从而可能抵消分布式计算所带来的性能提升。

zkbridge包含一个relay network,负责fetch Cosmos区块头,并为分布式proof generation生成一个deVirgo proof。
然后,https://github.com/ConsenSys/gnark 的改编版(使用Electron-labs的https://github.com/Electron-Labs/ed25519-circom 中的优化signature verification circuit),用于以上第二步的recursion Groth16 proof生成。
zk bridge的缺陷,隐私应用,零知识证明
以太坊端的updater contract以Solidity实现,持续跟踪Cosmos区块头以及relay network的Groth16 proof。由于Groth16 proof为constant size,相应的链上验证开销为<230K gas的常量值。未来,可能可批量验证B各连续的区块头,并为这B个区块头生成一个proof。但是,随着batch size的增加,prover time也将增加,不过由于减少了链上的验证压力,gas开销将随之减少。硬件加速可进一步改进Gnark prover。

zkBridge的特点在于:

  • 其是在bridge纸上构建应用的框架;
  • 使用一个relay network来生成zkp,从而在本文所有方案中,具有最小的信任假设。
  • 只要可克服relay network中类似MPC的communication complexity,可使用任意可并行化的ZK prover。
  • 除deVirgo relay network的MPC complexity之外,relay node的单个Virgo prover组件的瓶颈在于NTT。

6. 为何说多链宇宙是碎片化的?

根据An overview of the layer 1 blockchain ecosystem 可知,目前有多于100个Layer 1区块链协议,这些链具有其自身的共识机制、设计、应用、用户场景。
zk bridge的缺陷,隐私应用,零知识证明
根据V神2021年博客 Why sharding is great: demystifying the technical properties 可知:
zk bridge的缺陷,隐私应用,零知识证明
区块链协议存在不可能三角问题:

  • 1)去中心化
  • 2)安全性
  • 3)可扩展性

多链宇宙中的跨链通信,通常称为互操作层,作为不同链之间的bridge基础设施。bridge会是碎片化的多链宇宙 去碎片化,目前有很多跨链bridge项目,详细可参看:

  • Cross-chain solutions public
    zk bridge的缺陷,隐私应用,零知识证明
    zk bridge的缺陷,隐私应用,零知识证明

参考资料

[1] Ingonyama团队2022年10月博客 Bridging the Multichain Universe with Zero Knowledge Proofs文章来源地址https://www.toymoban.com/news/detail-800926.html

到了这里,关于用零知识证明桥接多链宇宙的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 桥接模式(Bridge Pattern)

    桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与其实现部分分离,使它们可以独立地变化。桥接模式通过组合而不是继承来实现这种分离。 桥接模式的主要思想是将抽象和实现分离,让它们可以独立地变化。抽象部分包含高层逻辑,而实现部分包含底层实

    2024年02月15日
    浏览(39)
  • 桥接模式(Bridge Pattern)

    桥接模式(Bridge Pattern)是一种很实用的结构型模式,如果系统中某个类存在 两个独立变化的维度 ,通过该模式可以 将这两个维度分离出来 ,使得两者可以 独立扩展 。桥接模式用一种巧妙的方式处理 多层继承 存在的问题, 用抽象关联取代了传统的多重继承 ,将类之间的

    2024年02月05日
    浏览(47)
  • 设计模式-桥接模式(Bridge)

    桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分和实现部分分离,使它们可以独立地变化。这种分离允许你将一个类的功能层次结构(抽象)与另一个类的实现层次结构(实现)分开,从而在不同层次上进行修改和扩展。在本篇博客中,我们将详细介绍桥接

    2024年02月09日
    浏览(55)
  • C++设计模式-桥接(Bridge)

    目录 C++设计模式-桥接(Bridge) 一、意图 二、适用性 三、结构 四、参与者 五、代码 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择

    2024年02月07日
    浏览(45)
  • 【设计模式】Bridge Design pattern 桥接模式

    多个维度的变化引起的继承组合指数级增长 例子 一个物体有不同形状和不同颜色,如何用类来表示它们,这里包含了两个变化维度,一个是物体的形状,一个是颜色 继承的方式 如果使用继承的方式,此时要增加一个形状就要多两个类,或者增加一个颜色也要多两个类,这个

    2023年04月08日
    浏览(43)
  • Strimzi Kafka Bridge(桥接)实战之一:简介和部署

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 在strimzi技术体系中,桥接(bridge)是很要的功能,内容也很丰富,因此将桥接相关的内容从《strimzi实战》系列中独立出来,成立桥接相关的系列文章,便于分类和专项深入 本文是《Strimzi Kafka Bridge(桥

    2024年02月08日
    浏览(37)
  • Strimzi Kafka Bridge(桥接)实战之二:生产和发送消息

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本文是《Strimzi Kafka Bridge(桥接)实战之》系列的第二篇,咱们直奔bridge的重点:常用接口,用实际操作体验如何用bridge完成常用的消息收发业务 官方的openapi接口文档地址 : https://strimzi.io/docs/bridge/in

    2024年02月08日
    浏览(46)
  • 《golang设计模式》第二部分·结构型模式-02-桥接模式(Bridge)

    桥(Bridge)使用组合关系将代码的实现层和抽象层分离,让实现层与抽象层代码可以分别自由变化。 例如 客户端调用桥接接口实现原有功能和扩展功能的组合 Implementor(实施者): 具体实施者的抽象,可以是一个接口。 Concrete Implementor(具体实施者): 可以理解为扩展之前

    2024年02月12日
    浏览(42)
  • 【设计模式——学习笔记】23种设计模式——桥接模式Bridge(原理讲解+应用场景介绍+案例介绍+Java代码实现)

    现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图 【对应类图】 【分析】 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 违

    2024年02月15日
    浏览(43)
  • 【零知识证明】数独解的例子解释零知识证明

    2022年11月14日 in 中国科学院大学 如何证明数独有解?不能直接给出解(数据保护问题:数独题目存在价值)。 一、零知识证明方法: 承诺 将谜底卡片扣在桌子上,谜面卡片放在桌子上。(Alice不能查看) 随机挑战 链下互动:Bob让Alice用任意一种(行、列、宫格)方法检查,

    2024年02月02日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包