Luozhu Profile picture
May 2 23 tweets 5 min read
这两天我把zksync的代码拆开并仔细的阅读了一下(matter-labs/zksync),作为目前市面上主流的zk-rollup项目之一(还有@StarkWareLtd@loopringorg和未来的@Scroll_ZKP 等),zksync算是其中开源最多,代码最完整的项目,所以可以作为zk-rollup优质的学习资料好好研究一番
1)zksync的创始人是@gluk64,他是一位乌克兰籍的开发者,我在很多早期的rollup项目/论坛中都可以频繁见到他的身影

比如barry whitehat的roll_up(可以算是最早的rollup实现)gitter论坛中,首先发现这个项目并进来讨论的就是@PhABCD@gakonst(paradigm CTO)和@gluk64三人
2)而且因为好奇rollup的历史演变,我去ethereum research论坛中搜索了一下最早提出rollup的人(2019之前)

当时只有@PhABCD、barry whitehat和@gluk64对vitalik的回复提到了rollup,这三篇post都非常值得阅读
另外我发现research(ethresear.ch)是许多优秀思想最早形成和讨论的地方,vitalik在过去四年的时间里几乎每天都会上research发布/阅读新想法,并且跟社区开发者交谈
所以如果你有好的想法/项目,不妨post到research上,如果你想发现最早期的优质项目(可能还只是一个idea),也不妨多上去逛一逛

@yezhang1998@Scroll_ZKP 最早的介绍也post到了这里:ethresear.ch/t/introducing-…
3)zksync目前开源的代码是v1版本,他们的v0.1(minimal implement)在2019年8.20就完成了,之后在2020年6月上线主网,但v1.0.0版本一直到2021年7月才彻底完成(两年的开发成果,很难在一周内全部看完)
目前团队的重心放到了zksync v2,也就是所有人都期待的zkEVM,目前已经上线了testnet但还没开源,预计完成了所有的工作之后就会开源

所以我们看到的v1是非常稳定的版本,除了对一些安全性和稳定性的维护以外,不会再进行重大的功能更新 👇
4)大部分zk-rollup基本上都由两大部分组成,一个是部署在L1上的contract,这个智能合约会与rollup network通信,接收rollup返回的结果,并在验证完链下操作的正确后把数据存到链上(一般是存merkel root)
一个是L2的rollup network,用于执行大量交易,并将交易批量打包为一个block,再生成proof验证结果的有效性
5)zksync主要由三个模块组成,第一个模块是部署在L1上的contract,作用也是通信/验证/存储,还有把用户的资产从L1转入L2(deposit),或者把L2的资产提回L1(withdraw)
除此之外,zksync实现了一个priority queue(优先通道),所有L1 user发起的deposit和withdraw(full exit)都可以独立于L2的交易优先完成(还没有测试需不需要增加手续费)
另外我还发现了两个非常有意思的细节,值得单独研究研究:

第一个是,L2不需要生成新的地址,和L1完全是同一套账户系统(L1 EdDSA signature -> L2 private key),对于用户来说,只需要切换一下以太坊地址所连接的网络就可以进入layer2世界
如果未来layer2承载的10亿加密用户继续使用Ethereum账户系统,那么现在的链上身份/链上数据会成为非常重要的基础设施,现在这类协议非常小众,最多只有几万人使用,未来可能超过百万/千万
而且这类协议的去中心化很重要,创业/投资都可以重仓这类基础设施(其中我非常看好@ensdomains,它有潜力成为一个super protocol)
第二个是所有rollup都需要实现data available,假设出现layer2的rollup network彻底崩溃的最坏情况,用户还可以根据链上存储的数据(涉及到共识)回滚最新的block and state,从rollup上安全地取回自己的资产
所以观察rollup是否够安全,可以进行上述的极限测试(最终数据存到链上最安全),后面我们可以结合zksync的思路去看看zkPorter/Validium/Volition/avail/celestia/danksharding等DA方案
6)zksync的另外两个模块分别是prover和server(都是rust实现,所以不难猜zksync v2的network大概率也是由rust实现)

prover是一个on-demand worker,用于给block生成proof,生成proof是一项非常耗费计算资源的工作,所以出现了许多zk-hardware的项目,把这些生成proof的工作外包给矿工或者其他第三方
7)zksync打包交易(rollup)的逻辑都在server中实现,最核心的是/zksync_core中的core service,它会接收mempool中的所有有效交易,并commit为一个个新的block(blockchain)
当新block被committed之后,sever会请求给block添加一个proof,这时server模块的witness generator和上文中提到的prover会合作生成proof并添加给block,之后Ethereum Sender service会与L1通信,把这个block发布到链上验证/存储
8)总的来说就是下面这个流程(图源Google),zksync获取所有L1(通过Eth Watcher)和L2的交易,并添加到mempool(L1交易优先于L2)

之后core service会定期检查,并把mempool中符合要求的交易打包为一个新block,之后会向prover请求proof,添加到block后发送(通过Eth Sender)L1的contract验证/存储
这个项目比较庞大,源码我还没有完全读完,我把其中一部分的阅读笔记post了出来(github.com/LuozhuZhang/so…

阅读源码并尝试实现是一个非常享受的过程,如果有对zk-rollup/layer2非常感兴趣的小伙伴欢迎DM我,期待能找到更多有趣的人一起读源码,一起尝试实现新项目
9)zksync是一个非常有趣的项目,它是layer2的先驱,但不会是layer2的终局,L2中还有大量需要解决的问题等待着我们

比如general zk-EVM、cross-rollup和rollup之间无缝的可组合性如何实现?
以及未来出现application-specific rollup,甚至是L3之后,会不会衍生出一些方便开发和部署L3-rollup的SDK/Protocol呢,这些方向都非常值得探索

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Luozhu

