FRI的Commit、Query以及FRI Batching内部机制

1. 引言

前序博客见:

  • Reed-Solomon Codes及其与RISC Zero zkVM的关系
  • RISC Zero ZKP协议中的商多项式

FRI用途:

  • 用于证明某vector commitment是(接近)某Reed-Solomon codeword。即证明某low-degree多项式。

FRI工作原理:

  • 将vector commitment迭代“folding”为越来越小的commitments。
  • Queries用于确保以上迭代“folding”正确。

Reed-Solomon Codes及其与RISC Zero zkVM的关系博客中指出:RISC Zero中的Reed-Solomon Codes处理流程为:

  • 1)Step 1 生成trace columns:在RISC Zero zkVM中执行某二进制文件,并记录其execution trace。
  • 2)Step 2 将trace columns转换为trace blocks:采用Reed-Solomon Encoding对execution trace中的每列进行编码。
  • 3)Step 3 对trace blocks之上的constraints进行evaluate,然后计算quotients:对trace blocks做STARK数学运算。
  • 4)Step 4 应用FRI Protocol:让Verifier信服该结果是a valid Reed-Solomon codeword。
    FRI的Commit、Query以及FRI Batching内部机制_第1张图片

本文重点关注Step 4中的FRI协议。

本文内容框架为:

  • Merkle tree即vector commitment
  • 证明Merkle commitment,等价为证明多项式承诺:
    • 直观角度
    • FRI动机
  • FRI机制:
    • Commit阶段:FRI Folding等价为"Split & Mix"。
    • Query阶段

2. 证明Merkle commitment,等价为证明多项式承诺

对vector [Z, K, S, U, M, M, I, T]的承诺,可 以Merkle tree表示为:
FRI的Commit、Query以及FRI Batching内部机制_第2张图片
其中:

  • 该Merkle tree各叶子节点为待承诺向量中的各元素。
  • 该Merkel tree的Merkle root即为该向量的承诺值。

也可从多项式承诺的角度来看:
FRI的Commit、Query以及FRI Batching内部机制_第3张图片
其中:

  • 该Merkle tree可叶子节点可看成是 f f f的evaluations值,其中 f f f为某多项式,满足 f ( g 0 ) = Z , f ( g 1 ) = K , f ( g 2 ) = S , f ( g 3 ) = U , f ( g 4 ) = M , f ( g 5 ) = M , f ( g 6 ) = I , f ( g 7 ) = T f(g^0)=Z,f(g^1)=K, f(g^2)=S,f(g^3)=U,f(g^4)=M,f(g^5)=M,f(g^6)=I,f(g^7)=T f(g0)=Z,f(g1)=K,f(g2)=S,f(g3)=U,f(g4)=M,f(g5)=M,f(g6)=I,f(g7)=T

如何让持怀疑态度的Verifier信服以上承诺在的正确性呢?有2种方案:

  • 1)直观方案:
    • 1.1)Prover将所有数据直接都发送给Verifier:Prover所需发送给Verifier数据量太大了。
    • 1.2)Verifier接收到所有数据后,自己插值来验证:对Verifier来说,插值运算太昂贵了。
  • 2)高效方案为:使用FRI协议。

3. FRI机制

FRI基本结构示意为:
FRI的Commit、Query以及FRI Batching内部机制_第4张图片
FRI基本流程为:

  • 1)首先:Prover发送 f 0 f_0 f0的Merkle root。
  • 2)Commit Round 1:
    • Verifier发送随机值 r 1 r_1 r1
    • Prover split f 0 f_0 f0,然后使用 r 1 r_1 r1 mix 获得 f 1 f_1 f1
    • Prover发送 f 1 f_1 f1的Merkle root。
  • 3)Commi Round 2:
    • Verifier发送随机值 r 2 r_2 r2
    • Prover split f 1 f_1 f1,然后使用 r 2 r_2 r2 mix 获得 f 2 f_2 f2
    • Prover发送 f 2 f_2 f2的Merkle root。

其中:

  • 每轮多项式 f i f_i fi的系数个数,均为前一轮 f i − 1 f_{i-1} fi1多项式系数个数的一半。
  • 每轮的Merkle tree的叶子节点个数,均为前一轮Merkle tree叶子节点个数的一半。

3.1 FRI机制之Split

FRI的Commit、Query以及FRI Batching内部机制_第5张图片

3.2 FRI机制之Mix

FRI的Commit、Query以及FRI Batching内部机制_第6张图片
FRI的Commit、Query以及FRI Batching内部机制_第7张图片

3.3 FRI机制之commitment

FRI的Commit、Query以及FRI Batching内部机制_第8张图片
除最后一轮为plaintext commitment之外,之前所有轮均为Merkle tree commitments。

假设28为所选域的32-th root of unity,则有:
FRI的Commit、Query以及FRI Batching内部机制_第9张图片

3.4 FRI机制之Query

FRI机制中的queries用作随机挑战值。

blow-up factor为4,则意味着query有约3/4的概率可抓到作弊的Prover。

粗略来看:

  • 可认为:1次query对应约2 bit security。【实际安全性分析要复杂得多。】

FRI的Commit、Query以及FRI Batching内部机制_第10张图片
FRI的Commit、Query以及FRI Batching内部机制_第11张图片

4. FRI Batching机制

当需对多个多项式应用FRI协议时,可使用FRI Batching。
FRI的Commit、Query以及FRI Batching内部机制_第12张图片
FRI Batching时,使用上面的mix操作,来将多个多项式压缩为单个多项式。
当前FRI Batching主要有2种方式:

  • 1)Affine batching: g b a t c h e d = g 0 + r 1 ⋅ g 1 + ⋯ + r n ⋅ g n g_{batched}=g_0+r_1\cdot g_1+\cdots +r_n\cdot g_n gbatched=g0+r1g1++rngn。即选择多个不同的随机值来压缩。【StarkWare的ethSTARK采用的是Affine batching方式。】
  • 2)Parametric batching: g b a t c h e d = g 0 + r 1 ⋅ g 1 + ⋯ + r n ⋅ g n g_{batched}=g_0+r^1\cdot g_1+\cdots +r^n\cdot g_n gbatched=g0+r1g1++rngn。即选择单个随机值,但使用该随机值的不同powers来压缩。【RISC Zero和Polygon Hermez均采用的是Parametric batching方式。】

参考资料

[1] 2023年4月 ZK Summit 9上分享视频 FRI Mechanics: Folding, Committing, and Batching

RISC Zero系列博客

  • RISC0:Towards a Unified Compilation Framework for Zero Knowledge
  • Risc Zero ZKVM:zk-STARKs + RISC-V
  • 2023年 ZK Hack以及ZK Summit 亮点记
  • RISC Zero zkVM 白皮书
  • Risc0:使用Continunations来证明任意EVM交易
  • Zeth:首个Type 0 zkEVM
  • RISC Zero项目简介
  • RISC Zero zkVM性能指标
  • Continuations:扩展RISC Zero zkVM支持(无限)大计算
  • A summary on the FRI low degree test前2页导读
  • Reed-Solomon Codes及其与RISC Zero zkVM的关系
  • RISC Zero zkVM架构
  • RISC-V与RISC Zero zkVM的关系
  • 有限域的Fast Multiplication和Modular Reduction算法实现
  • RISC Zero的Bonsai证明服务
  • RISC Zero ZKP协议中的商多项式

你可能感兴趣的:(zkVM,zkVM)