RISC Zero zkVM 白皮书

news2024/11/27 11:49:20

1. 引言

RISC Zero提供了开源的虚拟机+零知识证明系统,即zero-knowledge virtual machine(简称zkVM)。当在zkVM中执行某RISC-V二进制文件时,其输出为:

  • 二进制文件执行结果
  • + 一个computational receipt,提供了计算完整性的零知识证明。

RISC Zero的证明系统采用zk-STARK,基于以下关键要素:

  • FRI协议
  • DEEP-ALI
  • 基于HMAC-SHA-256的PRF

1.1 可验证计算

在这里插入图片描述
可验证计算的时代即将到来:我们现在生活在这样一个世界里,分布式系统中不受信任方的行为 可 使用计算完整性的证明 快速轻松地被验证为值得信任的。这项技术是零知识密码学和交互式证明领域几十年来不断进步的结果。数年来,在现实世界的应用程序中实现 可验证计算 已经变得实用和有影响力。最初的应用表明,零知识证明是确保区块链隐私的有力工具,该技术已经发展到了计算完整性的证明,并成为数字世界的关键基础设施的地步。我们预计,可验证计算不仅是区块链扩容问题的答案,也是解决推特机器人和垃圾电话等问题的答案。在一个信任越来越稀缺的世界里,可验证计算提供了一条前进的道路。

成千上万的开发人员渴望开始编写可验证的软件。但目前用于编写可验证软件的系统要求开发人员学习具有各种限制和挑战的全新语言。为了使Rust和C++等语言的可验证软件开发成为可能,RISC Zero建立了一种机制来证明任意RISC-V计算的完整性。

1.2 可验证RISC-V

当在RISC Zero zkVM中执行某RISC-V二进制文件时,输出结果的同时还会输出一个computational receipt。该receipt中包含了:

  • 一个密码学seal,作为计算完整性的零知识证明。

通过对可编译为RISC-V的任意代码提供密码学seal,RISC Zero zkVM提供了一个构建真正可信任软件的平台,将信将疑的第三方可在数毫秒内验证其代码执行结果的真实性。
“running a verifier” 以确保大规模计算的完整性的想法是数字安全世界的一个新颖补充。

实际RISC Zero的receipt由3大部分组成:

  • Image ID:为SHA of the executable code,执行代码的哈希值。
  • Seal:为Proof that an executable code was run,证明代码已运行。
  • Journal:为计算结果。
    在这里插入图片描述

1.3 形式化可验证的Verifier

形式化验证是将代码转换为模型的过程,该模型可以通过数学工具进行推理,以确保与安全性和正确性相关的属性。形式化验证用于确保一段代码确实在做它应该做的事情。为了确保RISC Zero verifier(检查receipts)在没有安全漏洞的情况下运行,RISC Zero团队正在对其verifier实现进行形式化验证。具体见:

  • https://www.github.com/risc0/risc0-lean4(Lean+Rust)

1.4 RISC Zero证明系统

RISC Zero zkVM:

  • 证明系统基于Eli Ben-Sasson等人2018年论文 Scalable, transparent, and post-quantum secure computational integrity
  • RISC Zero receipt的seal为a zk-STARK
  • 算术化方案为具有预处理的randomized AIR,具体见Aztec 2021年的From AIRs to RAPs - how PLONK-style arithmetization works。
  • 随机化预处理构造了:
    • PLONK-based memory permutation argument的约束
    • PLOOKUP-based range-check的约束
  • 预处理完之后,STARK实例化使用了:
    • DEEP-ALI协议:见Eli Ben-Sasson等人2019年论文DEEP-FRI: Sampling Outside the Box Improves Soundness
    • FRI协议:见Eli Ben-Sasson等人2017年论文Fast Reed-Solomon Interactive Oracle Proofs of Proximity

2. 核心思想以及背景知识

RISC Zero receipt背后的证明系统是基于execution trace和一些约束来强化计算完整性checks的。
核心思想为:

  • An assertion of computational integrity can be viewed as an assertion that an execution trace satisfies a set of constraints.

2.1 execution trace的列

当一段代码在机器上运行时,execution trace(或简称trace),记录了该计算在每个clock cycle(时钟周期)的机器完整状态。通常将execution trace写成长方形数组,每一行对应机器在某特定时刻的完整状态,每一列展示了该计算的某些特定方面(如存储在特定RISC-V寄存器中的值)在每个时钟周期的当时记录。
RISC Zero的execution trace列主要分为:

  • 1)控制列——公开的:控制列中的数据描述了RISC-V架构,多种控制信号定义了执行阶段,进而定义了应用什么约束。【在源代码中,将控制列称为“Code”列】
  • 2)数据列——私有的:数据列中的数据表示了处理器和内存的运行状态。为高效检查RISC-V内存操作的完整性,与RISC-V内存操作关联的每个寄存器都有2个关联列:
    • 一列表示原始的执行顺序;
    • 一列表示按内存位置排序,然后按时钟周期排序后的结果。
  • 3)Accumulator列——私有的:RISC Zero使用accumulators来,对基于PLONK的permutation check 以及 基于PLOOKUP的range check,的grand-product constraints进行实例化。Accumulator列中包含了关联的累加数据,Accumulator列中的元素,及其关联约束,在随机化预处理阶段就已构建。

2.2 通过约束强化计算完整性

对计算完整性的断言,可重塑为,对“某execution trace满足特定约束集”的断言。这些约束强化了:

  • zkVM执行RISC-V ISA一致。
  • 每个约束都是对特定约束值的low-degree多项式关系。
  • execution trace有效,当且仅当每个约束evaluates to 0。

