链眼社区:专注于区块链安全,区块链数据分析, 区块链信息整合,区块链技术服务和区块链技术咨询。

Polygon 的 zkProver 功能概述
扫地僧
2022-10-11 19:39:08

为简单起见,可以将 zkProver 视为由以下四个组件组成;

  • Executor,即主状态机执行器
  • STARK 递归组件
  • CIRCOM 库
  • zk-SNARK Prover

简而言之,zkProver 使用这四个组件来生成可验证的证明。下面的图 5 推测了该过程。

1. Executor

Executor 实际上是 Main SM Executor。它作为输入;交易、新旧状态、Sequencer 的 ChainID 等等。

Executor 也需要

  • PIL,它是多项式列表、寄存器列表
  • ROM,存储与执行有关的指令列表。

因此,有了这些输入,Executor 在 PIL 硬件上执行所有指令并生成提交的多项式;这是状态机周期,或所有状态的列表。它还生成一些公共数据,这些数据构成 zk-SNARK 验证器输入的一部分。

执行器的完整描述可以在主状态机的单独文档中找到。

二. STARK 递归组件

一旦主 SM 执行器将事务和相关数据转换为已提交的多项式,STARK 递归组件将作为输入;

  • 承诺多项式,
  • 常数多项式,
  • 脚本,是指令列表,

为了生成 zk-STARK 证明。

为了促进快速 zk-STARK 证明,STARK 递归组件对每个 zk-proof 使用 Fast Reed-Solomon Interactive Oracle Proofs of Proximity (RS-IOPP),也称为 FRI。

该组件被称为 STARK 递归,因为;

​ (a) 它实际上产生了几个 zk-STARK 证明, ​ (b) 将它们整理成若干 zk-STARK 证明的捆绑包, ​ (c) 并生成每个捆绑包的进一步 zk-STARK 证明, ​ (d) 捆绑包的最终 zk-STARK 证明也经过整理和证明,仅使用一个 zk-STARK 证明。

这样一来,数百个 zk-STARK 证明就可以用一个 zk-STARK 证明来表示和证明。

三. CIRCOM Library

合作伙伴