Zkevm

zkEVM的调研

Posted by Lengzhao Blog on April 19, 2024

ZkEVM

  1. Polygon zkEVM docs
  2. zkEVM Node

zkNode 交互流程 zkEVM

Polygon zkEVM中包含的主要元素有:

1)共识算法 2)zkNode软件 3)zkProver 4)LX-to-LY Bridge 5)Sequencers和Aggregators(需要这2个角色 以达成网络共识) 6)Hermez 2.0网络中的活跃用户,以创建交易

技术文档

  1. Polygon zkEVM PIL技术文档
  2. pil-stark中pil语言介绍

zkEVM Prover

zkEVM证明器是一个软件组件,zkEVM 使用它生成证明,证明在给定一组特定输入的情况下程序的正确执行。

虽然生成证明的过程是资源密集型的,但验证证明所需的时间明显缩短,从而可以通过智能合约进行验证。

在较高层面上,证明者将最后一批和当前状态作为输入,以便计算新状态,以及证明状态转换的计算完整性的证明。

Polygon zkEVM Prover程序中提供了3个RPC服务:

  1. Prover服务:
    1. 调用Prover component来执行输入数据(为a batch of EVM transactions)、计算the resulting state、基于PIL多项式定义及其约束,为该计算生成证明。
    2. 当被Prover服务调用时,Executor component会联合14个状态机来对输入数据进行处理,以生成证明所需的evaluations of the committed polynomials。每个状态机生成各自的computation evidence data,而更复杂的计算则委托给下一级的状态机。
    3. Prover component调用Stark component来生成 Executor状态机所commit多项式的证明。
    4. Prover服务的接口定义在文件zk-prover.proto文件内。
  2. Executor服务:
    1. 调用Executor component来执行输入数据(为a batch of EVM transactions)、计算the resulting state。注意,不同于Prover服务,Executor服务不生成证明。
    2. 提供了一种快速方法,来检查所提议的batch of transactions构建正确,且符合单个batch证明所需的工作量要求。
    3. 当被Executor服务调用时,Executor component仅使用Main状态机,因为此处不需要生成证明,也就不需要committed polynomials。
    4. Executor服务的接口定义在文件executor.proto文件内。
  3. StateDB服务:
    1. 提供了接口来访问the state of the system(a Merkle tree)和存储状态的数据库。
    2. 由executor和prover使用,作为单一状态数据源,可用于获取状态详情,如账号余额。
    3. StateDB服务的接口定义在statedb.proto文件内。

others

make build-docker

现象:i/o timeout

原因:网络问题

解决方法:

  1. vim Dockerfile
  2. ENV GOPROXY=https://goproxy.cn,direct