示例一:约束 ( k ) ( k − 1 ) = 0 (k)(k-1)=0 (k)(k1)=0强化了 k k k要么为0,要么为1。
示例二:约束 j − 2 k = 0 j-2k=0 j2k=0强化了 j = 2 k j=2k j=2k

在实际实现时,为强化RISC-V指令集架构的计算完整性,包含了数千约束,每个约束都表示为某多变量多项式(其输入可能包含多个(之前)时钟周期的寄存器值)。
从上层来看,约束强制要求zkVM操作的以下每个阶段都按要求执行:

  • 1)Init初始化阶段:将所有寄存器值初始化为0。
  • 2)Setup阶段:准备加载ELF文件。
  • 3)Load阶段:加载RISC-V二进制文件到内存。
  • 4)Reset阶段:结束加载阶段,并准备执行。
  • 5)Body阶段:主要执行阶段。该阶段执行用户自定义代码。
  • 6)RamFini阶段:为memory permutation(PLONK)生成bytes-based grand product accumulation值。
  • 7)BytesFini阶段:为PLOOKUP生成bytes-based grand product accumulation值。

这些约束加在一起,强制要求计算声称的输出与预期的rv32im(The RISC-V Instruction Set Manual Volume I: Unprivileged ISA)执行一致。

2.3 Arguments 和 Proofs of Knowledge

RISC Zero receipt中的seal为a STARK——a scalable, transparent argument of knowledge。

An argument of knowledge支持Prover证明某“assertion of knowledge”的正确性。更正式的说话是,Prover断言其知道某witness w \mathbf{w} w满足某些约束 x \mathbf{x} x。当用于对计算完整性的断言时,execution trace为witness,约束为各种定义计算完整性的规则。

在3.3节,将展示Interactive Oracle Proof(IOP)协议((BCS16)Interactive Oracle Proofs)。IOPs中包含了Prover与Verifier之间的一系列交互,整个协议中Prover的消息依赖于Verifier在各个节点提供的随机值。IOP协议为理论模型,事实上,zkVM使用非交互版本的IOP协议,其中Verifier的参与通过Fiat-Shamir transform替换为了HMAC-SHA-256。
在IOP协议上下文中,seal组成了a proof of knowledge。在代码中,proof变成了argument——原因在于,argument依赖于HMAC-SHA-256作为random oracle的安全性,而proof无密码学安全假设。更准确来说,seal是a STARK。Fiat-Shamir Heuristic使得可基于IOP协议的soundness分析来派生出STARK的安全性。

3. RISC Zero IOP协议

本章将展示交互版本的RISC Zero写意思,并在IOP模型上下文中分析该协议的knowledge soundness。

3.1 IOP协议概述

在交互式oracle proof中,Prover 通过一系列交互使 将信将疑的Verifier 信服 某断言。在每一轮,Prover基于双方已知的某domain 对一个或多个函数的evaluations进行commit。Verifier可能不会读取完整的Prover messages,而是query这些Prover messages。IOP模型使用oracle access的概念将这些query理想化。该理论模型,可在不指向任何密码学原语的情况下,证明本协议的soundness。
RISC Zero receipt中的seal,为交互式协议中的transcript,并以某random oracle作为verifier。当zkVM完成某方法的执行之后,相应的结果seal就用作计算完整性的zero-knowledge proof,将某密码学imageID(用于表示所执行的RISC-V二进制文件) 关联到 所断言的代码输出,这样使得第三方可快速验证。

本协议包含了:

  • 1)透明的set-up阶段:构建对Prover和Verifier双方已知的特定协议参数,包括trace列数量和长度,以及所能强化的约束的完整枚举。
  • 2)随机化预处理阶段:
  • 3)Main主阶段

3.1.1 Set-up阶段

每个程序仅需要做一次Set-up阶段,生成的公共参数可用于生成任意数量的execution proofs。这些公共参数包括:

  • 电路说明
  • 对zkVM的约束
  • 待执行程序的密码学标识符
  • 处理哈希、DEEP-ALI、FRI的各种参数

这些参数要么通过可信通道分发给Provers和Verifiers,要么可根据程序定义(如,源代码)独立计算。
“transparency透明”属性,是指:

  • 具备,仅使用公共信息,就可独立重计算出公共参数,的能力。

3.1.2 随机化预处理阶段

set-up完毕之后,Prover运行程序,生成控制列和数据列,然后开始随机化预处理。
随机化预处理,会构建memory accumulators和bytes accumulators。
在随机化预处理阶段,Prover会发送2个trace承诺值:

  • 1个对控制列的承诺值
  • 1个对数据列的承诺值

为生成trace承诺值,会使用Reed-Solomon编码将trace列,编码为,trace blocks,然后将trace blocks承诺到Merkle trees。

w c o n t r o l \mathbf{w}_{control} wcontrol w d a t a \mathbf{w}_{data} wdata来表示witnesses,以 C o m ( w c o n t r o l ) Com(\mathbf{w}_{control}) Com(wcontrol) C o m ( x c o n t r o l ) Com(\mathbf{x}_{control}) Com(xcontrol) 来表示相应的承诺值。在完成对 w c o n t r o l \mathbf{w}_{control} wcontrol w d a t a \mathbf{w}_{data} wdata这2个承诺之后,Prover使用verifier-randomness 来构建 accum blocks,并发送第3个承诺值 C o m ( w a c c u m ) Com(\mathbf{w}_{accum}) Com(waccum),以支持permutation argument和lookup argument。【由于reveal了每棵树的许多分支,RISC Zero commit Merkle caps,而不是Merkle roots,详情见附录B 以及 Alessandro Chiesa等人2021年论文 Subquadratic SNARGs in the Random Oracle Model

3.1.3 Main主阶段

Main主阶段中包含了:

  • 一个标准的AIR-FRI协议,使用DEEP-ALI(见Eli Ben-Sasson等人2019年论文DEEP-FRI: Sampling Outside the Box Improves Soundness)
  • batched FRI协议(见 Eli Ben-Sasson等人2021年论文 Proximity Gaps for Reed-Solomon Codes),与StarkWare和 Polygon Zero的Plonky2方案类似:
    • StarkWare团队的2023年 ethSTARK文档
    • Polygon Zero团队的2022年 Plonky2: Fast Recursive Arguments with PLONK and FRI

Main主阶段的基本流程为:

  • Prover使用约束和execution trace来生成validity多项式 f v a l i d i t y f_{validity} fvalidity,使用 f v a l i d i t y f_{validity} fvalidity来构建validity witness w v a l i d i t y \mathbf{w}_{validity} wvalidity,并发送 C o m ( w v a l i d i t y ) Com(\mathbf{w}_{validity}) Com(wvalidity)给Verifier。* Verifier响应随机值 z ∈ F q z\in\mathbb{F}_q zFq
  • Prover evaluate f v a l i d i t y f_{validity} fvalidity at z z z,并使用DEEP quotienting技术来构建DEEPAnswerSequence。

3.2 IOP定义

回想下 (BCS16)Interactive Oracle Proofs 中的interactive oracle proof。在IOP模式下下,本协议满足 Eli Ben-Sasson等人2018年论文 Scalable, transparent, and post-quantum secure computational integrity 的STIK定义。【STIK和STARK之间缩写词的区别在于用“IOP”代替了“ARgument”。】

借鉴StarkWare团队的2023年 (Sat21) ethSTARK文档第5张的AIR定义和符号,以及,Aztec 2021年的From AIRs to RAPs - how PLONK-style arithmetization works的借助预处理对AIR随机化的概念,RISC Zero的IOP证明了Prover知道某witness满足某RAP(Randomized AIR with Preprocessing)实例,具体定义为:
A R A P = ( F , K , e , w R A P , n σ m e m , n σ b y t e s , h , d , s , w , β , I , C s e t ) A_{RAP}=(\mathbb{F},\mathbb{K}, e, \mathbf{w}_{RAP},\mathbf{n}_{\sigma_{mem}},\mathbf{n}_{\sigma_{bytes}},h,d,s,w,\beta,I,C_{set}) ARAP=(F,K,e,wRAP,nσmem,nσbytes,h,d,s,w,β,I,Cset)
其中:

  • F = F 2 31 − 2 27 + 1 \mathbb{F}=\mathbb{F}_{2^{31}-2^{27}+1} F=F231227+1,名为Baby Bear field。
  • K \mathbb{K} K为degree e = 4 e=4 e=4 extension of F \mathbb{F} F
  • w R A P \mathbf{w}_{RAP} wRAP为RAP witness的列数量,有 w R A P = w c o n t r o l + w d a t a + w a c c u m \mathbf{w}_{RAP}=\mathbf{w}_{control}+\mathbf{w}_{data}+\mathbf{w}_{accum} wRAP=wcontrol+wdata+waccum,其中:
    • w c o n t r o l \mathbf{w}_{control} wcontrol为control控制列数量
    • w d a t a \mathbf{w}_{data} wdata为data数据量数量
    • w a c c u m = 2 e ⋅ n σ m e m + 2 e ⋅ n σ b y t e s \mathbf{w}_{accum}=2e\cdot \mathbf{n}_{\sigma_{mem}}+2e\cdot \mathbf{n}_{\sigma_{bytes}} waccum=2enσmem+2enσbytes为随机化预处理阶段中生成的accumulator列数量。
  • n σ m e m \mathbf{n}_{\sigma_{mem}} nσmem:表示由 trace t i m e \text{trace}_{time} tracetime trace m e m \text{trace}_{mem} tracemem permutation的witness中的重复数据列的数量。
  • n σ m e m \mathbf{n}_{\sigma_{mem}} nσmem:表示PLOOKUP实现中bytes-lookup的witness中的重复列的数量。
  • 2 h 2^h 2h:表示trace domain H H H的size(即列的长度)。
  • d d d:表示rule-checking多项式的最大degree。
  • w ∈ F w\in\mathbb{F} wF:具有multiplicative order e ⋅ 2 h e\cdot 2^h e2h,且 β ∈ F \beta\in\mathbb{F} βF为非零值。
    • 定义commitment domain D D D为coset β D 0 \beta D_0 βD0,其中 D 0 ∈ F p D_0\in\mathbb{F}_p D0Fp w w w生成。
    • 定义trace domain H H H为由 w 1 ρ w^{\frac{1}{\rho}} wρ1生成的集合,其中 ρ \rho ρ的定义见下面。
  • I I I为tapset索引集合。【tap是指trace中的一个元素,约束表示为多个taps的函数。详情见附录A.5.2。注意在ethSTARK用mask术语,而本文使用tapset术语。】
  • s s s:为RAP约束的数量。

除了以上列出的RAP instance输入之外,IOP还使用如下辅助输入,表示为 aux = ( D , k , aux F R I ) \text{aux}=(D, k,\text{aux}_{FRI}) aux=(D,k,auxFRI),其中:

  • D D D为zk commitment domain(ethSTARK中称其为evaluation domain),其为multiplicative subgroup D 0 D_0 D0的non-trivial coset,其中 H ⊆ D 0 ⊆ F H\subseteq D_0\subseteq \mathbb{F} HD0F。【若直接将 D 0 D_0 D0作为commitment domain将引入除零问题,同时意味着query将泄漏execution trace信息问题。而coset D D D D 0 D_0 D0不相交,从而可实现zero-knowledge目的。】
  • 2 k 2^k 2k为zk commitment domain D D D的size。将IOP rate定义为 ρ = 2 h 2 k \rho=\frac{2^h}{2^k} ρ=2k2h
  • aux F R I \text{aux}_{FRI} auxFRI定义为 ( t ⃗ , n q u e r i e s , d f i n a l ) (\vec{\mathbf{t}},\mathbf{n}_{queries},\mathbf{d}_{final}) (t ,nqueries,dfinal),其中:
    • t ⃗ = ( t 1 , ⋯   , t r ) \vec{\mathbf{t}}=(t_1,\cdots,t_r) t =(t1,,tr)为描述COMMIT阶段每轮FRI-folding factor的向量。RISC Zero系统中,对于所有的 i i i,有 t i = 16 t_i=16 ti=16
    • n q u e r i e s = 50 \mathbf{n}_{queries}=50 nqueries=50,为FRI query次数。
    • d f i n a l = 256 \mathbf{d}_{final}=256 dfinal=256,为结束FRI算法的degree。

3.3 IOP协议说明

透明set-up之后,IOP包含了3个元素:

  • 随机化预处理步骤
  • DEEP-ALI子协议
  • Batched FRI子协议

3.3.1 随机化预处理步骤

随机化预处理步骤的流程为:

  • 1)Prover:生成IOP witness w c o n t r o l ∪ w d a t a \mathbf{w}_{control}\cup \mathbf{w}_{data} wcontrolwdata,并发送承诺值 C o m ( w c o n t r o l ) Com(\mathbf{w}_{control}) Com(wcontrol) C o m ( w d a t a ) Com(\mathbf{w}_{data}) Com(wdata)。【该步骤详情见附录C.1】
  • 2)Verifier:samples K \mathbb{K} K中的 n σ = n σ m e m + n σ b y t e s \mathbf{n}_{\sigma}=\mathbf{n}_{\sigma_{mem}}+\mathbf{n}_{\sigma_{bytes}} nσ=nσmem+nσbytes个元素,这些随机数会用于生成Accumulator列。
  • 3)Prover:生成witness w a c c u m \mathbf{w}_{accum} waccum,并发送 C o m ( w a c c u m ) Com(\mathbf{w}_{accum}) Com(waccum)

w R A P = w c o n t r o l ∪ w d a t a ∪ w a c c u m \mathbf{w}_{RAP}=\mathbf{w}_{control}\cup \mathbf{w}_{data}\cup \mathbf{w}_{accum} wRAP=wcontrolwdatawaccum为witness,满足如下RAP instance:
A R A P = ( F , K , e , w R A P , n σ m e m , n σ b y t e s , h , d , s , w , β , I , C s e t ) A_{RAP}=(\mathbb{F},\mathbb{K}, e, \mathbf{w}_{RAP},\mathbf{n}_{\sigma_{mem}},\mathbf{n}_{\sigma_{bytes}},h,d,s,w,\beta,I,C_{set}) ARAP=(F,K,e,wRAP,nσmem,nσbytes,h,d,s,w,β,I,Cset)

与 (Sat21) ethSTARK文档、Eli Ben-Sasson等人2019年论文DEEP-FRI: Sampling Outside the Box Improves Soundness、Eli Ben-Sasson等人2017年论文Fast Reed-Solomon Interactive Oracle Proofs of Proximity,类似,本协议剩余部分为:【不同之处在于,与Plonky2和[Hab22] A summary on the FRI low degree test中一样,使用单个verifier随机值来做constraint batching,以及,用单个verifier随机值来做FRI batching。】

  • 使用辅助IOP参数 aux = ( D , k , aux F R I ) \text{aux}=(D, k,\text{aux}_{FRI}) aux=(D,k,auxFRI)来实现DEEP-ALI和Batched FRI。

3.3.2 DEEP-ALI子协议

