zkSync 代码解析
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zkSync 代码解析相关的知识,希望对你有一定的参考价值。
1. 引言
前序博客有:
zkSync相关代码实现见:
- https://github.com/matter-labs/zksync
2. zkSync 基本架构
zkSync的基本组成有:
-
zkSync smart contract:部署在以太坊网络上的Solidity智能合约,用于管理用户balances并验证zkSync network操作的正确性。
-
Prover application:为a worker application,用于创建a proof for an executed block。
Prover application会从Server application中获取有效的jobs,当有新的区块时,Server application将提供a witness(input data to generate a proof),然后Prover application 开始工作。当proof生成后,Prover application会将该proof报告给Server application,Server application再将该proof发布给zkSync智能合约。
Prover application可看成是on-demand worker,当Server application负载很高时,允许有多个Prover applications,当没有交易输入时则没有Prover application。
生成proof是非常消耗资源的工作,因此,运行Prover application的机器应具有现代CPU和大量的RAM。 -
Server application:运行zkSync网络的节点。
Server application的职能主要有:
1)监测智能合约上的onchain operations(如存款)
2)接收交易
3)生成zkSync上的区块
4)为executed blocks发起proof生成申请
5)将数据发布到zkSync smart contract
目前Server application支持两种运行方式:
1)单片式:由一个二进制文件提供所有功能,具体见https://github.com/matter-labs/zksync/tree/master/core/bin/server
。
2)微服务式:
–Core
服务,具体见https://github.com/matter-labs/zksync/tree/master/core/bin/zksync_core
:用于维护交易内存池并提交新的区块。
–API
服务,具体见https://github.com/matter-labs/zksync/tree/master/core/bin/zksync_api
:提供server “front-end”接口,当前支持REST API & JSON RCP HTTP/WS等形式。
–Ethereum Sender
服务,具体见https://github.com/matter-labs/zksync/tree/master/core/bin/zksync_eth_sender
:通过发送相应的Ethereum交易到L1 smart contract来finalize the blocks。
–Witness Generator
服务,具体见https://github.com/matter-labs/zksync/tree/master/core/bin/zksync_witness_generator
:为Prover prove block创建所需的input data,通过私有API server与Prover进行交互。 -
Explorer:zkSync网络explorer。为web application,通过Server API 来接收数据,并以合适的方式呈现在区块链浏览器中。
3. 本地运行zkSync
本地运行zkSync,至少应有:
- 编译zkSync smart contract 并部署到以太坊中。
- 运行zkSync Server application。
- 至少运行一个Prover application,并将其与Server application连接。
参考资料
以上是关于zkSync 代码解析的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段