Nova 和 SuperNova:无需通用电路的通用机器执行证明系统

news2024/9/23 3:13:31

1. 引言

前序博客有:

  • Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记
  • SuperNova:为多指令虚拟机执行提供递归证明
  • 基于Nova/SuperNova的zkVM
  • Sangria:PLONK + Folding
  • 2023年 ZK Hack以及ZK Summit 亮点记
  • Sangria:类似Nova folding scheme的relaxed PLONK for PLONK

主要参考资料:

  • 2023年4月视频 ZK Study Club: Supernova (Srinath Setty - MS Research)
  • slides ZK Study Club: Supernova (Srinath Setty - MS Research)

Nova和SuperNova作者之一Srinath Setty在 ZK Study Club: Supernova (Srinath Setty - MS Research)中介绍了:

  • 何为SuperNova
  • SuperNova适于的场景
  • SuperNova的工作原理

Nova代码实现见:

  • https://github.com/Microsoft/Nova(Rust)

2. 何为SuperNova?

何为SuperNova?

  • 1)是一种证明系统:Prover将proof π \pi π发送给Verifier:
    在这里插入图片描述
  • 2)面向的是半结构化计算的证明:
    在这里插入图片描述
    实际半结构化计算可用于如下场景:
    • EVM:证明EVM执行
    • RISC-V:证明RISC-V CPU执行
    • WebAssembly:证明WebAssembly CPU执行
    • VDF
    • zkML
    • zkBridge
    • PhotoProof
      在这里插入图片描述

SuperNova的主要特点为:

  • 1)SuperNova的Prover要比general zkSNARK Prover 更便宜。
  • 2)SuperNova的Prover的per-step cost 与 所执行指令的电路size 成比例。如虚拟机有数十条指令,每一步仅执行一条指令,Prover在该step的开销 仅与 所执行指令的电路size 成比例,而与其他如等无关。
  • 3)基于folding schemes构建:将具有相同结构的2个电路(各自有不同的input),”合并“为一个电路folded instance,而不是证明这2个电路instance的satisfiability。folding是不昂贵的,在证明最终的folded instance之前,可以根据需要做任意次合并——这也是节约Prover开销的关键所在——”只合并,不证明“。
    在这里插入图片描述

3. SuperNova适于的场景

当前使用的succinct arguments的演变过程为:

  • 1)基于Linear PCPs + Linear-only encodings的方案,代表有:【具有shortest proofs,需要Per-circuit trusted setup】
    • 1.1)quadratic Prover(最坏情况):
      • Pepper [SBW11, SMBW12]
      • Ginger [SVP+12]
    • 1.2)quasilinear Prover(QAP-based linear PCP):
      • [GGPR13]
      • Zaatar [SBV+13], [BCIOP13]
      • Pinocchio [PGHR13]
      • [Groth16]
  • 2)基于Polynomial IOPs + Polynomial commitment schemes的方案,代表有:【Universal/untrusted setup,具体取决于所采用的多项式承诺方案。具有可定制化的电路表示。】
    • 2.1)non-succinct Verifier(最坏情况):【因Verifier需读取circuit description】
      • [CMT12] [VSBW13] [T13]
      • Aurora [BCR+18]
      • vSQL [ZGK+17]
      • Hyrax [WTs+18]
      • Stark [BBHR18]
    • 2.2)succinct Verifier(computation commitments/holography):【Verifier仅需电路本身的succinct encoding】
      • 2.2.1)基于Multilinear多项式的方案有:
        • Spartan [S19]
        • Quarks [SL20]
        • HyperPlonk [CCBZ23]
        • SuperSpartan [STW23——Customizable constraint systems for succinct arguments]
      • 2.2.2)基于单变量多项式的方案有:
        • Sonic [MBKM19]
        • Plonk [GWC19]
        • Marlin [CHM+19]
        • SuperMarlin [STW23——Customizable constraint systems for succinct arguments]
  • 3)基于Folding schemes的方案,代表有:【针对incremental circuits,具有最快的Prover。且易于对Prover进行并行化加速。同时具有上面”基于Polynomial IOPs + Polynomial commitment schemes的方案“ 的所有优势。】
    • 3.1)(S)NARK recursion:
      • [BCTV14]
      • Halo [BGH19] [BCMS20] [BCL+20] [BDFG20]
    • 3.2)(S)NARK-less recursion:
      • Nova [KST21]
      • SuperNova [KS22]
      • Sangria:又名PlonkNova [M23]
      • HyperNova [KS23——HyperNova: Recursive arguments for customizable constraint systems]

在这里插入图片描述
上图中红色标识的S均标识Srinath Setty为作者之一。

4. SuperNova的工作原理

SuperNova为:

  • 将Nova推广至半结构化电路(或半结构化计算)。

最终目标是:

  • 为结构化计算构建fast zkSNARKs方案。
  • 证明:基于初始输入 z 0 z_0 z0,运行某non-deterministic computation C C C n n n次,最终结果为 z n z_n zn
    所谓结构化计算,是指可将某计算分解为多个steps。使得存在circuit C C C,初始输入为 z 0 z_0 z0,每个step具有non-deterministic inputs W i W_i Wi,同时每个step还将前一step的输出作为输入,重复该step n n n次,最终结果为 z n z_n zn
    在这里插入图片描述

实际应用的场景有:

  • 1)VDF: C C C为某delay函数(如MinRoot,计算用时为non-trivial sequential time)的一次或多次调用。
  • 2)zkVM: C C C为某VM(如EVM/Wasm/LLVM)的某个step,或某CPU(如RISC-V)的某个step。
  • 3)zkBridge: C C C为根据某链的共识规则来验证state。
  • 4)zkML: C C C为ML模型上的某layer。
  • 5)PhotoProof: C C C为对某图片的特定转换(如模糊、裁剪等)。
  • 6)Public key directory: C C C检查某directory在每个epoch是否为append-only。WhatsApp近期声称采取该技术解决端到端加密中的key transparency 问题:Deploying key transparency at WhatsApp。
  • 7)本文场景:用于半结构化计算,其中每个step为执行 { F 1 , F 2 , ⋯   , F l } \{F_1,F_2,\cdots,F_l\} {F1,F2,,Fl}中的某个函数。即每个step不再局限于固定相同的circuit,每个step可为预定义列表中某个可能的circuit。
    整个执行是顺序执行的,但proof生成过程可并行化(如使用binary tree结构)。本文将忽略binary tree的优化,重点关注顺序执行的部分。

4.1 结构化计算证明的直观方案

直观方案为:将 C C C n n n次调用展开到单一电路中,并以某zkSNARK来证明。
这样会构建一个巨大的电路:以初始输入 z 0 z_0 z0和所有的non-deterministic inputs调用所有的 C C C,输出为output z n z_n zn
在这里插入图片描述
直观方案的缺陷为:

  • Prover需要巨大的内存: Ω ( n ⋅ ∣ C ∣ ) \Omega(n\cdot |C|) Ω(nC)
  • 难于对proof生成过程进行并行化或分发加速。
  • Verifier的验证时长可能会依赖 n n n
  • 相比于普通zkSNARK方案,并无法提供更快的Prover。

4.2 结构化证明的Valiant方案[Val08, BCTV14]——Incrementally Verifiable Computation

2008年,[Val08]提出了Incrementally Verifiable Computation(IVC)方案,不同于直观方案中直接证明最终计算结果,在IVC中,每个step不仅证明 C C C的调用,同时还在每个step的电路中添加一个Verifier——输入为前一step的输出 z i − 1 z_{i-1} zi1 和 proof π i − 1 \pi_{i-1} πi1,输出为当前step执行正确的结果 z i z_i zi 以及 对前一step proof验证正确 且 当前step执行正确 的proof π i \pi_i πi
在这里插入图片描述

2019年[BGH19, BCMS20]中,将上述方案进一步衍化为:【将SANRK Verifier编码集成在Circuit中会引入额外的开销,因此Halo论文中改进为:采用累加机制,无需在每个step Circuit中集成完整的SNARK Verifier,可将SNARK中某些特定的昂贵的step推迟验证——累加为 U i U_i Ui。】
在这里插入图片描述
每个step:

  • Verifier V ′ V' V仅验证部分proof π i − 1 \pi_{i-1} πi1
  • 更新accumulator U i U_{i} Ui

这种基于SNARK的IVC方案[BCTV14, BGH19, BCMS20],存在的缺陷为:

  • 需要为 C C C的每次调用生成SNARK,因此最终的Prover速度 无法超过 所使用的SNARK方案的Prover速度。
  • Verifier circuit仍相当大(大于 2 18 2^{18} 218个乘法门),引入大量的递归开销、

4.3 结构化证明的Nova方案

Nova方案避免了上述SNARK方案以及(non-succinct)arguments of knowledge方案的缺陷。

Nova的关键点为:

  • 1)使用Non-interactive folding schemes 来实现 IVC。
  • 2)对NP,存在a public coin, one-round folding scheme。
    • 因在RO模式下可使其Non-interactive,在plain模式下,可对Non-interactive做启发式版本实现。

最终Nova的性能为:

  • Nova Prover的开销要比通用SNARK方案便宜很多:如PLONK中需要22+个MSM运算以及一些FFT运算,而Nova中仅需要2个size为 O ( ∣ C ∣ ) O(|C|) O(C)的MSM运算(与circuit size成比例)。
  • Nova的缺陷为其proof size为 O ( ∣ C ∣ ) O(|C|) O(C)(与circuit size成比例),不过可采用通用SNARK方案来压缩proof size。

4.3.1 Nova的基石——Folding schemes

假设Prover和Verifier具有某circuit C C C,且具有2个待check的claims:
在这里插入图片描述
Folding scheme是以原始的2个instance(分别具有witness w 1 , w 2 w_1,w_2 w1,w2 和 public io x 1 , x 2 x_1,x_2 x1,x2)为输入,将其合并为一个folded output instance(具有新的witness w w w 和 public io x x x):
在这里插入图片描述
folding scheme应满足如下属性:

  • 1)Completeness:若原始的2个instance时satisfiable的,则folding合并之后的folded output instance也是satisfiable的。
  • 2)Knowledge soundness:若Prover知道folded output instance的witness w w w,则其必然知道原始的2个instance的witness w 1 , w 2 w_1,w_2 w1,w2
  • 3)Succinct:Verifier的验证开销 应小于 直接检查2个原始instance的开销。
  • 4)ZK:除输入输出instance之外,整个交互过程不泄露其它信息。

事实上,zkSNARKs trivially提供了一种folding scheme实现:【如之前图片中的Halo、[BCMS20]等accumulation方案】

  • 即先证明第一个instance C ( w 1 , x 1 ) = 1 C(w_1,x_1)=1 C(w1,x1)=1
  • 然后再证明第一个instance C ( w 2 , x 2 ) = 1 C(w_2,x_2)=1 C(w2,x2)=1
    在这里插入图片描述

不过Nova的目的是设计一种无需SNARKs甚至non-succinct NARKs的folding scheme。

4.3.1.1 Nova采用R1CS电路表示[GGPR13]

R1CS电路表示首次在[GGPR13]论文中含蓄提出。其要素主要为:

  • 电路描述:矩阵 A 、 B 、 C A、B、C ABC
  • Public input: x x x
  • witness: W W W
  • 电路所满足的relation:即有向量 Z = ( W , x , 1 ) Z=(W, x, 1) Z=(W,x,1),满足:【其中 ∘ \circ 表示Hadamard product运算,详细可参看rank-1 constraint system R1CS。】
    在这里插入图片描述
    社区传说或观点:”R1CS时代已终结?“
  • 1)PlonkNova(”Sangria“ [M23]):可将Nova扩展至degree为2的Plonk电路表示。详细可参看博客:Sangria:类似Nova folding scheme的relaxed PLONK for PLONK。
  • 2)[STW23——Customizable constraint systems for succinct arguments]中引入了CCS(Customizable Constraint System):在不引入额外开销overhead的情况下,为R1CS、PLONK、AIR电路的通用表示。
  • 3)[KS23——HyperNova: Recursive arguments for customizable constraint systems]:将Nova扩展至CCS(Customizable Constraint System),从而也就扩展至了Plonk电路表示。

4.3.1.2 对R1CS Instance的fold尝试

引入随机值 r r r,做random linear combination:
在这里插入图片描述

不过,令 Z i = ( W i , x i , 1 ) Z_i=(W_i, x_i,1) Zi=(Wi,xi,1),且 Z = Z 1 + r ⋅ Z 2 Z=Z_1+r\cdot Z_2 Z=Z1+rZ2,这样直接的random linear combination之后,有:
A Z ∘ B Z ≠ C Z AZ\circ BZ\neq CZ AZBZ=CZ
因:
C Z = A Z 1 ∘ B Z 1 + r ⋅ A Z 2 ∘ B Z 2 CZ = AZ_1\circ B Z_1 + r\cdot AZ_2\circ BZ_2 CZ=AZ1BZ1+rAZ2BZ2
A Z ∘ B Z = A Z 1 ∘ B Z 1 + r 2 ⋅ A Z 2 ∘ B Z 2 + r ⋅ ( A Z 1 ∘ B Z 2 + A Z 2 ∘ B Z 1 ) AZ\circ BZ = AZ_1\circ B Z_1 + r^2\cdot AZ_2\circ BZ_2 + r\cdot (AZ_1\circ BZ_2 + AZ_2\circ BZ_1) AZBZ=AZ1BZ1+r2AZ2BZ2+r(AZ1BZ2+AZ2BZ1)

4.3.1.3 Relaxed R1CS:为folding引入的修正版R1CS

在Relaxed R1CS中,额外引入了:

  • 一个error vector E E E:用于抵消交叉项 r ⋅ ( A Z 1 ∘ B Z 2 + A Z 2 ∘ B Z 1 ) r\cdot (AZ_1\circ BZ_2 + AZ_2\circ BZ_1) r(AZ1BZ2+AZ2BZ1)。【注意error向量 E E E的长度等于 Z Z Z向量的长度,即 ∣ E ∣ = O ( ∣ W ∣ ) |E|=O(|W|) E=O(W),因此Verifier为not succinct的。】
  • 一个scalar u u u:用于解决 r ⋅ A Z 2 ∘ B Z 2 r\cdot AZ_2\circ BZ_2 rAZ2BZ2 r 2 ⋅ A Z 2 ∘ B Z 2 r^2\cdot AZ_2\circ BZ_2 r2AZ2BZ2 之间差的 r r r乘项。

E E E为零向量, u u u为scalar零值时,Relaxed R1CS等价为通用R1CS。

向量 Z Z Z变为 Z = ( W , x , u ) Z=(W,x,u) Z=(W,x,u),使得满足:
在这里插入图片描述

4.3.1.4 针对Relaxed R1CS的Folding Scheme(有问题版本)

认为 error vector E E E 和 scalar u u u 均与特定待证明的电路关联,将二者作为公开信息,对Prover和Verifier均已知。
针对Relaxed R1CS的Folding Scheme设计为:
在这里插入图片描述
基本流程为:【注意, A , B , C , E 1 , u 1 , x 1 , E 2 , u 2 , x 2 A,B,C,E_1,u_1,x_1,E_2,u_2,x_2 A,B,C,E1,u1,x1,E2,u2,x2均为公开信息,对Prover和Verifier都已知。】

  • Prover:计算交叉项 T = A Z 1 ∘ B Z 2 + A Z 2 ∘ B Z 1 − u 1 ⋅ C Z 2 − u 2 C Z 1 T = AZ_1\circ BZ_2 + AZ_2\circ BZ_1 - u_1\cdot CZ_2-u_2CZ_1 T=AZ1BZ2+AZ2BZ1u1CZ2u2CZ1
    Prover将 T T T发送给Verifier。
  • Verifier:发送随机challenge值 r r r
  • Prover:fold W = W 1 + r ⋅ W 2 W=W_1+r\cdot W_2 W=W1+rW2,fold E = E 1 + r ⋅ T + r 2 ⋅ E 2 E=E_1+r\cdot T+r^2\cdot E_2 E=E1+rT+r2E2
  • 最终Prover和Verifier获得了单个folded instance,其witness为 W W W,公开信息为 ( A , B , C , E , u , x ) (A,B,C,E,u,x) (A,B,C,E,u,x)
    但是,该设计存在2个问题:
    • 1)Verifier无法enforce约束 Prover是否正确fold了 W W W。即无法保证completeness。
    • 2)error向量 E E E的长度等于 Z Z Z向量的长度,即 ∣ E ∣ = O ( ∣ W ∣ ) |E|=O(|W|) E=O(W),因此Verifier为not succinct的。

4.3.1.5 针对Relaxed R1CS的Folding Scheme(借助commitment同态属性的完美版)

认为 error vector E E E 和 scalar u u u 均与特定待证明的电路关联, E E E作为witness,将 u u u E ˉ \bar{E} Eˉ(error向量 E E E的承诺值)、 W ˉ \bar{W} Wˉ(witness W W W的承诺值)作为公开信息,对Prover和Verifier均已知。

针对Relaxed R1CS的Folding Scheme(借助commitment同态属性的完美版)设计为:
在这里插入图片描述
其中所采用的承诺方案应具有加法同态属性,如Pederson承诺等。
该设计方案:

  • 同时具备completeness属性和knowledge soundness属性。
  • 为succinct的:因Verifier仅需对多项式承诺值进行folding。

4.3.2 Nova的IVC方案实现

详情见Nova论文 5.1节内容,针对的IVC场景为:
初始输入 z 0 z_0 z0,运行 n n n F F F函数,输出为 z n z_n zn。即 z n = F ( n ) ( z 0 ) z_n=F^{(n)}(z_0) zn=F(n)(z0)

在这里插入图片描述
上图中NIFS表示Non-interactive Folding Scheme。

与基于SANRK的IVC方案类似,Prover采用augmented函数 F ′ F' F,其中每个step i i i包含:

  • 当前step对 F ′ F' F函数的调用:对应committed relaxed R1CS instance u i u_i ui,其中包含了 z i z_i zi F ′ F' F用于计算 z i + 1 = F ( z i ) z_{i+1}=F(z_i) zi+1=F(zi)
  • 之前step的 F ′ F' F函数的调用:对应committed relaxed R1CS instance U i U_i Ui,表示之前的 1 , ⋯   , i − 1 1,\cdots, i-1 1,,i1 F ′ F' F调用的正确执行。

F ′ F' F中包含2个任务:

  • 1)执行当前step的增量计算:即instance u i u_i ui中包含了 z i z_i zi F ′ F' F用于计算 z i + 1 = F ( z i ) z_{i+1}=F(z_i) zi+1=F(zi)
  • 2)触发folding scheme的Verifier:将committed relaxed R1CS instance u i u_i ui U i U_i Ui合并一个instance U i + 1 U_{i+1} Ui+1

IVC Prover:

  • 计算新的instance u i + 1 u_{i+1} ui+1:以保证第 i + 1 i+1 i+1次调用 F ′ F' F的正确执行,从而确保 z i + 1 = F ( z i ) z_{i+1}=F(z_i) zi+1=F(zi) U i + 1 U_{i+1} Ui+1 u i u_i ui U i U_i Ui的folding结果。
    此时:
    • U i + 1 U_{i+1} Ui+1:表示第 1 , ⋯   , i 1,\cdots,i 1,,i次调用 F ′ F' F的正确执行。将 F ′ F' F在step i i i中输出的instance U i + 1 U_{i+1} Ui+1 称为running instance。
    • u i + 1 u_{i+1} ui+1:表示第 i + 1 i+1 i+1次调用 F ′ F' F的正确执行。instance u i u_i ui中包含了 z i z_i zi F ′ F' F用于计算 z i + 1 = F ( z i ) z_{i+1}=F(z_i) zi+1=F(zi)

简化表示为:
在这里插入图片描述
在这里插入图片描述
与Halo的IVC方案类似,只是其中:

  • V V V:为non-interactive folding scheme的Verifier,而不是accumulator。
    具有最低的recursion开销(即Verifier circuit size):约1万个gate。
  • u i u_i ui:为previous step的witness的commitment承诺值。对应step instance。
  • U i U_i Ui:为”running witness“ 和 "running error-term"的commitment承诺值。对应running instance。

相应的Recursive proof为: ( u n , U n ) (u_n, U_n) (un,Un) + 相应的witness,由2部分组成:

  • 1)最后一个step的2个承诺值 ( u n , U n ) (u_n, U_n) (un,Un),分别对应step instance和running instance。
  • 2)对应最后一个step的witness ( w n , W n ) (w_n,W_n) (wn,Wn),分别对应step instance的witness和running instance的witness。
    该witness与step size呈线性关系。
    在这里插入图片描述
    Nova再次将step instance和running instance再fold为一个:
  • ( U , W ) (\mathbf{U,W}) (U,W):其中 U = ( W ˉ , E ˉ , u , x ) , W = ( W , E ) \mathbf{U}=(\bar{W},\bar{E},u,x), \mathbf{W}=(W,E) U=(Wˉ,Eˉ,u,x),W=(W,E)

这样可将Recursive proof size减半,但proof size仍为 O ( ∣ C ∣ ) O(|C|) O(C)个field elements。

不过,直观方案是:

  • 可引入某zkSNARK方案来证明knowledge of satisfying ( U , W ) (\mathbf{U,W}) (U,W),从而可提供额外的succinctness和zero-knowledge属性。但是相应的证明开销将是昂贵的。

针对:

  • π = ( U , W ) \pi=(\mathbf{U,W}) π=(U,W):其中 U = ( W ˉ , E ˉ , u , x ) , W = ( W , E ) \mathbf{U}=(\bar{W},\bar{E},u,x), \mathbf{W}=(W,E) U=(Wˉ,Eˉ,u,x),W=(W,E)

Nova的压缩proof size的方案为:

  • 1)将 ( W ˉ , E ˉ ) (\bar{W},\bar{E}) (Wˉ,Eˉ)看成是multilinear多项式的承诺值。
  • 2)使用基于multilinear多项式的SNARK方案,如Nova中使用Spartan [S19]来证明,对于所承诺的多项式,如下R1CS关系成立:
    A ⋅ z ∘ B ⋅ z = u ⋅ C ⋅ z + E A\cdot z\circ B\cdot z = u\cdot C\cdot z + E AzBz=uCz+E,其中 Z = ( W , x , u ) Z=(W,x,u) Z=(W,x,u)

从而可将proof size由 O ( ∣ C ∣ ) O(|C|) O(C)个field elements,reduce为, O ( log ⁡ ∣ C ∣ ) O(\log{|C|}) O(logC)个group elements,从而实现了指数级的压缩改进。
也可将 ( W ˉ , E ˉ ) (\bar{W},\bar{E}) (Wˉ,Eˉ)看成是向量承诺值,也可使用其它证明系统(如Plonk、Marlin等等)。

4.4 使用Nova来证明机器执行

在这里插入图片描述
当将Nova用于证明机器执行时:

  • C C C中编码了VM的某个step,该step可执行所支持的任意指令:
    • ADD、MUL、KECCAK256、SLOAD、SSTORE、ECADD、ECMUL、ECPAIRING等等。
  • 这样的缺陷之一是, C C Csize与所支持的指令数呈比例: ∣ C ∣ ≥ ∣ C A D D ∣ + ∣ C M U L ∣ + ∣ C K E C C A K 256 + ∣ C S L O A D ∣ + ⋯ |C|\geq |C_{ADD}|+|C_{MUL}|+|C_{KECCAK256}+|C_{SLOAD}|+\cdots CCADD+CMUL+CKECCAK256+CSLOAD+

为证明某个step,相应Prover的开销为:

  • 至少 O ∣ C ∣ O|C| OC次crypto运算

为此,要求 C C C尽可能小,即实现minimal VM,但是让其尽可能小无法解决实际应用需要,因为某些实际程序,过小的VM意味着需增加递归调用次数。

4.5 使用SuperNova来证明机器执行

4.5.1 Non-uniform IVC

已知:

  • l + 1 l+1 l+1non-deterministic函数: C 1 , C 2 , ⋯   , C l C_1,C_2,\cdots,C_l C1,C2,,Cl ϕ \phi ϕ。其中 ϕ \phi ϕ函数用于帮助选择IVC中每个step所执行的指令。
  • 初始输入值 z 0 z_0 z0

证明:

  • z n z_n zn为运行 C j C_j Cj n n n次的结果,其中在step i i i,有 j = ϕ ( w i − 1 , z i − 1 ) j=\phi(w_{i-1},z_{i-1}) j=ϕ(wi1,zi1)。【即 ϕ \phi ϕ函数会将witness w i − 1 w_{i-1} wi1和input z i − 1 z_{i-1} zi1,映射为 1 1 1 l l l之间的某个值。】

在这里插入图片描述

4.5.2 将Nova看成是单个指令的Non-uniform IVC

将Nova看成是单个指令的Non-uniform IVC:【即 ϕ \phi ϕ函数确定性的返回1,可忽略。】
在这里插入图片描述

4.5.3 将SuperNova看成是对多个指令的Non-uniform IVC

将SuperNova看成是对多个指令的Non-uniform IVC,其简化版表示为:
在这里插入图片描述
其中:

  • p c i pc_i pci为第 i i i个step所执行的函数的index,其结果值为 1 1 1 l l l中某个值。

”将SuperNova看成是对多个指令的Non-uniform IVC“ 与 ”将Nova看成是单个指令的Non-uniform IVC“ 的关键不同之处在于:

  • non-interactive folding scheme中的Verifier N I F S . V NIFS.V NIFS.V
    • 从多个Running instance选中一个 U i , p c i U_{i,pc_i} Ui,pci u i u_i ui合并,即只更新一个running instance。

”将SuperNova看成是对多个指令的Non-uniform IVC“时,每个step所执行的指令可能不同,具体在某个step执行哪个指令由 φ \varphi φ函数以及 witness w i − 1 w_{i-1} wi1和input z i − 1 z_{i-1} zi1 共同决定。

4.5.3 SuperNova性能对比

在这里插入图片描述

5. 小结

SuperNova为一种新的证明系统,其具有fast prover和small proof:

  • 提供了”a la carte(点菜)“ cost profile:仅pay for what is executed。
  • 引入了folding scheme等新技术
  • 通过Spartan利用了如linear-time sum-checks等最佳技术。

相比同类方案,SuperNova具有诸多优势,为构建基于proof的trustless service提供了新的选型。

HyperNova:

  • 支持对customizable constraint system(CCS)的证明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何把多个pdf合并成一个pdf?常见渠道一览

PDF是一种非常常见的文件格式,它通常用于文档的传输和共享。在日常工作中,我们可能需要将多个PDF文件合并成一个文件以便于管理和浏览。这篇文章将会介绍如何使用在线工具和桌面应用程序来合并PDF文件。 PDF转换器:常用的PDF处理软件&#xf…

Language Models as Knowledge Embeddings:语言模型用作知识嵌入 IJCAI 2022

1.相关工作 1)基于结构的知识嵌入 进一步分成基于翻译的模型和基于语义匹配的模型 基于翻译的模型采用基于距离的评分函数,TransE把实体和关系嵌入到一个维度为d的共享向量空间中;TransH,TransR,RotatE. 语义匹配模型采用基于相似性的评分函…

【Unity】简单的边缘高亮

【Unity】简单的边缘高亮 工程文件下载地址 全部文件 使用方法 方法功能On()打开单帧高亮显示On(Color color)打开单帧高亮显示FlashingParams(Color color1, Color color2, float freq)闪烁的参数设置FlashingOn打开闪烁FlashingOn(Color color1, Color color2)从颜色1切换到…

Python实战基础16-模块

Python中的模块 Python提供了强大的模块支持,主要体现为不仅在python标注库中包含了大量的模块(称为标准模块),而且还有很多第三方模块,另外开发者自己也可以开发自定义模块。 说的通俗点:模块就好比是工具…

ATA-L系列水声功率放大器-宽频带-大功率

水声功率放大器是一种专门用于水声信号放大的电子设备。水声功率放大器在水声通信中具有重要的作用,它可以将微弱的水声信号放大至足够强度,以提高信噪比和传输距离;同时,还可以进行信号处理和优化,以及温度控制等功能…

计算机毕业论文内容参考|基于java的电子产品垂直电商平台的设计与实现

文章目录 导文文章重点摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍导文 计算机毕业论文内容参考|基于java的电子产品垂直电商平台的设计与实现 文章重点 摘要 本文基于Java技术,设计并实现了一个电子产品垂直电商平台。该平台主要针对电子产品市场,提…

ESP32-C2系列开发板

C2是一个芯片采用4毫米x 4毫米封装,与272 kB内存。它运行框架,例如ESP-Jumpstart和ESP造雨者,同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统,受到了全球用户的信赖。它由支持Espressif以及所有…

充电桩测试设备TK4800充电机(桩)现校仪检定装置

TK4800是一套专用于检定电动汽车非车载充电机现场校验仪和电动汽车交流充电桩现场校验仪的装置,针对新能源汽车充电动态特性进行设计,支持稳态电能计量(针对恒定负载)和动态电能计量(针对波动性负载)两种模…

【CesiumJS入门】(1)创建Viewer及相关配置项

