# Electron Labs提案: 将IBC整合到以太坊

By [IBC League](https://paragraph.com/@ibcl) · 2022-09-16

---

*   _本文编译自_ [_ethresear.ch_](https://ethresear.ch/t/bringing-ibc-to-ethereum-using-zk-snarks/13634)
    
*   _感谢社区小伙伴Samwang提供信息源_
    
*   _观点摘录: 这个方案看起来比价靠谱， 如果实现了可能就没有其他跨链桥什么事了._
    

问题背景
----

IBC 遵循轻客户端原则，需要将源区块链和目标区块链的轻客户端实现为智能合约，以验证跨链交易。

这意味着，为了将 IBC 连接到 Eth，我们需要在以太坊上以智能合约方式运行**Tendermint轻客户端**(run the Tendermint light client on Ethereum as a solidity smart contract)。

但是这个过程gas消耗**昂贵**，因为这需要在Solidity中验证数百个ed25519签名，而 ed25519 预编译在以太坊上不可用。一个 ed25519 需要 500K gas。

这意味着验证完整的轻客户端header将需要至少 5000 万gas费（100 个验证者），对于拥有 1000 个验证者的更大的 cosmos 链，则高达 5 亿gas。

因此，为了在以太坊上更便宜地验证签名， 我们需要新的方法。

解决方案
----

我们通过从zk-rollups获得灵感来实现这一目标。我们没有直接在以太坊上验证ed25519的签名，（并在solidity智能合约内执行曲线操作），而是构建了一个签名有效性的zk证明，并在链上验证该证明。

在 Electron Labs，我们构建了一个基于 circom 的库，允许你为一批 Ed25519 签名生成 zk-snark 证明。[在这里查看完整的实现](https://github.com/Electron-Labs/ed25519-circom)。

**如何参与体验？**

我们已经部署了一个服务器，其端点允许你提交一批签名并获得 zk-proof 作为回报。你现在可以使用我们的文档中给出的 API 参考进行测试 - [docs.electronlabs.org/reference/generate-proof9](http://docs.electronlabs.org/reference/generate-proof)

数学实现细节
------

为 ed25519 创建 ZK证明 是一个难题。

这是因为 ed25519 的twisted Edwards curve 使用的finite field 比altbn128 曲线（由 zk-snarks 使用）使用的finite field大。在较小的field内执行大型finite field运算很困难，因为模数和乘法等一些基本运算可能变得非常**低效**。

为了解决这个问题，我们能够找到2^85作为基数，来定义我们的twisted Edwards curve的曲线运算。由于ed25519素数p=2^255-19是2^85的近似倍数，我们能够为基数2^85的数字想出有效的基本运算，如乘法和模法（在25519素数下）。

接下来，我们使用这些自定义操作在 ZK 电路中定义曲线操作，例如点加法、标量乘法和签名验证。

在这个文档中很难公正地解释这背后的数学细节，请参阅我们的[详细文档解释](https://docs.electronlabs.org/reference/overview).

单一签名证明的性能
---------

由于上述优化，我们能够为单个签名实现的性能数据如下:

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

Batch Prover 的性能
----------------

要了解系统级别的性能，我们需要查看 3 个参数 -

*   每个签名的证明生成时间 ~ 9.6 秒（平均）
    
*   每批/证明的签名数 = ≤ 100（最大值）
    
*   为批次生成 zk-proof 的时间 = 16 分钟（基于100 个签名批次）
    

证明生成时间（几乎）与每批签名的数量呈线性关系。我们可以增加/减少**每批签名**的数量，并且证明生成时间会相应改变。

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

证明制作时间将以延迟的形式显现。为了减少这种情况，我们可以在一个zk证明中放入较少数量的签名。但是，这意味着同样的批次大小（或每个轻客户端header）将需要更多的证明，这将增加验证该批次的**gas成本**。

因此，减少延迟会增加 gas 成本。

下面我们列出了根据延迟和参与该 cosmos 链的验证者数量来验证以太坊上的Tendermint轻客户端 (LC) header的预期成本。

我们可以让用户/cosmos 链决定他们想要使用的延迟和 gas 费用的选项。

![基于 2022 年 8 月 5 日的gas价格。
](https://storage.googleapis.com/papyrus_images/7b5cd44198b65c6ce8698f73490e65940547b93a8de3d126309680ca99d78f8e.png)

基于 2022 年 8 月 5 日的gas价格。

这里我们选择200个验证人和50个签名作为证明的基础分析。

Relayer基础设施成本
-------------

由于Tendermint出块速度是~7秒，而证明的生成时间是8分钟，我们将需要多个**验证人并行**来跟上区块的生产速度。

所需的并行机器数 = 8 分钟 \*60 / 7 秒 = 69 台机器

我们建议使用 m5.8xlarge AWS 云实例来生成证明。

因此，此基础设施的成本 = 1.536 美元\*69 = 106 美元/小时

每个轻客户端Header的机器成本 = 106/3600/7 = 0.206 美元

预估总交易成本
-------

基于 8 分钟延迟和 200 个验证器的假设。

链上轻客户端验证的总成本 = $17.9 + $0.206 = $18.1

让我们假设一个最坏的情况（从交易费用的角度来看），即一个区块中只有一个跨链交易。然后验证 LC 标头的全部费用由该交易承担。加上一些间接成本，验证跨链交易大约是 20 美元。

假设每个区块有 10 笔交易的乐观情况，此成本将约为 2 美元，这与以太坊上 Uniswap 交易的成本相似。

怎样降低 gas 成本和延迟（使用递归）？
---------------------

为了将延迟降低到几秒钟，并将每笔交易的 gas 成本降低到几美分，我们正在研究**递归证明**技术。这将使我们能够并行生成多个证明，然后递归地将它们组合成一个证明。

我们正在评估市场上可用的各种递归库，例如 plonky2，以及 Mina、Aztec 和 Starknet 团队的作品。我们邀请任何从事递归工作的人与我们联系。

通过使用递归和基于硬件的加速，我们相信我们可以实现跨链交易的5秒以下的延迟。

未来，我们甚至可以将多个轻客户端header组合在一个证明中，每个证明的成本仅为 4.5 美元，并且每个跨链交易的成本可能低于 1 美元。

系统设计概述
------

**当前 IBC 设计（简化）**

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

**新提议的 IBC 设计**

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

下一步计划？
------

我们邀请以太坊和 ZK 社区提供他们的意见并帮助我们收集支持以使该提案成为现实。

**执行计划：**

1.  阶段1：我 ZK 引擎与 IBC 的集成
    
2.  阶段 2：通过递归证明和硬件加速将延迟降低到约 5 秒。
    
3.  阶段 3：部署一个演示应用链，通过zk-IBC连接到以太坊。
    
4.  阶段 4：运行演示应用程序链的设置，进行广泛的测试，并使社区能够测试交易。
    
5.  阶段 5：安全审计
    
6.  阶段 6：主网部署
    

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

---

*Originally published on [IBC League](https://paragraph.com/@ibcl/electron-labs-ibc)*