Luozhu Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @LuozhuZhang

Apr 14
我在许久之前,对EVM感到非常好奇,物理计算机的操作系统我尚且可以理解,为什么Ethereum能实现自己的虚拟操作系统?

而且是完全图灵完备的,意味着可以模拟人类所有的计算行为,也意味着每个人电脑上运行的程序,都可以迁移到EVM环境下运行
1)因为对这个问题感到好奇,我当时拆开go-ethereum的一部分源码阅读了一下(主要是core/vm),还看了一些黄皮书(没看太懂)和rebase EVM源码解读的内容

但只理解了皮毛,没有彻底搞懂。之后在阅读《信息简史》和《香农传》的时候接触到了 “图灵机模型”,发现这几个概念之间有非常强的相关性
2)图灵机的本质就是模拟人类解题的“思维”和“演算”过程,把人类的所有问题分为“可计算”和“不可计算的”,后者由图灵机完成

一个最简单的图灵机模型由以下几部分组成,一个无限延长的纸袋(tape),一个自由移动的读写头(header),一套控制规则(table),一组状态寄存器(在图中没有明显标注出来)
Read 16 tweets
Apr 13
最近顺着之前提到的“现有的solidity和evm生态”深入研究了一下zkEVM,初步了解了不同团队和流派实现zkEVM的不同方式,简单分享一下
1)其中最值得关注的是native zkEVM的实现方式,所谓native就是他们可以无缝兼容现有的EVM(包括Gavin在黄皮书中定义的opcode),不会再建立新的编译架构

如果native的zkEVM能够实现,未来所有layer1的应用可以一键迁移到zk-rollups(太方便了),而且不同rollups之间的应用通过同一个VM编译部署
某一条zk-rollup上的合约不仅可以调用layer1上的合约,而且还可以调用其他zk-rollup上的合约

layer2之间真正实现可组合性和互操作,而且gas费降低到支持10亿的用户和应用,这是一个非常强大的趋势,几乎是一个无限增长的空间(也是让我如此感兴趣的原因)
Read 12 tweets
Apr 12
这几天刷GitHub很频繁,看到了许多有意思的人/项目,着重分享两个有趣的人
1)@gakonst@paradigm 的CTO,和@FEhrsam 一样都是非常值得关注的人,他长期关注layer2、modular、PoS等内容,我就是在一个StarkNet的项目里发现他的

Georgios的blog里有几篇关于layer2和scale的文章,准备之后有时间慢慢细读一下,而且他还是一个5k小时的dota玩家 :)

gakonst.com
他的GitHub(github.com/gakonst)极度活跃,几乎没有一天是不在写代码的,见下图(2022年到现在只有两天没写代码)

虽然作为capital,但是开发了许多对开发者极为有效的工具,比如用rust写的foundry(可以替代hardhat对合约编译,特点就是非常快) Image
Read 8 tweets
Apr 9
每天都应该阅读一些东西,无论是tweet、medium上的blogs还是系统的书籍,有以下几个好处:

1)可组合性(composability),每当挖掘出一个信息宝库,其他人的知识可以和我们自身的知识储备发生相互作用,可能是一点微弱的连接,也可能是相似处理方法的借鉴,非常容易爆发创新
2)培养全局视野,每个人观察的视角都是片面的,你的庞氏骗局在别人眼里可能是独角兽,相似的故事在历史上重复了一遍又一遍

阅读行业名人早期的文章/回忆录,研究行业的历史演变,非常有助于培养全局视野,甚至能对许多现象提出规律总结
3)阅读(和写作)是体系化挖掘机会、系统化创造财富的过程

最近读了@multicoincap 的创业历程,两位创始人最大特点就是深度分析思考,从不跟随市场主流意见,输出大量有特色的优质文章

其背后是两位创始人长期深度研究,而且不局限在Crypto领域
Read 8 tweets
Apr 9
兴趣=正反馈-意志力,或者说兴趣=好奇心+求知的正反馈-意志力

对于我来说正反馈就是知道了某些之前不知道的事情,对偶然间好奇提出的问题找到了答案,这种愉悦感自然会激励更进一步,向深处探索

某些兴趣的大师,他们追寻自己的热爱,深入某个细分领域,在探索中发现更多问题,在探索中解决更多问题
自然而然,他们比别人知道的更多,掌握的更多

这个过程应该是愉悦的,不应该是感到窒息和精疲力竭的,如果想用意志力正面对抗,一开始可能还热血沸腾,要不了多久就会感觉巨大的黑暗,让人没有动力持续进行
所以应当识别“哪些事情是让你沉浸其中,近乎忘我的?”,“哪些事情是让你筋疲力竭,感到巨大黑暗的?”

应该放大前者的声音

mp.weixin.qq.com/s/GSaIpLq1WTo0…
Read 4 tweets
Apr 7
阅读《阿桑奇传》和《密码朋克》对互联网早期的历史(90年代)又多了一个角度的理解:

👇
1)在八九十年代美国政府曾希望垄断加密技术。比如他们将加密技术列为军需品清单(US Munitions List),严禁出口到别国,也压制民间采用加密技术

在当时如果你给别人发送的email中含有一些code,或者带着条形码纹身上飞机,可能就会被美国政府判定为“走私军火”,放到今天看非常荒谬
2)密码技术实际上有非常强大的力量,对于个人能够保障自己的数据和隐私不被除自己以外的任何第三方获取

想象一下,动用一个国家所有的军事力量都无法攻破你的加密钱包,没法获取你的信息和数据(现在是金钱),暴力成本和暴力收益之间的天平开始倾斜
Read 10 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(