前言 在上一篇博客中,我们直接在vue组件完成初始渲染并创建 DOM 节点后通过 const map new Cesium.Viewer(cesiumContainer)构建了一个地球场景。 而本篇,我们将会专门把地球创建的方法写在一个js文件中,以便后续的调用。 同时&#xff0…

Filebeat技术栈总结

filebeat 是一个轻量型日志采集器,本质上是一个 agent 。不依赖于任何应用,可以安装在任何节点上,可单独使用 Filebeat 并根据配置读取对应位置的日志进行上报和搜集。 filebeat 内置了常用的 output 组件,例如 kafka、ElasticSe…

电脑硬盘空间大量被占用怎么办?

通常情况下,电脑硬盘空间会被系统文件、已安装的应用程序或个人文件、备份、病毒或其他恶意软件或其他未知文件占用。那我们应该怎样解决硬盘空间大量被占用的问题呢? 方法1:通过存储功能查看内容并释放空间 您可以通过Windows 11/10中的存储…

华为外包待了一年,我离职了...

这次来聊一个大家可能也比较关心的问题,那就是就业城市选择的问题。而谈到这个问题,就不可避免地会谈到一些关于:机会?技术氛围?跳槽?薪资水平?等等一系列问题。 正好,这也是大家所…

滑动窗口思想(数组)-python

文章目录 前言一、思想二、相关题目讲解1.长度最小的子数组(leetcode 209.)2.水果成篮(leetcode 904.)3.最小覆盖子串(leetcode 76.) 三、 模拟行为螺旋矩阵II(leetcode.59)leetcode 54.螺旋矩阵剑指Offer 29. 顺时针打印矩阵 总结 前言 滑动窗口的精妙之处在于根据当前子序列…

物业管理系统对小区物业的作用太重要了,零代码平台改变原有认知

小区物业处作为业主与小区的沟通场所,经常会遇到缺乏专业人才,导致管理不善、服务不到位,难以为业主提供良好的服务体验,那么拥有一款成熟稳定的物业管理系统就成了物业管理处的重要选择,不仅能为业主带来更好的服务体…

悦灵犀-全新的智能AI工具

最近一段时间,人工智能再次成为人类创新的焦点,不得不说,人工智能正在以一种全新的方式改变人们的生活,这是一个以大模型为核心的人工智能新时代,大模型的出现让千行百业将迎来新的机遇。 悦享星光作为国内高新技术企…

Zinx框架学习 - 构建最基础的Server

Zinx - V0.1 构建最基础的Server Zinx的框架结构: 整体思路: 客户端发送请求到服务器端,服务端会有一个Goroutine专门处理listenner和监听这个过程,然后有客户端连接过来之后会启动一个客户端处理Goroutine,这个Goro…

深度学习 - 52.推荐场景的多样性与 MMR [Maximal Marginal Relevance] 简介与 Python 实现

目录 一.引言 二.多样性 三.MMR 流程 1.标准 MMR 2.窗口 MMR 四.基于向量内积相似度的 MMR Python 实现 1.模拟用户 rank 结果 2.向量内积计算 MRi 2.1 获取向量计算 max sim 2.2 argmax 获取最优 MRi item 3.MMR 测试 4.MMR 完整代码 五.总结 一.引言 MMR - Ma…

记一次k8s节点上出现node.kubernetes.io/disk-pressure污点的问题

目录 问题描述 原因分析: 解决方案: 其他问题 问题描述 k8s部署时pod一直属于Pending状态,也就是说pod未调度到k8s节点上 原因分析: 通过以下命令查看下pod kubectl get pod 以上命令可以看到各个pod的状态&#xff0c…

【商城后台管理系统】项目初始化(UmiJS)

目录 一、运行时配置 1.1 配置方式 1.2 常用配置项 1.3 关于运行时配置说明 二、使用Umi UI 2.1 Umi UI的特性 2.2 项目中安装Umi UI 2.3 使用Umi UI 三、Umi JS总结 3.1 路由状态管理 3.2 配置代理 3.3 封装requset 一、运行时配置 运行时配置和配置的区别是他跑…

Geohash算法原理及实现

最近需要实现一个功能,查找车辆附近的加油站,如果车和加油站距离在200米以内,则查找成功。 加油站数量肯定不小,能否缩小查找范围,否则以遍历形式,效率肯定高不了。 Geohash算法就是将经纬度编码&#xf…