Polygon zkEVM的pil-stark Fibonacci状态机代码解析

Posted mutourend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Polygon zkEVM的pil-stark Fibonacci状态机代码解析相关的知识,希望对你有一定的参考价值。

1. 引言

前序博客有:

开源代码见:

中的test/sm_fibonacci/Fibonacci状态机,对应的序列为:
1 , 2 , 5 , 29 , ⋯ 1,2,5,29,\\cdots 1,2,5,29,
对应的逻辑为: a i + 2 = a i 2 + a i + 1 2 a_i+2=a_i^2+a_i+1^2 ai+2=ai2+ai+12。需要判定第 2 10 = 1024 2^10=1024 210=1024个元素是否为 74469561660084004 74469561660084004 74469561660084004
将其execution trace表示为:具有寄存器 A = ( A 0 , A 1 , A 2 , … , A 1023 ) \\mathbfA = ( A_0, A_1, A_2, \\dots , A_1023 ) A=(A0,A1,A2,,A1023) B = ( B 0 , B 1 , B 2 , … , B 1023 ) \\mathbfB = ( B_0, B_1, B_ 2, \\dots , B_1023 ) B=(B0,B1,B2,,B1023)的状态机,第 i i i个状态为 ( A i , B i ) (A_i,B_i) (Ai,Bi),初始状态为 A 0 = i n 1 = 1 , B 0 = i n 2 = 2 A_0=in_1=1,B_0=in_2=2 A0=in1=1,B0=in2=2。相应的约束为:

  • 1)Transition constraints: A i + 1 = B i , B i + 1 = A i 2 + B i 2 A_i+1=B_i,B_i+1=A_i^2+B_i^2 Ai+1=Bi,Bi+1=Ai2+Bi2 i = 0 , ⋯   , 1022 i=\\0,\\cdots,1022\\ i=0,,1022
  • 2)Boundary constraints: A 0 = 1 , B 0 = 2 , A 1023 = o u t = 74469561660084004 A_0=1,B_0=2,A_1023=out=74469561660084004 A0=1,B0=2,A1023=out=74469561660084004

为了便于设置STARK的polynomial identities,需额外再引入2个常量寄存器 i s I n i t i a l = ( 1 , 0 , 0 , ⋯   , 0 ) , i s L a s t = ( 0 , 0 , 0 , ⋯   , 1 ) \\mathbfisInitial=(1,0,0,\\cdots,0), \\mathbfisLast=(0,0,0,\\cdots,1) isInitial=(1,0,0,,0),isLast=(0,0,0,,1),将以上transition和boundary约束表示为:( i = 0 , ⋯   , 1022 i=\\0,\\cdots,1022\\ i=0,,1022
( A i + 1 − B i ) ∗ ( 1 − isLast i ) = 0 (A_i+1-B_i)*(1-\\textisLast_i)=0 (Ai+1Bi)(1isLasti)=0
( B i + 1 − ( A i 2 + B i 2 ) ) ∗ ( 1 − isLast i ) = 0 (B_i+1-(A_i^2+B_i^2))*(1-\\textisLast_i)=0 (Bi+1(Ai2+Bi2))(1isLasti)=0
isInitial i ∗ ( A i − i n 1 ) = 0 \\textisInitial_i*(A_i-in_1)=0 isInitiali(Aiin1)=0
isInitial i ∗ ( B i − i n 2 ) = 0 \\textisInitial_i*(B_i-in_2)=0 isInitiali(Biin2)=0
isLast i ∗ ( A i − o u t ) = 0 \\textisLast_i*(A_i-out)=0 isLasti(Aiout)=0

将寄存器 A , B , i s I n i t i a l , i s L a s t \\mathbfA, \\mathbfB, \\mathbfisInitial, \\mathbfisLast A,B,isInitial,isLast 分别插值为多项式 l 2 , l 1 , L 1 , L L A S T l2,l1,L1,LLAST l2,l1,L1,LLAST表示。

序号 A \\mathbfA A l 2 l2 l2多项式) B \\mathbfB B l 1 l1 l1多项式) i s I n i t i a l \\mathbfisInitial isInitial L 1 L1 L1多项式) i s L a s t \\mathbfisLast isLast L L A S T LLAST LLAST多项式)
01210
12500
252900
⋮ \\vdots ⋮ \\vdots 以上是关于Polygon zkEVM的pil-stark Fibonacci状态机代码解析的主要内容,如果未能解决你的问题,请参考以下文章

Polygon zkEVM FFT和多项式evaluate计算的circom约束

Polygon zkEVM中的Merkle tree

Polygon zkEVM Merkle tree的circom约束

Polygon zkEVM中Goldilock域元素circom约束

Polygon zkEVM交易解析

Polygon zkEVM Prover

(c)2006-2024 SYSTEM All Rights Reserved IT常识