ELISUN讯,在ELISUN技术创新的过程中,ZK Rollup不是一个新的提案,ELISUN发现大约在一年前被 Barry Whitehat 所提出,同时刻 Vitalik 在以太坊研讨员的论坛有一篇比较完好的文章解说,现在由 Matter Lab 在开发。研讨完 zk-SNARKs 之后,一向没空来看,直到最近才有时机来深化了解。除了 ZK Rollup,也会简略带一下前阵子在 Plasma Group 所提出的 Optimistic Rollup。
ZK Rollup一开始提出来的时分,是被界说为 layer 2 的处理计划,年头的时分一度以 Plasma Ignis 这个称号作为宣布。应该是由于上一年 Plasma 很红,一向不断有新的提案跟发展,加上这其时也被界说为 layer 2 的处理计划,这些种种原因,开发者就冠上了 Plasma 的称号,不过由于这项技能跟 Plasma 的精力彻底不相同,被社群反对,后来就康复到 Rollup 这个称号(开发者的声明),所以搜索 ‘Plasma Ignis’ 会找不到什么东西。到最近,Rollup 被更名为 semi-layer 2 的处理计划,便是有一点 layer 2 但又没这么 layer 2… XD
简略一句话解说 ZK Rollup 便是,数据放在链上的 layer 2 处理计划。
在了解 ZK Rollup之前,先来解说本来 layer 2 有什么问题。以 Plasma 为例,Plasma 链只把 Plasma 区块的 hash 放上 Ethereum 主链上做公平(欲了解 Plasma 能够参阅这儿),也便是在链下买卖了数百或数千笔的买卖,最后上链只要几十个 bytes,这是链下买卖的精力,但也是规划上最费事的当地——数据的可获得性(编者注:大陆一般译为 “数据可用性”)。
便是当有人要脱离这个链时,需求一个额定的游戏规则,在 Plasma 叫做应战期(由于链上没有数据,需求侧链参与者的供给依据),这衍生了有数据才干应战,所以我们都要存必定数量的数据,相较于跟主链的互动,只需求装一个钱包,并不需求下载区块数据,用户体会上差异很大。应战期的另一个问题是,运用者需求坚持上线状况,否则错失应战期,就代表默认了买卖(由于是选用诈欺证明并非是有效性证明)。简略来说,由于数据的可获得性问题,衍生了
运用者需求常常在线
需下载部分数据
而形成运用者体会很糟(当然现在的 Plasma 规划现已改进了不少)
怎样将数据放在链上,又不会形成数据过大呢?
首要,先介绍全体架构。跟 Plasma 相同,有一个智能合约做担保,有中继者(relayer)帮助送买卖到智能合约(在 Plasma 叫 operator),中继者除了送买卖外,还需求发生 SNARK 证明,一同送上链做验证。
智能合约的部分,能够幻想跟 ERC20 相同,在合约里记每个参与者的帐,不同在于,规范的 ERC20 买卖是由 Ethereum 这体系做验证,也因而不能兼并(由于这便是 Ethereum 的规范买卖),而 Rollup 中,是把好几笔买卖包成一个规范买卖,对 Ethereum 这个体系,便是一个买卖,而验证买卖的有效性则由智能合约做验证。
实践在智能合约里,用两个 merkle tree 做纪录,一棵树是纪录地址,所以只需求树的索引值就能够代表一个地址(未注册的索引值内容为0),因而地址的数据量就从本来的 20 bytes 削减到只要 3 bytes,另一棵树则记载 balance 跟 nonce。
01
-地址的默克尔树-
这是数据格式(这是开始的提案,后来的实作买卖量更小),
02
由于用索引值当地址的代表,所以只需求 3 bytes(2²⁴个地址),Value 的部分是以10^-6 当作基底,这样只需求 15 bytes 就能够代表一笔买卖,而贮存这样一笔买卖大约只需求 892 gas(尽管 Value 是 6 bytes,可是文章中的假定大部分的买卖只会运用到 4 bytes,所以算法是 13 bytes * 68 + 2 bytes * 4 = 892),而一般 ether 的搬运需求21K gas,因而买卖速度能提高(所以 Vitalik 的文章标题是 “On-chain scaling to potentially ~500 tx/sec through mass tx validation”)。
03
为什么买卖速度能提高?也顺便来了解一下买卖速度
如今以太坊每个区块的 gas 上限约 8M,所以若单纯 ether 买卖,速度约略是
8M / 21K / 15 ~= 25 tps
所以现在的买卖瓶颈其实是 gas 的问题,下降买卖手续费(编者注:指调低转账所需耗用的 Gas 数量)或是提高区块 gas上限,都能当令纾困(但也会形成衍伸的问题),而 ZK Rollup 便是藉由买卖数据量 (size) 的削减,从而能添加买卖速度。那来看一下运用ZK Rollup后买卖速度能到多快
(8M — 600K (zk-SNARK验证) — 50K(估计合约运转的gas花费)) / 892 / 15 ~= 550 tps
这个数字便是 Vitalik 文章的标头 “On-chain scaling to potentially ~500 tx/sec”。但实践上并没有这么抱负,在作者 Barry 的实作中,大约只要 268 tps,由于每次财物的更新都会留下 event,所以有剩余的 gas 花费,可是,这样的规划在使用上也是比较亲热的。
数据都在链上,而且透过 zk-SNARK 做验证,代表着上链的数据都是被验证过的,因而就没有一开始 layer 2 遇到的问题,需求应战、需求下载数据等等。这也隐含着不需求信赖中继者,由于他们无法作坏,最多便是不帮你送买卖。
我们都觉得 zk-SNARK 像个万灵丹相同,用了如同什么事都处理了,不过实践上并没有这么完美。zk-SNARK 除了需求初始设定之外(编者注:指需求信赖的初始设置),最大的问题便是需求很多的运算力,在 Barry 供给的数据中,中继者的计算机若是一台 8G 内存加上 20G 的硬盘 swap,大约只能发生 20 tx/sec,远远不及预期的 500tps 或是实作的 200 多 tps。所以这个计划最大的问题在于要怎样处理算力问题。
平行运算!
Matter Lab运用了多中继者模型跟平行运算。多中继者的模型,很像小型的区块链,运用了 DPOS (Delegated Proof of Stake),还有随机选择区块发生者,所以被选择到的区块发生者,就能够搜集买卖、发生证明而且上链。这样的办法避免了中心化,若中继者被歹意进犯,整个网络仍是能运作得下去,另一方面,也为平行运算做了铺路。零常识证明的发生十分花时刻,因而根据多中继者模型,Matter Lab提出了 “上链-验证” 两阶段的办法,也便是中继者先把数据上链,下一个阶段再上传证明做验证,从而抵达平行运算(如下图)。再加上一些数据的优化,测验成果可抵达 1600 tps。
04
听似很夸姣,可是由于你的买卖被分两阶段上链,也便是从送出到到被验证,会是好几个区块,时刻比本来单纯上链时刻会更久。当然,推迟多久是运用者可接受的,这现在也无从得知。这是一个取舍,省了手续费,添加了买卖速度,却也添加了时刻的推迟,这一切也要等上线后才会知道。
今年头,Vitalik在台北的线下集会中共享了ZK Rollup的进阶版 — ZK ZK Rollup,有爱好的人能够参阅这篇文章,记载的很具体。
Plasma & Optimistic Rollup
Optimistic Rollup 在规划上跟 Plasma相关,所以只会简略带一下差异。
Karl(注)根据 ZK Rollup 的规划,在上个月提出 Optimistic Rollup,概念上也是把数据都放链上,但不是用 zk-SNARK 做验证,由于期望能达到更普遍性的使用。而不相同的当地有,把 from 的部分,改为运用者的签章(65 bytes),由于数据量变大的,可想而知,花的 gas 会更多,买卖速度就会不及 ZK Rollup。另一部份是,由于不是用 zk-SNARK 做验证,就需求数据验证的辅佐办法(validity game),这边就不具体介绍,有时机再写一篇 Plasma/Optimistic Rollup 的具体介绍。
在估算上,买卖速度约是 100 tps,若签章办法改为 BLS,约可提高到450 tps。而在10月的硬分岔后,gas 会下降,预估的买卖速度也会分别抵达 400/2000 tps。(许愿:期望有人能够介绍一下 10 月的硬分岔细节 XD)
搜索更多: