1

体验zksync-2

 1 year ago
source link: https://willzhuang.github.io/2020/06/23/%E4%BD%93%E9%AA%8Czksync-2/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

体验zksync-2

2020-06-232020-11-02

zksync 与其他 layer2 方案相比较,优缺点如何? ==> https://mp.weixin.qq.com/s/drgDM5mCZsBQdTIfszO97g

先说结论如下图:

1.png

在区块链 layer1 (以太坊) 中,所有的计算过程和数据存储都在主链进行(交易数据存在区块中,全节点执行所有计算过程);但 layer2 不同,我们可以根据 layer2 如何解决这两个扩展相关的瓶颈问题(计算 & 数据存储)来对他们分类,正如上图的二阶矩阵所示。

Plasma

Plasma 由 Vitalik Buterin 和 Joseph Poon 在 2017 年共同提出;Plasma 作为被寄予厚望的理论思想,可以说是开启了以太坊扩展研究的先驱。将其放在矩阵右下角。

从本质来说,Plasma 的思想相对直观。为了获得更好的扩展性,Plasma 将计算和数据存储都迁移到 layer 2 进行;由 layer 2 的执行者周期性地向主链递交 Merkle 根形式的 “状态承诺” 。如果执行者递交无效的状态,用户可以向主链上的智能合约提供错误性证明(fraud proof);一旦确认执行者出现欺诈行为,则智能合约会罚没他的保证金。

虽然这个想法简单优雅,但细节实现起来却是困难重重。最大的问题就出在数据可用性(data availability)。虽然说可以通过错误性证明,使得提供无效承诺的执行者在主链上遭到惩罚,但用户如果想要提供错误性证明,首先得取得构造出错误承诺的错误数据。这时候问题就来了,如果 plasma 的执行者拒绝在主链上公开数据,那用户能怎么办?这可能会导致主网上记载的 layer2 状态被推进到错误的状态,且无法对执行者追责。

针对这个问题, Plasma 衍生出一些相应的方案,如延长资产从 layer 2 退出的时间,当出现作恶行为,就能够允许大量资产从 Plasma 链退出。但经过这些年的摸索,可行的方案还没有真正实现;这也促使二阶矩阵其他象限的方案的出现。

zkRollup

zkRollup 通过一种间接的方式解决了数据可用性问题,将所有 layer2 上的交易数据,作为参数发送到主链上的某个智能合约内。这意味任何人都能通过观察区块链上的 “calldata(数据调用)” 来获得 layer2 的所有数据,但这同时让 zkRollup 能带来的可扩展性优势仅限于计算这一个维度上了。

zkRollup 则是靠着在主链完成零知识证明,保证无效的状态绝不会发生。因为所有计算都被 “汇总” 到证明里,所以无需信任或是检查执行者。

zkRollup 对数据存储方面也带来了一定程度上的扩展性提升。举例来说,zkRollups 可以发送压缩过的数据给智能合约,而且全节点不需要将 calldata 存储在活跃状态里面,减轻了全节点的使用负担。在 zkRollup 链上无需包含签名数据,因为零知识证明就足以证明交易的有效性。

zkRollup 部署难度较高,安全性要求较高,所以现有的 zkRollup 技术只专注于应用在某几个特定项目,如 Loopring 的去中心化 layer2 交易所。

zkRollup 的零知识证明模型:

  1. 状态树(State Merkle Tree)
2.png

Ha 是 account tree 的高度。Hb 是 balance tree 的高度.

金额和费用使用的是科学计数法: sign * mantissa * (radix ^ exponent),其中的 mantissa 和 exponent 被封装在 zkSync 之中。

Optimistic Rollup

Optimistic Rollup 保留 calldata,可以在主链获得所有 layer2 的数据。同时 Optimistic Rollup 采用错误性证明(跟 Plasma 方案一样),对提交无效状态的执行者进行惩罚。

相比于 Plasma 和 zkRollup, Optimistic Rollup 做了一些权衡,所以带来的扩展性提升幅度最小。Optimistic Rollup 不依赖于什么过于前沿的技术或悬而未决的问题,实际推广中 Optimistic Rollup 更好落地。有多个团队(比如 “Optimism Group” )都已接近将 Optimistic Rollup 架构部署到主网上。

Validium

Validium 选择将 layer2 的交易数据放在链下,因而比 rollup 架构有着更高的扩展性。验证计算方面,Validium 采用零知识证明。如先前在讨论 zkRollup 时提到的,这样做会导致 Validium 在目前的应用部署,只能局限于特定目的(普适性低),比如 StarkEx 就是面向去中心化交易所的方案。

但这些权衡使得 Validium 在某些方面优于 Plasma 。在主网进行零知识证明验证能避免执行者提供无效状态,也能降低执行者不公开数据造成的后果。举例来说,想要勾结执行者,让状态错误地转变为 “把他人的钱转到自己账户” 是不可能办到的;因此 Validium 不需要在协议中设计 “大量资金退出” 激励博弈,也不需要延长资金从 layer2 退出的时间。

正如其他研究者指出的,零知识证明并不是解决数据可用性问题的灵丹,比如(恶意)执行者修改自己所控制的账户的状态是没有问题的,然后积压关于这些交易的数据,这会导致某些用户想退出资金时,无法提供 Merkle proof 。

=======================另一组比较方法=======================

为了简化问题,我们的评估将从以下四个方面着手,分别是:

  1. 安全性(Security)
  2. 性能(Performance)/经济性(economics)
  3. 易用性(Usability)

希望我们的综合比较可以帮助开发者评估不同的扩容解决方案,并采用最适合其需求的解决方案。

除了这些问题之外,我们还汇总了一张对照表(译者注:这张表是本文的重点),可作为与解决方案提供商对话的起点。我们尽了最大努力保持对比的中立和客观,但是在表格里简洁地表达不同方法的细微差别仍然是一项艰巨的任务。我们希望更多的上下文能弥补这一问题。

非常感谢 Georgios Konstantopoulos(Layer 2独立研究员),John Adler,Ben Jones,JD Kanani,Patrick McCorry,Justin Drake(以太坊基金会)和Brecht Devos(Loopring 路印),感谢他们对该表的审查和更正。

3.png

0 某些研究完全不认为侧链应被归入 L2 范畴,可见:https://twitter.com/gakonst/status/1146793685545304064

1 要看相关升级机制的实现,不过一般来说都可以

2 有非常复杂的限制

3 为保证与 EVM 的可组合性,吞吐量的上限是 300 TPS

4 这个参数实际上是可调的,但大部分研究员都觉得 1 到 2 周时间比较安全

5 要看相关的实现。zkSync 是不需要的,但 Loopring 需要

7 理论上来说,可以通过流动性提供商缓解这个问题,但是会让整个方案的资金利用效率性变差


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK