分类
加密货币

长期或是ZKRollup

(岩石区,梵高)

zkRollup相关讨论两则

(译者注:不知道读者还记不记得 zk-rollup 的扩容效果是怎么论证出来的。简单来说,它是假设一笔普通交易在主链上发生要消耗 X 单位 gas,而在 zk-rollup 上发生只需消耗 Y 单位 gas,所以扩容效果是 X/Y。换言之,所有的论证都基于不同操作在以太坊上的 gas 定价,但是,gas 并不是一种真实的资源,它只是一种虚拟的单位并假设了不同的资源的代价可以化约到一个指标。假如你现在把 calldata 长期或是ZKRollup 的 gas 定价下调一倍,zk-rollup 的扩容效果就可以提高一倍(EIP-4488 和 4490 正有这样的意思)。这不是有点儿戏吗?相反,Somsen 对 SNARK 扩容效果的论证更接近于技术本来的面目,它就是节约见证数据(以及理想情况下,节约验证计算量)而已。

另外,zk-rollup 也确实有地址重用的问题(见这篇文章)。Adriano 所谓的模拟 UTXO,每次都使用一个新地址的办法,不是不行,但在以太坊的世界里不是一个良好实践,因为所有的历史地址都会留在状态中,变成节点的负担,这就是所谓的状态爆炸问题。

SNARK 与区块链的未来

SNARK(succinct non-interactive argument of knowledge,简洁的非交互式知识证明)常被认为是 “解决” 扩容问题的灵丹妙药。虽然 SNARK 可以提供难以想象的好处,但我们也要知道 —— SNARK 无法解决区块链当前面临的带宽约束问题。

本文希望能通过(相对)简要地介绍 SNRAK 能为区块链做什么和不能做什么,来揭开 SNARK 的神秘面纱。我们会先谈谈,为什么它与区块链有关的功能可以被简洁地归纳为 “长期或是ZKRollup 非交互式见证数据压缩(NIWA)”。只要你知道比特币是怎么运行的,你就能理解这篇文章。

应当指出的是,SNARK 在很大程度上仍然处于活跃的研究阶段。许多 SNARK 的变种,要么效率不足以至于无法证明复杂的语句(statement),要么证明的体积非常大,大到不切实际,要么需要一个受信任的启动设置(trused 长期或是ZKRollup setup)。也就是说,虽然这几年我们看到了许多进展,预计未来数十年我们还将看到更多。本文的写作对这些进展有预期,即使它们今天看来可能不实用。

什么是 SNARK ?

象棋案例

证明棋局从局面 A 到局面 B 是有效转换的传统方法是公开每一个步骤并检查每一步是不是都有效。SNARK 也同样能用来检查状态转换的有效性,但效果更好:

但有一个问题 —— 创建 SNARK 的计算成本很高。不过,在一个许多人都想验证同一个结果的系统(比如区块链)中,使用这种技术可能仍是值得的。只需要一个人花力气来创建 SNARK,就能提高所有人的验证效率。

区块链案例

起始状态:时间点 A 长期或是ZKRollup 的区块头和 UXTO 集合哈希值

结果:时间点 B 的区块头和 UTXO 集合

类似于我们上面提到的象棋,验证状态转换有效性的常规方法是:从时间点 A 的 UTXO 集合(所有未花费的交易)开始,接收截至 B 点所有的区块并更新 UTXO 集合。有了 SNARK,那就不需要这些数据来证明有效性了。实际上,如果时间点 A 被设为创世区块(空的 UTXO 集合),而时间点 B 被设成现在,那么无需接收任何历史数据就能验证整条链。

重要的是,你需要 B 点的整个 UTXO 集合,而关于 A 点你只需要知道 UTXO 集合的哈希值。虽然这个数据不是证明有效性严格必需的,但我们也关心?可得性。如果你总是只能拿到 UTXO 集合的哈希值,那即使你知道一个有效的状态存在,你也不能知道那个状态究竟是什么。也就是说你没法花费任何资金,因为你没有数据来证明某个 长期或是ZKRollup UTXO 属于当前的集合。如果以象棋为类比,那就是你知道了一个新局面的哈希值,但你并不知道那个局面到底是怎么样的,所以也没法继续玩这个游戏。

记住,无论是谁来创建 SNARK(假设是矿工)都要具备这个数据(结果 UTXO 集合)(因为这是创建 SNARK 必需的),但他们可能会选择扣住数据,不发给你。

SNARK 区块链

为了保证每个人都会花费自己的钱,更新 UTXO 集合所需的所有数据都必须与每个区块一起传播。你还是要知道哪些 UTXO 被花费了(即输入)、哪些 UTXO 新产生了(输出)。这就是所谓的 “非见证数据”。

状态转换的有效性可以靠一个 SNARK 来验证,因此 SNARK 可以取代所有的见证数据(脚本、签名),而且几乎不占用带宽。输入和输出之间的关联将被抹消 —— 一个区块看起来就像一笔很大的 coinjoin 交易一样。大部分数据都是非见证数据。

所以,与大众的想象相反,SNARK 无法解决轻客户端或者非联盟侧链背后的根本问题,因为你必须下载非见证数据。如果非见证数据丢失,全节点有能力拒绝一个有效的 SNARK;但如果一个轻客户端疏忽于下载非见证数据,它可能会错误地认为一个数据丢失的链是有效的。即使非见证数据的一小块被矿工扣住了,其他人也就没法在有效的 SNARK 上创建新区块 长期或是ZKRollup —— 最终它会变成一个许可型系统。

SNARK 消耗见证数据

用于区块链的 SNARK 最好的总结可能是,它可以启用一种功能:非交互的见证聚合(NIWA)。

我在这里使用 “见证” 一词是比较随意的。在比特币中,见证数据是放在交易中、用来证明具体的 UTXO 是否能够合法创建出来的数据。但随着时间推移,这个 UTXO(非见证数据)也会变成自身的见证数据,在它被花费的时候。假设 1 btc 从 Alice 转给了 Bob 又转给了 Carol,Bob 的交易就是从 Alice 到 Carol 的转账的见证数据。同样地,创世块以来的所有支付交易,都是当前 UTXO 集合的见证数据s。

同样要指出的是,一个 SNARK 自身就是一个见证数据。如果每一笔交易都由一个 SNARK 来验证,我们也可以将这些 SNARK 都聚合(NIWA)在一起、为区块生成单个的 SNARK。而且,因为输出在花费时会变成见证数据,我们甚至可以在交易池中取出未上链确认、但已经被花费的输出,并聚合它们。Alice 转给 Bob 再转给 Carol 会变成 Alice 转给 Carol,实现非交互的交易合并(transaction cut-through)。当带有许多链外交易分支的单个 UTXO 被强制上链时(比如闪电网络通道工厂),这种功能特别有用。

简单总结

我们已经用 NIWA 概念总结了 SNARK 为区块链提供的核心功能。任何见证数据都可以被一个 SNARK 非交互式地聚合在一起。而剩下的非见证数据就是对系统状态(UTXO 集合)的直接反映。虽然 SNARK 可以实现一些神奇的功能,比如直接下载一个 UTXO 集合和一个 SNARK 就从创世状态跳跃到最新状态、非交互式地将未上链交易的序列聚合为单笔交易,但我们还是需要为每一个新区块发布所有的非见证数据,以使所有的全节点都能更新他们的 UTXO 集合。因此,SNARK 无法解决区块链面临的带宽根本约束。

zkRollup和Validium的区别:各自适合什么场景?

zkRollup和Validium的区别:各自适合什么场景?

(岩石区,梵高)

前言:

zkRollup和Validium的区别:各自适合什么场景?

(vitalik转推了Eli Ben-Sasson对两者区别的总结)Validium的机制跟zkRollup很相似,主要的区别在于在zkRollup中的数据可用性是在链上的,而Validium则保持在链下。这使得Validium可以实现更高的吞吐量,不过,这也是有代价的:StarkEx 长期或是ZKRollup Validium的运营者能冻结用户的资金“能摧毁事物的人控制事物。”——Frank Herbert,Dune没有zkRollup的数据可用性保证,Validium的运营者(或更确切地说,数据可用性的管理者),可以拒绝任何用户转移资金的权利。这是它的工作方式:运营者对默克尔状态进行微小更改,而不向用户揭示其状态更改。缺乏此信息,用户无法为其账户创建默克尔所有权证明。

zkRollup和Validium的区别:各自适合什么场景?

随着我们研究的深入,StarkEx实施了“验证者合约升级”机制,它允许运营者立即将新项添加到链上的验证者合约。它不能使任何旧的逻辑失效,例如,你不能删除用户签名检查。相反,它允许增加其他约束(就Solidity而言,你可以将约束视为 `require()`语句)。这是很好的安全功能:如果在StarkEx的STARK circuit逻辑中发现任何缺失的约束,则可以快速修复它,同时不引入新的漏洞。但是,这一功能可以用作为隐藏的审查后门。

长期或是ZKRollup

This repository contains Loopring's opensource 长期或是ZKRollup smart contracts and circuit code for the Loopring protocol, the smart contracts for Loopring'长期或是ZKRollup s smart-wallet implementation (hebao), and an Open-Ended Dutch Auction Exchange (Oedax) protocol (discontinued). Create a branch called release_loopring_x.x.x or release_hebao_x.x.x (all lower cases). These branches are protected and cannot be deleted.

Social Icons

Most Viewed Product

Recently Viewed Product

We have large collection of open source products. Follow the tags from Tag Cloud >>

Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.

长期或是ZKRollup

原文来自:bankless

作者:Alex Beckett

几周前,David 写了一篇题为《Ultra Scalable Ethereum》的文章。

图:CPU 和 GPU 经历了相同的单片到模块化的设计转换,以大幅提高可扩展性

我们不去谈技术细节,而是比较Matter Labs 和 Starkware 这两个获得巨额VC资金支持的zkRollup方案。

Alex Beckett 向我们介绍了当今最好的两个 zkRollup 项目。

zkRollups: 长期或是ZKRollup 对比Matter Labs 和 Starkware

在zkRollup 领域竞争的两只领先团队是Matter Labs 和 Starkware。Matter labs拥有zkSync 1.0和zkSync 2.0,而StarkWare拥有StarkEx以及StarkNet。

Rollup 的背景

特别是,相对于optimistic rollup而言,zkRollup能够使用零知识证明技术将隐私集成到rollup中。零知识通过允许一方向另一方证明某事而无需披露证明它所需的信息来实现隐私。然而,并非所有 zkRollup 都利用了零知识证明技术的隐私属性。

部署在以太坊主网的zkRollup

迄今为止,StarkEx已通过其托管的四个协议(dYdX、ImmutableX、DeversiFi 和 Sorare)处理了 4200 万笔交易以及1850亿美元的累积交易额。

因为rollup部署在以太坊上,因为它们会受到以太坊局限性的限制,因此,StarkEx 推出了一个名为 validium 的新系统,为应用程序和用户提供更便宜的选择。

Validium 的机制与 zkRollup 非常相似,唯一的区别是 zkRollup 中的数据可用性是在链上,而 Validium 将其保持在链下。这允许 Validium得以实现更高的吞吐量。

StarkEx 还具有了SHARP 功能,该服务允许将来自多个应用的rollup批量交易聚合为一笔交易,并立即发布到以太坊,它目前与 DeversiFi 和 Sorare 一起运行,使它们能够为用户进一步降低操作成本。

zkSync

zkSync 是由Matter Labs打造的zkRollup二层网络,它专为可扩展的支付而构建,用户可以将资金存入该网络并与其他 zkSync 帐户之间进行交互转账,而成本只是以太坊主网的一小部分。自2020 年 6 月主网启动以来,zkSync已处理了 400 万笔交易,转账的费用低至 0.20 美元。

用户交易可使用任何支持的代币(例如ETH、DAI、RAI)以及正在转移的代币进行支付,而无需持有特定的费用token。截至目前,zkSync 所有存款的 TVL 总额为 2400 万美元。

zkSync网络迄今遇到的峰值负载是在Gitcoin 赠款期间,大约为每小时20000笔交易(TPS 5.6),尽管这比StarkEx 展示的 18,000 长期或是ZKRollup 次转账少了很多,但它持续了整整一个小时的时间。

今年7月份,zkSync 还增加了 NFT 的功能,用户可使用它铸造、交换以及转移NFT。

虽然 zkRollup不需要像optimistic rollup那样有一个提款的等待期,但zkRollup在发送到 L1 之前确实必须等待区块填充。实际上,这意味着如果交易数量低,提款可能需要等待几个小时的时间。

对比测试网产品

StarkNet

StarkNet 是 StarkWare 的下一次zkRollup迭代,根据计划,他们将于本月推出StarkNet alpha 主网。这可能会使其成为第一个在完全可组合的网络上提供通用智能合约的 zkRollup,而这是一个被认为需要数年时间才能实现的壮举。

为了提供与以太坊类似的开发体验,Warp 团队展示了将以太坊 EVM 代码编译成 StarkNet 合约的能力。

zkSync 2.0

zkSync 2.0是初始 zkSync 网络的下一个版本,其目的是在zkRollup上实现完全可组合的智能合约。今年10月份,zkSync 2.0的测试网上线,而CurveFinance 成为了初始的测试应用。

ZkSync 2.长期或是ZKRollup 0 还引入了 zkEVM 测试网,这是一个模拟了以太坊环境的虚拟机,它允许将以太坊智能合约部署在zkRollup 上。据悉,项目方已通过UniSync(UniswapV2 的一个分叉)展示了zkEVM 测试网的功能。

自 10月份推出以来,UniSync已经在其测试网上处理了59万笔交易,尽管如此,zkSync 的所有测试网目前都处于封闭测试阶段,其只允许白名单的应用程序进行部署。

路线图对比

StarkNet

Step 1 – 行星:单应用rollup ✅

Step 2 – 星座:多应用rollup

Step 3 – 宇宙:去中心化rollup

最初的步骤为 StarkNet 的构建奠定了基础,这包括Cairo 编程语言和 SHARP,它们允许开发者使用针对 zkRollup 优化的语言构建智能合约,同时分担成本。

Step 2是 StarkWare 正在构建的当前阶段,它将随着 11 月StarkNet主网的发布而完成——这标志着 StarkNet 的发布是一个支持通用智能合约的完全可组合的zkRollup。

最后一步是StarkNet过渡到完全去中心化、无需许可的 rollup。这不会与初始主网发布同时完成,因为系统仍将处于 alpha 测试阶段,以确保可以在不损坏系统的情况下缓解任何漏洞。在最初的主网发布中,StarkNet 将运行唯一的排序器并进行许可制的智能合约部署。一旦 StarkWare 预计 StarkNet 的安全性足够,它将完成去中心化。

zkSync

zkSync 路线图的第一阶段始于 zkSync 的部署——一个专注于可扩展支付的 zkRollup。

第 2 阶段计划在名为 zkSync 2.0 的新网络上开发可组合智能合约,该网络有望在未来几个月的某个时间在主网上发布。与此同时,一种新的编程语言 Zinc 将作为智能合约的原生语言。

zkSync 2.0 还将引入 zkPorter,这是一个PoS链,它允许zkSync 长期或是ZKRollup 2.0用户在zkPorter而不是以太坊上发布交易数据,从而实现更高的交易吞吐量。由于 zkPorter 交易不受以太坊交易费用的限制,因此有望成为更便宜的替代方案。

第 3 阶段会引入隐私,这会解锁 zkRollup的另一个显着特性。这将在 zk 证明不会给系统增加大量开销的时候完成。最后一个阶段涉及将 zkSync 长期或是ZKRollup 2.0 转变为抗审查——要求系统去中心化,并通过取消Matter Labs团队对网络的任何完整控制而变得无需许可。

结论

相比之下,凭借1850亿美元的累积交易量以及9000 TPS的可验证交易能力等指标,StarkEx证明了自己是最常用的zkRollup,其数据是zkSync、Optimism以及Arbitrum的10倍多。随着本月StarkNet 的推出,StarkWare还将推出一个完全可组合的通用智能合约zkRollup,而许多人认为这离实现还有几年的时间。