DEEP-ALI子协议的流程为:

  • 4)Verifier:samples α c o n s t r a i n t s ∈ K \alpha_{constraints}\in\mathbb{K} αconstraintsK,该随机值用于DEEP-ALI constraint batching。【ethSTARK对每个约束sample了2个随机参数,而RISC Zero本协议中使用了单个随机参数。详情见[Hab22] A summary on the FRI low degree test中的affine batching vs. parametric batching。】
  • 5)Prover:生成 w v a l i d i t y \mathbf{w}_{validity} wvalidity,并生成 C o m ( w v a l i d i t y ) Com(\mathbf{w}_{validity}) Com(wvalidity)。这可看做是对 f v a l i d i t y f_{validity} fvalidity的承诺值, f v a l i d i t y f_{validity} fvalidity定义为:
    f v a l i d i t y ( x ) = ∑ i = 0 ∣ C s e t ∣ − 1 α c o n s t r a i n t s i ⋅ C i ( P 0 ( x ) , ⋯   , P w R A P − 1 ) Z ( x ) f_{validity}(x)=\frac{\sum_{i=0}^{|C_{set}|-1}\alpha_{constraints}^i\cdot C_i(P_0(x),\cdots,P_{\mathbf{w}_{RAP}-1})}{Z(x)} fvalidity(x)=Z(x)i=0Cset1αconstraintsiCi(P0(x),,PwRAP1)
    其中:
    • P j P_j Pj为对 w R A P \mathbf{w}_{RAP} wRAP列的插值, C i C_i Ci为约束, Z Z Z为vanish在trace domain H H H的最小多项式。【在RISC Zero源代码中, f v a l i d i t y f_{validity} fvalidity中称为CheckPoly。为构建 C o m ( w v a l i d i t y ) Com(\mathbf{w}_{validity}) Com(wvalidity),Prover会将 f v a l i d i t y f_{validity} fvalidity切分为4个low-degree validity多项式。本步骤详情见附录C.5.2。】
  • 6)Verifier:samples z ∈ K ∖ ( H ∪ D ) z\in\mathbb{K}\setminus (H\cup D) zK(HD),作为random evaluation point,用于DEEP-ALI的query。
  • 7)Prover:使用 z , w R A P , w v a l i d i t y z,\mathbf{w}_{RAP},\mathbf{w}_{validity} z,wRAP,wvalidity来构建 w b a t c h e d F R I \mathbf{w}_{batchedFRI} wbatchedFRI。不过不为 w b a t c h e d F R I \mathbf{w}_{batchedFRI} wbatchedFRI构建Merkle commitment,RISC Zero的Prover会给Verifier发送足够的信息来重现 w b a t c h e d F R I \mathbf{w}_{batchedFRI} wbatchedFRI的asserted values。所谓足够的信息,也称为DEEPAnswerSequence,其包含了:
    • (7.a) w R A P \mathbf{w}_{RAP} wRAP在DEEP query point z z z的所有tapset。
    • (7.b) w v a l i d i t y \mathbf{w}_{validity} wvalidity在DEEP query point z z z的evaluation。
    • (7.c)对tapset逐列插值的系数。【在Rust源代码中,将这些系数称为 u u u。每个trace列有一个 u u u多项式,使用该列的taps。详情见附录C.5.5。】

3.3.3 Batched FRI子协议

  • 8)Verifier:samples α F R I ∈ K \alpha_{FRI}\in\mathbb{K} αFRIK,该随机值用于FRI batching。
  • 9)Prover和Verifier:借助辅助信息 aux F R I \text{aux}_{FRI} auxFRI应用FRI来check proximity to the code RS [ K , D , ρ ] \text{RS}[\mathbb{K},D,\rho] RS[K,D,ρ] of the function:
    f F R I ( x ) = ∑ i = 0 w R A P + 3 α F R I i ⋅ d i ( x ) f_{FRI}(x)=\sum_{i=0}^{\mathbf{w}_{RAP}+3}\alpha_{FRI}^i\cdot d_i(x) fFRI(x)=i=0wRAP+3αFRIidi(x)
    其中 d i d_i di:为附录C.5.5中定义的DEEP多项式。
    该步骤中还包含几个来自Prover的额外承诺值:
    • one for batching,一种用于batching。
    • one for each commit round of FRI,一种用于FRI每个commit round。

3.3.4 验证

Receipt验证包含如下逻辑检查。若这些检查失败,则Verifier拒绝该receipt:

    1. Verifier使用taps, C s e t C_{set} Cset α c o n s t r a i n t s \alpha_{constraints} αconstraints来计算 f v a l i d i t y ( z ) f_{validity}(z) fvalidity(z)并检查其与seal中声称的 f v a l i d i t y ( z ) f_{validity}(z) fvalidity(z)是否匹配。
    1. Verifier检查DEEPAnswerSequence的内部一致性,使用声称的逐列插值 来 重计算 声称的tapset。
    1. 对于每个FRI query j j j,Verifier使用 u u u系数和 α F R I \alpha_{FRI} αFRI来计算 f F R I ( j ) f_{FRI}(j) fFRI(j),并检查其与seal中声称的 f F R I ( j ) f_{FRI}(j) fFRI(j)是否匹配。
    1. Verifier检查每个FRI query的内部,具体见附录C.6。

3.4 IOP模式的soundness分析

本文使用 Eli Ben-Sasson等人2019年论文DEEP-FRI: Sampling Outside the Box Improves Soundness 和 Eli Ben-Sasson等人2021年论文 Proximity Gaps for Reed-Solomon Codes 的结论来分析本IOP协议的soundness。使用Fiat-Shamir Heuristic将本IOP分析 转换为 非交互式协议的结论,使用HMAC-SHA-256来实例化random oracle。

