值得信赖的区块链资讯!
L2 – zkSync源代码导读
Layer2是一个大方向。最近一段时间,会围绕L2写一些文章。区块链技术有趣的地方就是一种技术的发展打开了一扇窗。零知识证明的发展拓宽了区块链L2的视角,提供了L2的另外一种实现可能,即zk Rollup。从另外一个角度看,区块链的进步是缓慢的,需要很多优秀的人才跨界把不同的技术揉杂在一起,让不可能成为可能。
matter labs在zk Rollup方向的积累比较深,有一系列的开源项目可以学习。让我们从zkSync开始吧。
zkSync的源代码地址,所有的逻辑使用rust语言开发:
https://github.com/matter-labs/zksync.git
特别注意的是,查看完整源代码需要查看dev分支,并不是master分支。master分支提供编译后的各种执行程序。本文采用的代码的最后一个提交信息如下:

1 源代码目录结构
zkSync项目实现了L2相关的方方面面。查看zkSync的提交记录,这个项目创建于2018年的11月份,已经有两年的开发时间。从matter labs公开的各种项目,matter labs在zk rollup想的很远,也已经走的蛮远。细想想,踏踏实实地思考区块链技术,认认真真地把一小点积累做好。整个源代码目录结构如下:

bin – 一些二进制程序和脚步
contracts – 智能合约逻辑
core – L2的核心逻辑
docker – docker相关的配置
docs – 文档,比较详细的解释了zkSync的协议设计,电路实现,智能合约,K8如何配置,以及如何启动等等。
etc – 配置信息
js – zkSync客户端以及浏览器(explorer)
zkSync的内容比较多,这篇文章主要给大家讲讲zkSync的大体逻辑结构,重点介绍智能合约以及core的相关逻辑。所有zkSync的核心逻辑都实现在core的目录下:

core/circuit – 零知识证明电路实现
core/crypto_exports – 零知识证明底层库封装
core/data_restore – 状态恢复的相关逻辑
core/eth_client – eth客户端的封装
core/loadtest – 压力测试相关逻辑
core/models – zkSync的模型定义
core/plasma – zkSync的状态实现
core/prover – 零知识证明的证明生成引擎
core/server – 各种server的实现,包括eth的监测(watch)和交易发送(sender),交易费用的计算(fee_ticker),零知识证明的服务器(prover server)以及API服务等等
core/storage – 所有状态的存储以及持久化逻辑
2 整体架构
zkSync目前主要实现了L2的转账功能。L2有自己的账户系统以及状态。zkSync总体的功能模块以及相互之间的关系如下:

Eth Watch以及Eth Sender负责监控和发送zkSync智能合约的交易。Mem Pool负责收集交易。交易分为两种两种:L1交易和L2交易。Block Proposer将交易打包,并更改世界状态(Plasma State)。在世界状态更改后,通过Block Committer生成证明需要的信息。零知识的证明通过Plonk证明系统生成,其中包括Prover Server和Proving Client。API提供接口实现UI的信息展示和L2的交易提交。
3 L2账户系统和世界状态
zkSync并不需要独立生成新账户。zkSync的L2账户和L1账户一一对应,“共享”一份私钥。

简单的说,L1的私钥的ECDSA签名的结果作为L2账户的私钥。L2账户的秘钥是JubJub曲线上的Scalar值,对应的公钥是对应椭圆曲线上的点。L2的状态包括两部分:账户以及账户下所有Token的余额。

账户以及支持的Token个数定义在etc/env/dev.env文件中:

目前支持2^32个L2账户,2^11个Token。每个L2账户都有一个唯一的编号,从零开始。编号0,默认为Validator的账户。Account节点包括如下信息(其中PubKeyHash就是L2账户的公钥信息):

每个Token也都有唯一编号。Token节点包括如下信息:

zkSync支持的Token信息由L1智能合约维护,具体逻辑可以查看contracts/contracts/Governance.sol的addToken函数。
4 交易类型和区块
zkSync目前支持如下交易类型(操作类型):
Noop – 空操作(L2)
Transfer – 转账(L2)
Transfer to new – 转账给新账户(L2)
Withdraw (Partial Exit)- 转出资金(L2)
Deposit -转入资金(L1)
Change pubkey – 更改L2的公钥信息(L2)
Full exit – 退出,从Layer1发起的交易,退出L2(L1)
close操作 – 退出,从Layer2发起的交易(新版本已经废除,L2)
L2的区块信息相对简单,总体的结构如下:

L2的区块信息包括:新的世界状态的树根(new root hash),区块交易费用接收账户以及多个交易信息。交易信息分为两种:一种是L2的交易,从L2的角度看,这些才是“正常”交易(transaction);另外一种是从L1发起的交易(Deposit以及Full exit)。
从L1发起的交易,在代码中常常被标记为"Priority"交易。相对来说,从L1发起的交易,相对L2的交易优先级确实更高一些。
以Deposit交易为例,介绍一下L2账户创建的流程:

在L2创建账户,其实涉及到两个交易类型。Deposit是L1的Priority的交易。在Eth Watch监测到交易后,发起L2的交易,并在世界状态添加状态。在账户创建后,再通过Change pubkey更新L2的公钥信息。
5 基本流程
在明确了账户系统以及状态后,整个L2的打包以及更改世界状态的流程还是比较清晰的:

一切从NewTx开始。通过API,创建好的Transaction添加到Mem Pool。详细逻辑可以查看core/server/src/mempool.rs的add_tx函数。Block Proposer每隔一段时间,查看Mem Pool中的有效交易,并打包。详细逻辑可以查看core/server/src/block_proposer.rs的run_block_proposer_task函数。
区块打包成功后,更新世界状态,详细逻辑可以查看core/server/src/state_keeper.rs的execute_tx_batch。
更新了世界状态后,要将最新的世界状态进行证明,详细逻辑可以查看core/server/src/committer.rs的commit_block函数。
证明通过Eth Sender发送给L1。
6 Plonk证明系统
zkSync采用Plonk零知识证明的算法,证明L2的交易和状态的正确性。Plonk零知识证明的算法,和Groth16算法不一样,是Universal的零知识算法。Plonk算法的技术细节后面会单独写文章详细介绍。zkSync设计了相对独立的Plonk证明系统,示意如下:

Plonk证明系统涉及到三个功能模块:Block Committer,Prover Server以及Prover。这三个模块之间的数据传输通过Storage存储模块。Block Committer将Block信息存入Storage,Prover Server从Storage提取Block并生成证明需要的信息,并再次存入Storage,Prover从存储中查看需要证明的信息,生成零知识证明。
Prover Server和Prover之间的调用关系,示意如下:

详细逻辑可以查看core/server/src/prover_server以及core/prover目录。
7 zkSync电路实现
zkSync在bellman的基础上增加了Plonk零知识证明系统。zkSync的电路设计非常有趣,由于篇幅原因,后面会单独介绍zkSync的电路实现原理。简单的说,zkSync采用Chunk设计,将交易切分为多个Chunk,支持不同的区块大小。看zkSync源代码的小伙伴,在理解电路逻辑前,先理解好Chunk的逻辑。
8 状态确定以及L1智能合约
zkSync的交易可以由Layer1或者Layer2的操作发起。简单的说,zkSync的交易经历三个状态:1/Request 2/ Committed 3/ Verified。只有Verified的操作才是确定性状态。从状态的角度看,交易的流程如下图所示:

某个交易在打包后,会将交易对应的Pub Data信息提交到链上,交易进入Committed状态。在交易对应的区块提交证明后,改交易进入Verified的状态,也就是确定性状态。
L1智能合约提供了commitBlock和verifyBlock接口实现Pub Data信息以及证明信息的提交:

具体的逻辑,感兴趣的小伙伴可以查看contracts/contracts/ZkSync.sol源代码。
总结:
zkSync通过zk Rollup协议,实现了L2的转账。zkSync项目非常完整,是学习L2非常好的参考项目。zkSync采用Plonk零知识证明算法向L1证明状态的正确性。Plonk算法是Universal的零知识证明算法,只需要一次可信设置。zkSync电路设计采用Chunk设计,支持不同的区块大小。
来源:Star Li
比推快讯
更多 >>- 数据:654.12 万枚 IMX 转入 Coinbase Prime,价值约 208 万美元
- 麦通 MSX 创始人 Bruce:美股回调已结束 资金将陆续回流美股
- 美国财政部长现身比特币主题酒吧开幕式,比特币社区视为积极信号
- Camp Network 发布技术白皮书,旨在为万亿美元 IP 经济构建底层基础设施
- Pundi AI 携手 SUPERFORTUNE:可验证 AI 数据与神秘智慧的结合
- 主流加密货币普跌,比特币 24H 下跌 7.28%
- 香港稳定币覆核审裁处:仅允许法币抵押型稳定币,申请者资本门槛 2500 万港币
- 预测市场 YesNoMarket 将于 11 月 24 日上线
- 合作挖矿丢设备索赔诉讼,中国湖南省法院判虚拟货币相关合同无效,损失自担
- Mark Luschini:美股超卖但调整未尽,反弹依赖经济数据
- Matrixport:市场悲观情绪达近十年少见的低位,但引发本轮抛售的宏观压力并未缓解
- 4E:早期巨鲸清仓 1.1 万枚 BTC,机构逆势将 ETF 持仓抬至 40%
- CryptoQuant CEO:持有现货不怕,此时卖出或做空极不明智
- "反 CZ 公开做空 Aster"巨鲸十日内损失 6100 万美元利润,总利润降至 3840 万美元
- 观点:比特币关键支撑位在 82,045 美元
- 瑞典北欧斯安银行:Q1 美债收益率料将达到 3.9%
- 机构:市场正开始将黄金视为对冲美联储“政策失误”的工具
- 日本祭出 21 万亿日元经济刺激计划,通胀救济占比超半数
- “Hyperliquid 上 BTC 最大空头”盈利再破前高,全周期盈利 5891 万美元,近 30 天盈利 3040 万美元,周盈利 1679.7 万美元
- 币安完成 USDC (USDC)于 Sei 网络集成并开放充值、提现业务
- Tom Lee:近期抛售部分源于 1011 事件中受损的做市商
- 独立研究员:6100 亿美元 AI 庞氏骗局崩盘
- 先锋领航,美联储降息幅度或低于华尔街预期
- Bitget 获第 11 届 Benzinga Fintech Awards最佳加密货币交易平台奖项
- 终极空头巨鲸重新下调止盈区至 7.5 万美元,本月已提现 2209 万美元保证金
- 摩根大通:不再预计美联储将在 12 月降息
- Silo Labs 更新 xUSD 脱锚事件处理进展,目前已确认还款约 213 万美元
- 数据:当前加密恐慌贪婪指数为 15,处于极度恐慌状态
- 易理华:现货策略抄底 ETH 依旧未变,看好 ETH/BTC 后续行情
- 达利欧警告:AI 泡沫暂时不会破裂,现在离场还太早
- 数据:61.26 枚 BTC 从 Coinbase 转出,价值约 498 万美元
- 加密总市值下探至 3 万亿美元
- Mike Alfred:有人正通过衍生品试图压低比特币价格并恐吓投资者抛售
- 某鲸鱼向 Hyperliquid 存入 224 万枚 USDC,并以 40 倍杠杆做空 BTC
- Hyperliquid 上最大 BTC 空头单币浮盈 3180 万美元
- MoonPay Ventures 宣布对加密钱包 Zengo Wallet 进行战略投资
- 数据:CTSI 24 小时跌超 29%,DATA 跌幅超 35%
- ZEC 矿工日收益小幅提升,挖矿难度接近历史最高水平
- 花旗银行与 Swift 完成法币与数字货币 PvP 结算流程试点
- RootData:SIGN 将于一周后解锁价值约 377 万美元的代币
- 数据:昨日以太坊现货 ETF 净流出额达 2.6066 亿美元
- Irys 公布代币经济学:8% 将用于空投及未来激励
- 高盛预警:美股暴跌背后暗藏极端对冲恐慌
- VanEck:本轮比特币抛售潮由中期持币者驱动,长期持币者保持稳定
- 中国央行与阿联酋央行启动支付互联与 JISR 多边数字货币桥项目
- 数据:过去 24 小时全网爆仓 8.32 亿美元,多单爆仓 7.13 亿美元,空单爆仓 1.19 亿美元
- Bitwise XRP ETF 上市,美国 XRP 现货 ETF 单日总净流入 1.18 亿美元
- Tom Lee:加密市场去杠杆周期调整或接近尾声
- Re7 Labs 发布 xUSD 脱锚事件更新,已聘请律所推进法律行动和资产追回
- 数据:1999.99 枚 ETH 从 Crypto.com 转入 Deribit,价值约 571 万美元
比推专栏
更多 >>观点
比推热门文章
- 麦通 MSX 创始人 Bruce:美股回调已结束 资金将陆续回流美股
- 美国财政部长现身比特币主题酒吧开幕式,比特币社区视为积极信号
- Camp Network 发布技术白皮书,旨在为万亿美元 IP 经济构建底层基础设施
- Pundi AI 携手 SUPERFORTUNE:可验证 AI 数据与神秘智慧的结合
- 主流加密货币普跌,比特币 24H 下跌 7.28%
- 香港稳定币覆核审裁处:仅允许法币抵押型稳定币,申请者资本门槛 2500 万港币
- 预测市场 YesNoMarket 将于 11 月 24 日上线
- 合作挖矿丢设备索赔诉讼,中国湖南省法院判虚拟货币相关合同无效,损失自担
- Mark Luschini:美股超卖但调整未尽,反弹依赖经济数据
- Matrixport:市场悲观情绪达近十年少见的低位,但引发本轮抛售的宏观压力并未缓解
比推 APP



