首页

行情

快讯

名人库

专栏

搜索

手机网站文章底页
ZK Rollup不是一个新的提案,大约在一年前被Barry Whitehat所提出,同时间Vitalik在以太坊研究员的论坛有一篇比较完整的文章解释,现在由Matter Lab在开发。研究完zk-SNARKs之后,一直没空来看,直到最近才有机会来深入了解。除了ZK Rollup,也会简单带一下前阵子在Plasma Group所看到的Optimistic Rollup(最初的想法由John Adler所提出)。

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叫做挑战期(因为链上没有资料,需要侧链参与者的提供证据),这衍生了有资料才能挑战,所以大家都要存一定数量的资料,相较于跟主链的互动,只需要装一个钱包,并不需要下载区块资料,使用者体验上差异很大。挑战期的另一个问题是,使用者需要保持上线状态,不然错过挑战期,就代表默认了交易(因为是采用诈欺证明并非是有效性证明)。简单来说,因为资料的可取得性问题,衍生了

1.使用者需要常在线上
2.需下载部分资料

而造成使用者体验很糟(当然现在的Plasma设计已经改进了不少)

如何资料放在链上,又不会造成资料过大呢?

首先,先介绍整体架构。跟Plasma一样,有一个智能合约做担保,有中继者(relayer)帮忙送交易到智能合约(在Plasma叫operator),中继者除了送交易外,还需要产生SNARK证明,一起送上链做验证。

智能合约的部分,可以想像跟ERC20一样,在合约里记每个参与者的帐,差别在于,标准的ERC20交易是由Ethereum这系统做验证,也因此不能合并(因为这就是Ethereum的标准交易) ,而Rollup中,是把好几笔交易包成一个标准交易,对Ethereum这个系统,就是一个交易,而验证交易的有效性则由智能合约做验证。

实际在智能合约里,用两个merkle tree做纪录,一棵树是纪录地址,所以只需要树的索引值就可以代表一个位址(未注册的索引值内容为0),因此位址的资料量就从原本的20 bytes减少到只有3 bytes,另一棵树则记录balance跟nonce。

这是资料格式(这是最初的提案,后来的实作交易量更小),

因为用索引值当地址的代表,所以只需要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”)。

为什么交易速度能提升?也顺便来了解一下交易速度

现今以太坊每个区块的gas上限约8M,所以若单纯ether交易,速度约略是

8M / 21K / 15 ~= 25 tps

所以现在的交易瓶颈其实是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。

延迟…

听似很美好,但是因为你的交易被分两阶段上链,也就是从送出到到被验证,会是好几个区块,时间比原本单纯上链时间会更久。当然,延迟多久是使用者可接受的,这目前也无从得知。这是一个取舍,省了手续费,增加了交易速度,却也增加了时间的延迟,这一切也要等上线后才会知道。

Plasma & Optimistic Rollup

Optimistic Rollup在设计上跟Plasma相关,所以只会简单带一下差异。最一开始由John Adler在以太坊研究论坛所提出。

最一开始是看到Karl(注)的文章才知道这个设计。概念上也是把资料都放链上,但不是用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)

注:在中文的媒体文章中,都称他是Casper的核心研究员之一,但是从我一开始知道这个人,都是在大力宣扬Plasma,他的部落格、twitter都是跟Plasma相关的文章,不确定他在Plasma Group的角色,但个人是把他定位成Plasma Group的leader

0/300

相关新闻

一文读懂ZK Rollup和Optimistic Rollup:以太坊重要的扩展方向

一文读懂ZK Rollup和Optimistic Rollup:以太坊重要的扩展方向

01-28 17:19

ZK Rollup & Optimistic Rollup

ZK Rollup & Optimistic Rollup

12-10 12:27

全部 综合技术人物创投百科观点游戏