本文的soundness分析遵循(Sat21) ethSTARK文档,不同之处在于:

  • 随机化预处理:本协议以ethSTARK中未模拟的随机化预处理为起始步骤。随机化预处理 为PLONK-based permutation check和PLOOKUP-based range check实例化约束。使用Schwartz-Zippel Lemma来限定soundness error上线。

  • Constraint batching:DEEP-ALI包含了压缩所有约束为当个“Combined Constraint”的步骤。RISC Zero采用[Hab22] A summary on the FRI low degree test中的方案,使用的是单个随机域元素的幂,而ethSTARK中使用的是一组域元素。RISC Zero采用的是 Eli Ben-Sasson等人2021年论文 Proximity Gaps for Reed-Solomon Codes 中的parametric batching技术,而ethSTARK选择的是affine batching技术。

  • FRI batching:“batched FRI protocol”也是先用verifier随机数来压缩多个FRI instances为单个instance。同样,RISC Zero采用的是parametric batching技术,而ethSTARK采用的是affine batching技术。

  • w v a l i d i t y \mathbf{w}_{validity} wvalidity的degree reduction:ethSTARK 和 Eli Ben-Sasson等人2018年论文 Scalable, transparent, and post-quantum secure computational integrity 的构建会生成a pair of FRI assertions:

    • 一个对应trace ( w c o n t r o l ∪ w d a t a ∪ w a c c u m ) (\mathbf{w}_{control}\cup \mathbf{w}_{data}\cup \mathbf{w}_{accum}) (wcontrolwdatawaccum)
    • 一个对应“validity多项式”。

    与[Hab22] A summary on the FRI low degree test类似,RISC Zero将validity多项式切分为4个low-degree validity多项式,从而可将其压缩为单个FRI assertion。【“split”切分函数与FRI commit rounds中的一样。详情见附录A.2.3。】 w v a l i d i t y \mathbf{w}_{validity} wvalidity的每个leaf包含这4个low-degree validity多项式的evaluation值。[Hab22] A summary on the FRI low degree test中将这样的切分技术称为“segment polynomials”。

总之,RISC Zero IOP协议的soundness上限为:
ϵ I O P ≤ ϵ P L O N K + ϵ L O O K U P + ϵ D E E P A L I + ϵ F R I \epsilon_{IOP}\leq \epsilon_{PLONK}+\epsilon_{LOOKUP}+\epsilon_{DEEP_ALI}+\epsilon_{FRI} ϵIOPϵPLONK+ϵLOOKUP+ϵDEEPALI+ϵFRI
其中: ϵ P L O N K , ϵ L O O K U P , ϵ D E E P A L I , ϵ F R I \epsilon_{PLONK},\epsilon_{LOOKUP},\epsilon_{DEEP_ALI},\epsilon_{FRI} ϵPLONK,ϵLOOKUP,ϵDEEPALI,ϵFRI分别为本协议PLONK argument、PLOOKUP argument、DEEP-ALI子协议、FRI子协议的soundness上限。

3.4.1 soundness分析用标记

θ \theta θ来表示FRI low-degree test中的proximity参数,本节分析限定在list-decoding radius为 θ < 1 − ρ \theta<1-\sqrt{\rho} θ<1ρ ,conjectured code capacity为 θ < 1 − ρ \theta<1-\rho θ<1ρ。这些soundness结论的证明遵循 Eli Ben-Sasson等人2021年论文 Proximity Gaps for Reed-Solomon Codes 中的定理1.5和8.3,以及 Eli Ben-Sasson等人2019年论文DEEP-FRI: Sampling Outside the Box Improves Soundness中的定理6.2。conjectured security遵循 Eli Ben-Sasson等人2021年论文 Proximity Gaps for Reed-Solomon Codes 中的Conjecture 8.4,以及 Eli Ben-Sasson等人2019年论文DEEP-FRI: Sampling Outside the Box Improves Soundness中的Conjecture 2.3。具体定理和Conjecture见附录D。

在后续章节中:

  • L L L m m m源自Guruswami-Sudan list-decoding算法
  • θ = 1 − ρ ⋅ ( 1 + 1 2 m ) \theta=1-\rho\cdot (1+\frac{1}{2m}) θ=1ρ(1+2m1),与[Hab22] A summary on the FRI low degree test一样。
  • 其它变量定义见3.2节。

推荐:

  • 为了解DEEP-ALI和FRI的error上限,推荐阅读[Hab22] A summary on the FRI low degree test 和 (Sat21) ethSTARK文档。
  • 为了解permutation argument的error上限,推荐阅读 Plonky2: Fast Recursive Arguments with PLONK and FRI。

3.4.2 PLONK和PLOOKUP的error上限

随机化预处理阶段为2个grand-product arguments实例化了accumulators和约束。无论哪个,简单应用Schwartz-Zippel Lemma,可生成soundness error上限。

其中:

  • 一个accumulator用于证明memory integrity内存完整性。对应的error上限为 e ⋅ n σ m e m ⋅ 2 h ∣ K ∣ \frac{e\cdot \mathbf{n}_{\sigma_{mem}}\cdot 2^h}{|\mathbb{K}|} Kenσmem2h
  • 另一个accumulator用于证明tap完整性。对应的error上限为 e ⋅ n σ b y t e s ⋅ 2 h ∣ K ∣ \frac{e\cdot \mathbf{n}_{\sigma_{bytes}}\cdot 2^h}{|\mathbb{K}|} Kenσbytes2h

3.4.3 DEEP-ALI的error上限

在RISC Zero的DEEP-ALI实现中,Verifier samples了单个随机值 α c o n s t r a i n t s \alpha_{constraints} αconstraints来合并约束,然后将 z ∈ K ∖ ( H ∪ D ) z\in\mathbb{K}\setminus (H\cup D) zK(HD)用作DEEP query。每个随机samplings都有一个关联的error term。
ϵ D E E P − A L I = ϵ A L I + ϵ D E E P \epsilon_{DEEP-ALI}=\epsilon_{ALI}+\epsilon_{DEEP} ϵDEEPALI=ϵALI+ϵDEEP
其中:

  • ϵ A L I \epsilon_{ALI} ϵALI:对应为合并约束的soundness error。
  • ϵ D E E P \epsilon_{DEEP} ϵDEEP:对应为DEEP query point的soundness error。

