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连接。

参考资料

[1] zkSync project architecture

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值