# zkSync上线了！为以太坊带来无需信任、可扩展的支付

By [白开水](https://paragraph.com/@baikaishui) · 2022-05-20

---

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

感受第一个 zkRollup 的魔力，无需特定于应用程序的可信设置。
----------------------------------

六个月前，我们介绍了我们对 zkSync的愿景：[一种无需信任的 L2 扩展解决方案](https://medium.com/matter-labs/introducing-zk-sync-the-missing-link-to-mass-adoption-of-ethereum-14c9cea83f58)，以实现公共区块链的大规模采用。今天，我们邀请您与我们一起庆祝我们路线图上的第一个重要里程碑——在主网上发布 zkSync v1.0。

此版本解决了以太坊生态系统中的一个严重问题：**由于汽油费飙升，交易变得昂贵且不可靠**。每个月，仅 ETH 和 ERC20 代币转移就让以太坊用户花费了超过 [200 万美元的汽油费](https://ethgasstation.info/)（并且还在上涨）。zkSync 可以大幅降低这些成本，同时逐步实现高达 2,000 TPS 的 VISA 规模吞吐量。

什么是 zkSync？
===========

zkSync 是使用 Matter Labs 的zkRollup技术构建的：将零知识证明的前沿研究与链上数据可用性相结合。这种方法拥有令人印象深刻的安全属性：如果实施得当，放在 zkRollup 中的资金与底层 L1 中的资金一样安全。更多关于这下面。

虽然安全性一直是并且永远是 zkSync 架构的重中之重，但我们痴迷于寻找最优雅的设计理念，以实现无与伦比的 UX 和流畅的开发人员体验。以下是主要亮点：

*   交易费用设计为可预见的低长期（< 0.01 美元/tx）。
    
*   在转移的代币中支付的费用（用户无需担心 gas）。
    
*   链下账户创建的零成本。
    
*   L2 转移到任何以太坊地址（包括尚未部署的合约！）
    
*   在几分钟内即时确认交易和最终确定。
    
*   区块确认15 分钟后撤回到 L1。
    
*   适用于任何以太坊钱包的直观用户体验。
    

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

了解系统的最好方法是自己尝试 zkSync。为了开启您进入 zkRollups 世界的旅程，我们创建了一个一键式水龙头，它将向前 500 名用户奖励一个纪念品 Matter Labs 试用代币 ($MLTT)。在您将资金提取到主网后，它会记录您在早期 zkRollup 帮派中的证据。

快来试试吧，它应该只需要 2 分钟！

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

今天开始在 zkSync 上构建！
-----------------

zkSync 完全无需许可，您可以立即开始使用它。将其集成到您的项目中只需要几行代码：zksync-js SDK 遵循客户端库的最佳实践，并以最先进的 ethers-js 为模型。

在我们的开发者门户上查看[入门教程](https://zksync.io/dev/tutorial.html)

我们非常乐意提供帮助，讨论您的用例细节，并提供您可能需要的任何支持！请在此[联系](https://zksync.io/contact.html)

如果您的用例涉及一些复杂的逻辑，例如多重签名、交换、托管、原子交换、铸造/燃烧，甚至更复杂的智能合约，我们将特别有兴趣提供帮助。

虽然我们[未来的版本](https://github.com/matter-labs/zinc)将在Zinc上启用强大的智能合约，但今天使用 zkSync v1.0 已经可以实现很多事情。

要了解有关 zkSync 工作原理的更多信息，您可以在 zksync.io 上的[常见问题解答和文档](https://zksync.io/faq/intro.html)区域中找到详尽的信息。在本文的其余部分，我们将重点关注协议的两个主要属性：安全性和可扩展性。

像主网一样安全
=======

zkSync 的核心技术——zkRollup——是唯一可以提供与 L1 相同的被动安全保证的 L2 扩展方法。这意味着一旦您确认资金已进入您的 zkSync 账户，您可以离线一年，然后再回来，并确保您能够在没有任何外部帮助的情况下收回您的资产。您的 zkSync 存款完全不受对 zkSync 运营商的任何操纵或攻击。

这在现有的 [L2 扩展解决方案](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955)中绝对是独一无二的：所有其他方法都需要积极的安全措施，这意味着他们的运营商需要做一些持续的工作来保证资金安全。这会增加攻击面和其他类型的威胁（例如，在某些情况下，您的帐户可能会被运营商冻结或扣押）

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

zkSync 用户资产的安全性对我们来说至关重要。我们遵循非常严格的开发和 DevOps 安全实践，在负载测试中进行了数千次事务，并通过单元和集成测试广泛覆盖了我们的代码。

此外，zkSync 协议、智能合约和零知识电路已经过零知识领域最受尊敬的专家组之一的审计： [ABDK](https://www.abdk.consulting/)（该团队共同编写了 Poseidon、Equihash 和 Argon2 哈希函数并进行了Jarvis 密码的密码分析、STARK 友好的哈希函数 Friday、AES、ALE、Catena、RC4、IDEA 以及许多其他密码方案和协议）。

尽管进行了彻底的审核，但出于额外的预防措施，我们决定将 zkSync v1.0 作为公开测试版发布。实际上，这意味着一件事：Matter Labs 可以在较短的通知期后更新合同，这使我们能够快速响应任何意外情况。将通过智能合约事件通知用户计划升级（与 spells.fyi 的集成服务即将推出）。如果用户不同意即将发生的更改，他们将有通知期在 L1 上提交退出请求。按照设计，在处理完所有退出请求之前不会进行升级。升级授权由使用单独的冷钱包控制的多重签名保护。我们将逐步延长通知期限，直到最终实施纯选择加入升级机制，以消除大规模退出的任何潜在风险，并为 zkSync 账户制定 100% 的被动安全性。

虽然 zkSync UI 可以与任何以太坊钱包一起使用，但有一个重要的警告。[zkSync](https://eprint.iacr.org/2018/068.pdf)（ Schnorr 的一种变体）中使用的 SNARK 友好签名方案与以太坊中使用的 ECDSA 方案不同。我们有一个集成了我们的签名方案的[Metamask snap](https://github.com/MetaMask/metamask-snaps-beta)原型（将在 snap 准备好用于主网后立即发布），以及一个正在进行的合作计划，为移动、桌面和硬件钱包提供本地支持。在此之前，zkSync 帐户控制密钥由浏览器中的 zkSync UI 处理，从安全角度来看，这并不理想。为了减轻这种攻击向量，我们实施了2个因素安全机制：对于每笔交易，必须使用原生以太坊签名对纯文本授权进行签名，在交易被包含在汇总块之前，我们的服务器会对其进行检查。这样，即使我们的 UI 网站被黑，攻击者也无法利用它。同时，我们希望本机集成能够迅速跟进，从而使这种安全预防措施变得不必要。

zkSync 是第一个没有特定于应用程序的可信设置的 zkRollup——为什么这是一个游戏规则改变者
===================================================

*   _受信任的设置很难，它需要大量专家和社区的关注才能确保安全。上一代 SNARK 需要特定于应用程序的可信设置，大大降低了 zkRollup 技术的安全性和适用性。_
    
*   _zkSync 是第一个具有通用可信设置的 zkRollup。我们重用了有史以来最安全的 MPC 仪式的结果。_
    
*   _这使我们能够轻松安全地迭代 zkSync 设计、添加扩展、增加吞吐量、添加智能合约和实现隐私。_
    

上一代基于[SNARK](https://github.com/matter-labs/awesome-zero-knowledge-proofs#snarks)的区块链技术（Zcash、Tornado cash、Loopring）使用了一个名为[Groth16](https://eprint.iacr.org/2016/260.pdf)的证明系统。虽然它在 2016 年发布时是最先进的协议，但我们已经看到去年寒武纪零知识证明协议的爆炸式增长，在 Groth16 上得到了巨大改进——尤其是在设置公共参考字符串 (CRS)。

CRS 更广为人知的是“可信设置”。在生成 SNARK 证明之前，必须创建一次 CRS，通常是在有多个参与者的多方计算 (MPC) 仪式的过程中。如果这些参与者中至少有一个是诚实的并且已经安全地删除了他们贡献的熵（随机性），则使用此 CRS 生成的 SNARK 被认为是安全的。

可信设置 MPC 是一个巨大的后勤和运营安全挑战。但 Groth16 将其变成了后勤和安全的噩梦——需要特定于应用程序的可信设置。这意味着需要为每个应用程序和该应用程序中的逻辑的每次更新（每次更改，每次错误修复）单独完成受信任的设置。考虑以下：

*   受信任的设置协议需要经过高度审查的同行评审。Zcash 的 Sprout 的可信设置[协议规范](https://electriccoin.co/blog/zcash-counterfeiting-vulnerability-successfully-remediated/)中的一个错误引入了一个严重的安全漏洞。您希望大量公众关注您的可信设置。这很难经常执行，尤其是在绑定到单个应用程序时。
    
*   必须彻底审查可信设置实现的代码，以消除后门和弱点。理想情况下，您需要多个独立的实现。
    
*   受信任设置的参与者必须遵循严格的安全程序以确保他们没有受到损害：在安全环境中运行它（绝对不是在浏览器中），最好是在新购买的气隙机器上。
    
*   您的用户希望看到他们个人认识并认为值得信赖且精通安全的参与者。使用特定于项目的设置很难实现这一点。
    
*   最后，该过程的纯粹逻辑复杂性（对于面向可扩展性的可信设置，您需要大量 Gb 的下载/上传，以及在保护安全性的同时进行数小时的计算）使得人们很难在一致的基础上参与。
    

理想的情况是完全摆脱它，或者至少只需要这样做一次。

最近出现了一些高效的证明系统，它们是透明的——即不需要可信设置——例如 STARKs、Halo 和 SuperSonic。它们看起来很有前途，尤其是 STARK，因为其他系统太昂贵而无法在以太坊上验证。因此，Matter Labs 团队在这个方向上做了很多实验：我们发布了[Hodor](https://medium.com/matter-labs/meet-hodor-matter-labsstark-prover-implementation-c759a6ef4c98)，我们的 STARK 证明者实现，后来开发了[RedShift](https://eprint.iacr.org/2019/1400.pdf)，一个混合透明证明系统，结合了 SNARK 和 STARK 世界的精华。

不幸的是，就 gas 而言，STARK 和 RedShift 证明的验证成本仍然很高。这使得他们当前对 zkRollups 的部署存在问题。需要做更多的工作才能使它们足够高效地完成这项任务。

但是，我们现在有一类新的证明系统，称为[SNORKs](https://github.com/matter-labs/awesome-zero-knowledge-proofs#snorks)：具有通用且可更新的可信设置的 SNARKs。这意味着仍然需要设置，但只需要一次，以后可以被许多应用程序重用。同类中的第一个是 Sonic（Matter Labs[创建](https://github.com/matter-labs/alpha_line)了它的第一个简洁版本的实现），但后来更高效的版本紧随其后。今天，[PLONK](https://vitalik.ca/general/2019/09/22/plonk.html)是此类最先进且经过同行评审的证明系统。

2019 年秋季，Matter Labs 参加了由 AZTEC Protocol 组织的 PLONK启动MPC 仪式。其他参与者包括[Vitalik Buterin](https://twitter.com/vitalikbuterin/status/1225856246307311616)和加密社区的其他一些杰出成员。Buterin 还创建了参与者软件的独立实现。zkSync v1.0 使用 PLONK 和 Ignition 的 CRS 作为其证明系统。

这种一次性可信设置意味着我们可以快速迭代 zkSync 设计并实现新功能或扩展，而不会丢失任何安全属性。

对于以太坊中可用的配对友好椭圆曲线，PLONK 电路的最大尺寸为 2²⁶。这导致 zkSync v1.0 中的最大块大小受到限制，将吞吐量限制在 300 TPS——而不是我们的技术堆栈和以太坊带宽今天将启用的 2,000 TPS。但是，这不是问题，原因有两个：

1.  当前容量超过[Paypal 的平均交易负载](https://www.statista.com/statistics/419783/paypals-annual-payment-volume/#:~:text=In%202019%2C%20PayPal's%20total%20payment,to%20227%20million%20U.S.%20dollars.)（200 TPS）。我们相信它对于 zkSync 运行的前几个月完全足够了。
    
2.  更重要的是，即使没有椭圆曲线的循环，PLONK 也很少有有效的递归策略可用。我们已经实现了几种递归变体，并将根据更详尽的测试选择其中一种策略。递归允许我们使 zkSync v1.1 中的块无上限，而无需重新实现已经审计的基本块电路。此外，它是未来实施隐私和智能合约的关键。稍后我们将在单独的帖子中提供更多详细信息。
    

正如我们一开始所说，我们的目标是为数十亿人提供可扩展、保护隐私、有弹性、公平、完全无需许可的区块链技术。今天，我们从满足所有这些需求的可扩展性解决方案开始，没有隐私。一旦规模化，我们将对以太坊的隐私做同样的事情。

可扩展性和超越性！有问题吗？
==============

zkSync 网站包含一个全面的[常见问题解答和文档区域](https://zksync.io/faq/intro.html)。

想了解更多或讨论合作伙伴关系？[和我们谈谈](https://zksync.io/contact.html)

在 Twitter 上加入与我们的对话：[@the\_matter\_labs](https://twitter.com/the_matter_labs)

_我们非常感谢所有帮助实现这一里程碑的人：感谢我们的投资者和顾问的持续帮助；感谢@vbuterin 的旧（2017 年！）博客文章，这些文章启发了我们深入零知识证明的世界，以及他对 zkRollup 的想法；Sean Bowe 的“bellman”——密码学实现的黄金标准；感谢以太坊基金会——以及个人对@BarryWhitehat 和 Albert Ni——的信任以及他们在项目最关键的早期阶段的支持；感谢 Eli Ben-Sasson 的启发，将 ZKP 提升到新的水平；感谢 ZKP 社区，特别是 Mary Maller、Zac Williamson 和 Ariel Gabizon，感谢他们在具有通用可信设置的证明系统方面的想法和令人难以置信的工作。_

---

*Originally published on [白开水](https://paragraph.com/@baikaishui/zksync-3)*