不同于ethSTARK,RISC Zero使用单个随机值的幂来合并约束。其实现与[Hab22] A summary on the FRI low degree test 与一致,不同之处在于将 ϵ D E E P \epsilon_{DEEP} ϵDEEP的分子由 d d d改成了 d − 1 d-1 d1,即,RISC Zero的DEEP-ALI的error上限为:
ϵ = s ⋅ L K \epsilon=\frac{s\cdot L}{\mathbb{K}} ϵ=KsL
ϵ = L ⋅ ( d − 1 ) ( ( k + 1 ) + ( k − 1 ) ) ∣ K ∣ − ∣ H ∣ − ∣ D ∣ \epsilon=\frac{L\cdot (d-1)((k+1)+(k-1))}{|\mathbb{K}|-|H|-|D|} ϵ=KHDL(d1)((k+1)+(k1))

3.4.4 FRI的error上限

本节在list-decoding体制下的FRI soundness结论,主要遵循 Eli Ben-Sasson等人2021年论文 Proximity Gaps for Reed-Solomon Codes 中的定理1.5和8.3。如之前所提及,本节RISC Zero的FRI soundness结论不同于 Eli Ben-Sasson等人2021年论文 Proximity Gaps for Reed-Solomon Codes 和 ethSTARK,因为RISC Zero采用单个随机域元素的幂来做FRI batching。为此,RISC Zero的FRI soundness结论 对标的是 [Hab22] A summary on the FRI low degree test (其中batch size为 w R A P + d + 1 \mathbf{w}_{RAP}+d+1 wRAP+d+1)。
即RISC Zero的FRI soundness error上限为:
ϵ F R I = ( ( w R A P + d − 1 ) − 1 2 ) ⋅ ( m + 1 2 ) 7 3 ρ 3 ⋅ ∣ D ∣ 2 ∣ K ∣ + ( 2 m + 1 ) ⋅ ( ∣ D ∣ + 1 ) ⋅ ∑ i = 1 r t i ρ ⋅ ∣ K ∣ + ( 1 − θ ) n q u e r i e s \epsilon_{FRI}=((\mathbf{w}_{RAP}+d-1)-\frac{1}{2})\cdot \frac{(m+\frac{1}{2})^7}{3\sqrt{\rho}^3}\cdot \frac{|D|^2}{|\mathbb{K}|}+\frac{(2m+1)\cdot (|D|+1)\cdot \sum_{i=1}^{r}t_i}{\sqrt{\rho}\cdot |\mathbb{K}|}+(1-\theta)^{\mathbf{n}_{queries}} ϵFRI=((wRAP+d1)21)3ρ 3(m+21)7KD2+ρ K(2m+1)(D+1)i=1rti+(1θ)nqueries

参考资料

[1] RISC Zero zkVM白皮书-2023.8.11版 RISC Zero zkVM: Scalable, Transparent Arguments of RISC-V Integrity
[2] RISC Zero团队2023年3月在ETHDenver上的分享视频 If Knowledge is Power, What is Zero Knowledge? An Intro to zkVMs with Eric

RISC Zero系列博客

  • RISC0:Towards a Unified Compilation Framework for Zero Knowledge
  • Risc zero ZKVM:zk-STARKs + RISC-V
  • 2023年 ZK Hack以及ZK Summit 亮点记

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

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

相关文章

Unity中程序集dll

一&#xff1a;前言 一个程序集由一个或多个文件组成&#xff0c;通常为扩展名.exe和.dll的文件称为程序集&#xff0c;.exe是静态的程序集&#xff0c;可以在.net下直接运行加载&#xff0c;因为exe中有一个main函数(入口函数&#xff09;&#xff0c;.dll是动态链接库&#…

安装配置 zookeeper(单机版)

目录 一 准备并解压安装包 二 修改zoo.cfg文件 三 创建相应两个目录 四 创建文件myid 五 修改环境变量 六 启动 zookeeper 一 准备并解压安装包 这里提供了网盘资源 http://链接: https://pan.baidu.com/s/1BybwSQ_tQUL23OI6AWxwFw?pwdd4cf 提取码: d4cf 这里的安装包是…

市面上的ipad国产触控笔怎么样?开学性价比高的电容笔测评

由于Apple Pencil的问世&#xff0c;成为了iPad的一款便携式的生产力配件&#xff0c;它的优点是&#xff0c;与iPad相结合的电容笔&#xff0c;可以让专业的画师在iPad上画画&#xff0c;并且可以画出不同粗细的线条&#xff0c;这对需要书写的学生来说&#xff0c;是非常有用…

解决 SQLyog 连接 MySQL8.0+ 报错:错误号码2058

文章目录 一、问题现象二、原因分析三、解决方案1. 方案1&#xff1a;更新SQLyog版本2. 方案2&#xff1a;修改用户的授权插件3. 方案3&#xff1a;修复my.cnf 或 my.ini配置文件 四、最后总结 本文将总结如何解决 SQLyog 连接 MySQL8.0 时报错&#xff1a;错误号码2058 一、问…

数据可视化大屏模板 | 保姆级使用教程

近来很多朋友私信咨询怎么下载使用数据可视化大屏模板&#xff0c;在这里就给大家做一个相对简单的教程总结。有需要的朋友记得先收藏保存&#xff0c;以便不时之需。 数据可视化大屏制作软件&#xff1a;奥威BI系统 数据可视化报表模板板块&#xff1a;模板秀 主要操作&…

