ZkEVM
Polygon zkEVM中包含的主要元素有:
1)共识算法 2)zkNode软件 3)zkProver 4)LX-to-LY Bridge 5)Sequencers和Aggregators(需要这2个角色 以达成网络共识) 6)Hermez 2.0网络中的活跃用户,以创建交易
技术文档
zkEVM Prover
zkEVM证明器是一个软件组件,zkEVM 使用它生成证明,证明在给定一组特定输入的情况下程序的正确执行。
虽然生成证明的过程是资源密集型的,但验证证明所需的时间明显缩短,从而可以通过智能合约进行验证。
在较高层面上,证明者将最后一批和当前状态作为输入,以便计算新状态,以及证明状态转换的计算完整性的证明。
Polygon zkEVM Prover程序中提供了3个RPC服务:
- Prover服务:
- 调用Prover component来执行输入数据(为a batch of EVM transactions)、计算the resulting state、基于PIL多项式定义及其约束,为该计算生成证明。
- 当被Prover服务调用时,Executor component会联合14个状态机来对输入数据进行处理,以生成证明所需的evaluations of the committed polynomials。每个状态机生成各自的computation evidence data,而更复杂的计算则委托给下一级的状态机。
- Prover component调用Stark component来生成 Executor状态机所commit多项式的证明。
- Prover服务的接口定义在文件zk-prover.proto文件内。
- Executor服务:
- 调用Executor component来执行输入数据(为a batch of EVM transactions)、计算the resulting state。注意,不同于Prover服务,Executor服务不生成证明。
- 提供了一种快速方法,来检查所提议的batch of transactions构建正确,且符合单个batch证明所需的工作量要求。
- 当被Executor服务调用时,Executor component仅使用Main状态机,因为此处不需要生成证明,也就不需要committed polynomials。
- Executor服务的接口定义在文件executor.proto文件内。
- StateDB服务:
- 提供了接口来访问the state of the system(a Merkle tree)和存储状态的数据库。
- 由executor和prover使用,作为单一状态数据源,可用于获取状态详情,如账号余额。
- StateDB服务的接口定义在statedb.proto文件内。
others
make build-docker
现象:i/o timeout
原因:网络问题
解决方法:
- vim Dockerfile
- ENV GOPROXY=https://goproxy.cn,direct