Polygon zkEVM Prover

Posted mutourend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Polygon zkEVM Prover相关的知识,希望对你有一定的参考价值。

1. 引言

前序博客有:

Polygon zkEVM Prover开源代码见:

Polygon zkEVM Prover负责:

  • 生成zkEVM proof。

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

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

testvectors/config.json 文件中包含了配置不同Prover可选项的配置参数,最重要的相关参数有:

ParameterDefaultDescription
runProverServertrueEnable Prover GRPC service
runExecutorServertrueEnable Executor server
runStateDBServertrueEnable StateDB (Merkle-tree) GRPC service
runFilefalseExecute the Prover using as input a test file defined in "inputFile" parameter
inputFileinput_executor.jsonTest input file. It must be located in the testvectors folder
outputPathoutputOutput path folder to store the result files. It must be located in the testvectors folder
databaseURLlocalConnection string for the PostgreSQL database used by the StateDB service. If the value is "local" then the service will not use a database and the data will be stored only in memory (no persistence). The PostgreSQL database connection string has the following format: "postgresql://<user>:<password>@<ip>:<port>/<database>". For example: "postgresql://statedb:statedb@127.0.0.1:5432/testdb"
stateDBURLlocalConnection string for the StateDB service. If the value is "local" then the GRPC StateDB service will not be used and local StateDB client will be used instead. The StateDB service connection string has the following format: "<ip>:<port>". For example: "127.0.0.1:50061"

若想运行a proof test,需做如下配置:

  • 1)修改config.json文件中的"runFile"参数为“true”,其它参数必须配置为“false”。
  • 2)将“inputFile”参数指向所需测试的input test data,testvectors/input_executor.json即为一个测试文件。
  • 3)在testvectors文件夹内运行$ ../build/zkProver 来启动Prover。
  • 4)输出的proof文件存储在“outputPath”配置参数指定的文件夹内。

以上是关于Polygon zkEVM Prover的主要内容,如果未能解决你的问题,请参考以下文章

appliedzkp zkevm(11)中的EVM Proof

Polygon zkEVM网络节点

Polygon zkEVM节点代码解析

Polygon zkEVM——Hermez 2.0简介

Polygon zkEVM可验证计算简单状态机示例

Polygon zkEVM公式梳理