uni-app:实现条件判断展示图片(函数判定+三目运算)

一、多条件判断&#xff08;通过函数进行图片展示&#xff09; 效果 代码 在data中定义图片信息和要传递的数据信息&#xff0c;在src中写入函数并携带要传递的数据&#xff0c;通过传递的数据在函数中进行判断&#xff0c;并返回对应的图片信息 <template><view&…

vue中转换base64文件数据后通过blob下载

可以看到这里我要转换的数据是content字段&#xff0c;即将base64文件数据转换后下载下来&#xff1a; downloadAttachment({ attachmentId: id }).then(({ data }) > {proxy.$modal.closeLoading();// atob先解码base64数据const raw window.atob(data.content);// 获取解…

亚马逊小类目排名怎么看?亚马逊小类目是什么意思?——站斧浏览器

亚马逊的产品分类结构被分为多个级别&#xff0c;包括大类目、小类目和子类目。本文介绍了亚马逊小类目排名查看方式。 亚马逊小类目排名怎么看&#xff1f; 小类目排名是亚马逊为每个小类目中的商品分配的销售排名。它反映了在该小类目中的销售表现&#xff0c;通常以数字形…

Python编程指南:利用HTTP和HTTPS适配器实现智能路由

嗨&#xff0c;爬虫大佬们&#xff01;今天我要为大家分享一篇关于如何利用HTTP和HTTPS适配器来实现智能路由的Python编程指南。在现代互联网应用中&#xff0c;路由功能起着至关重要的作用&#xff0c;而利用Python编程语言实现智能路由则可以为我们的应用带来更高的灵活性和性…

LeetCode-热题100-笔记-day28

98. 验证二叉搜索树https://leetcode.cn/problems/validate-binary-search-tree/ 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点…

AI绘画:StableDiffusion实操教程-斗罗大陆-朱竹清(附高清图下载)

大家好&#xff0c;我是小梦&#xff0c;最近一直研究AI绘画。 不久前&#xff0c;我与大家分享了StableDiffusion的全面教程 然而&#xff0c;仍有些读者提出&#xff0c;虽然他们已经成功地安装了此工具&#xff0c;但生成的作品与我展示的相差较大。那么&#xff0c;如何缩…

TM1638的8个LED灯和8个数码管的使用

一、模块介绍 上图为使用的模块&#xff0c;顶部8个LED&#xff0c;8个数码管&#xff1b;中间TM1638芯片&#xff0c;右侧是8个二极管&#xff08;非发光二极管&#xff09;&#xff1b;最下方是8个按键。 电路图如下图所示 二、TM1638 1、数据传输格式 在传输数据时&#x…

Java“牵手”快手商品详情数据,快手商品详情接口,快手API接口申请指南

快手商城是快手小店平台和快手进口电商平台的公域导购场景&#xff0c;也是快手的在线购物平台。 用户打开快手APP后点击"商城"即可进入&#xff0c;在商城首页信息流、商城品类频道&#xff08;如女装、百货、家电频道等&#xff0c;其中&#xff0c;部分频道的商品…

如何用思维导图做笔记

思维导图是一个强大的学习工具&#xff0c;可以帮助我们更好地整理和梳理学习内容。好的笔记可以帮助我们在考试前夕事半功倍。大大提高效率。秒变学霸小达人。 今天我们就结合思维导图&#xff0c;告诉大家如何做出一份出色的思维导图笔记。 5R笔记法是一种用于学习和记笔记…

day6_C++

day6_C 模板 栈模板 队列思维导图 模板 栈 stack.h #ifndef STACK_H #define STACK_H#include <iostream> #include <cstring>using namespace std;#define MAX 5template<typename T> class Stack { public:/*构造函数*/Stack();/*拷贝构造函数*/Stack(co…

看板管理:以可视化方式确定任务优先级

确定工作的优先级是我们今天都要面对的挑战。若处理不当&#xff0c;我们就可能试图一心多用&#xff0c;从而严重损害工作效率。 使用看板方法来设定工作优先级是一种非常直观、快速的方法。 确定工作优先级的看板方法 看板工作流程管理方法的核心在于工作可视化。工作被划…

邀请函 | 什么是全协议存算一体化解决方案?

近日&#xff0c;趋动科技与 XSKY星辰天合联合推出了针对教育行业的全协议存算一体化解决方案&#xff0c;实现了最小规模&#xff08;3 节点&#xff09;的人工智能算力和存力资源池化的基础设施平台建设&#xff0c;帮助客户共享数据中心内所有服务器商的 GPU 算力以及存力&a…

不定积分的基本公式与换元积分法

不定积分的基本公式 不定积分的基本公式如下&#xff1a; 常数函数积分&#xff1a;∫0dxC。幂函数积分&#xff1a;∫x^α dx[x^(α1)]/(α1)C&#xff08;α≠-1&#xff09;。一次二项式积分&#xff1a;∫x/(abx)dx(bx-aln|abx|)/b^2C。二次二项式积分&#xff1a;∫x^2/(…

【小程序】基于SpringBoot开发的餐厅点餐系统

文章目录 系统介绍后端管理&#xff1a;微信小程序&#xff1a;功能展示 系统介绍 开发工具 IDEA、vscode、微信开发者工具 后台框架 SpringBoot 前端框架 vue、uniapp 后端管理&#xff1a; 管理员可以添加&#xff0c;修改&#xff0c;删除员工信息。 分类管理&#xff…

Python实现猎人猎物优化算法(HPO)优化Catboost分类模型(CatBoostClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…