IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Halo2学习笔记(1) -> 正文阅读

[嵌入式]Halo2学习笔记(1)

1. 引言

Halo2 book 为 ZCash实现的halo2方案。

相关术语定义遵循 ZKProof Community Reference

2. Proof system定义

任何proof system的目的都是能证明有趣的数学或密码学statements。

通常,需要基于public inputs,证明Prover确实知道某些private inputs,使得该statements成立。

使用relation R \mathcal{R} R ,其指定了public和private inputs的哪些组合是有效的。

为了区分不同的relation R \mathcal{R} R 及其实现,定义了circuit。

针对特定proof system定义的circuit language可表述为arithmetization。
arithmetization将使用polynomial constraints on variables over a field来定义circuit。

为了创建a proof of a statement,Prover需知道the private inputs以及相应的中间值,中间值也称为advice values。private inputs 和advice values都将用于circuit中。

假设我们可根据private和public inputs高效计算出advice values。特定的advice values将取决于实现circuit的方式,而不仅仅取决于high-level statement。

private inputs和advice values都统称为witness。

假设为了证明知道a preimage x x x of a hash function H H H for a digest y y y

  • private input:preimage x x x
  • public input:digest y y y
  • relation: { ( x , y ) : H ( x ) = y } \{(x,y): H(x)=y\} {(x,y):H(x)=y}
  • 对于某一特定的public input Y Y Y,其statement可为: { ( x ) : H ( x ) = Y } \{(x):H(x)=Y\} {(x):H(x)=Y}
  • advice values:为在hash function circuit实现过程中的所有中间值。
  • witness:为private input x x x和所有advice values。

Non-interactive Argument是指:Prover create a proof for a given statement and witness。
所谓proof是指:用于convince a Verifier that there exists a witness for which the statement holds的data。
所谓soundness是指:the security property that such proofs cannot falsely convince a Verifier。

Non-interactive Argument of Knowledge (NARK) 在Non-interactive Argument的基础上进一步:convince the Verifier that the Prover knew a witness for which the statement holds。对应的security property称为knowledge soundness,即意味着soundness。

事实上,在密码学协议中,knowledge soundness比 soundness 更实用:如,在某协议中,若感兴趣Alice是否hold a secret key,即意味着,需Alice证明其know the key,而不仅仅是存在该key。

knowledge soundness可表述为:
存在an extractor,其可observe precisely how the proof is generated, 从而必须能compute the witness。

可能会有如下缺陷:

  • 1)malleability:即根据已有proof,在不知道witness的前提下,修改出的不同proof仍能证明相同或相关的statement。
  • 2)replay:若Alice给了一个由别人生成的proof,不应判定为Alice知道相应的key。

若proof中不会泄露任何关于witness(除了知道该witness确实存在且仅Prover知道)的信息,则可称该proof system为zero knowledge的。
若proof的size很短(即为circuit size的polylog),则可称该proof system为succinct的。
succinct NARK称为SNARK(Succinct Non-interactive Argument of Knowledge)。

根据以上SNARK定义可知,SNARK不要求verification time为circuit size的polylog。有些论文会以“efficient”术语来表示SNARK的verification time为ploylog of circuit size。但是在Halo2中,将避免使用该术语,因为会与支持amortized或recursive verification SNARK 混淆。

zk-SNARK是指:zero-knowledge SNARK。

3. PLONKish Arithmetization

Halo2中的arithmetization采用的是PLONK,或更准确地说是基于扩展的UltraPLONK。
UltraPLONK支持 custom gates和lookup argument,此处成为其为PLONKish。

PLONKish circuit由一系列矩阵值表示,其中的rows, columns和cells与传统的矩阵定义是一致的。

PLONKish circuit取决于a configuration:

  • 1)有限域 F \mathbb{F} F,对于特定的statement和witness,矩阵中的cell values为有限域值。
  • 2)fixed columns是指fixed by the circuit;advice columns对应witness values;instance columns正常用于public inputs(技术上来说,可用于表示Prover与Verifier之间共享的任意elements)。columns的subset可参加equality constraints。
  • 3)需定义a polynomial degree bound。对于a sequence of polynomial constraints,multivariate polynomials over F \mathbb{F} F 必须在每行都evaluate to zero。polynomial constraint中的variables可指向当前行中特定列的一个cell,或者指向a given column of another row relative to this one (with wrap-around, 即taken modulo n n n)。每个polynomial的maximum degree由其polynomial degree bound定义。
  • 4)会根据tuples of input expressions (which are multivariate polynomials as above) and table columns来构建a sequence lookup arguments。
  • 5)定义矩阵的行数 n n n n n n必须对应the size of a multiplicative subgroup of F × \mathbb{F}^{\times} F×,通常为a power of two。
  • 6)equality constraints用于表示:two given cells must have equal values。
  • 7)定义the values of the fixed columns at each row。
  • 8)可通过fixed columons中定义的selectors来控制polynomial constraints的开关。如,a constraint q i ? p ( ? ? ) = 0 q_i\cdot p(\cdots)=0 qi??p(?)=0可通过设置 q i = 0 q_i=0 qi?=0来关闭特定行 i i i的约束。有时,会将由a set of selector columns控制的a set of constraints定义为gate。通常,standard gate支持generic operations like field multiplication and division,而custom gates支持更特殊的操作。

根据circuit description,可生成a proving key和a verification key,分别用于prove和verify环节。

4. Chips

第2和第3节都是low-level description of a circuit。实际实现时,为了auditability, efficiency, modularity和expressiveness,会封装higher-level API——借助Chips,内部提供pre-built implementations of particular functionality。

可具有如下功能的chips:

  • 实现了hash function的chip
  • 实现了cipher的chip
  • 实现了scalar multiplication的chip
  • 实现了pairing的chip

在UPA中,可基于具有field multiplication和filed addition的standard gates实现任意的逻辑。但是,借助custom gate效率可能会更优。

在Halo2中,chips “know” how to use particular sets of custom gates。从而实现了抽象层,隔离了直接使用custom gates的复杂性。

有时,会同时实现high-level circuit和chips,这样便于理解、审计、维护以及复用。

UPA中的gates通过relative references指向cells,即指向the cell in a given column 并 指向 the row at a given offset relative to the one in which the gate’s selector is set。若offset 为非零值,则可称为offset reference(即offset reference 为 relative reference的子集)。

与relative reference对应的是absolute reference,absolute reference用于equality constraints,可point to any cell。

offset reference的主要目的是减少configuration中的column的数量,从而进一步减少proof size。若没有offset reference,需要有单独的一列来hold each value referred to by a custom gate,同时需要使用equality constraints来copy values from other cells of the circuit into that column。使用offset reference,不仅需要更少的columns,而且不再需要equality constraints来支持这些 columns,从而提升了效率。

在R1CS中,circuit中包含了a “sea of gates” with no semantically significant ordering。因为有 offset references,UPA circuit中的rows是有顺序的,便于在gadget level层构建circuit时,无需直接处理relative references或gate layout。

可将circuit切分为regions,在每个region都包含了a disjoint subset of cells,且relative references only ever point within a region。
chip实现的一部分职责是保证gates that make offset references are laid out in the correct positions in a region。

根据多个regions及其shapes,可使用不同的floor planner来决定各个region的位置。有一个default floor planner实现了通用算法,但是你可根据需要编写自己的floor planner。

floor planning会在matrix中留下空白,因为the gate in a given row did not use all available columns。这些空白可填充对位置无要求的gates,如gates that do not require offset references。

参考资料

[1] Halo2 book

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:19:13  更:2021-09-12 13:20:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:23:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码