| |
|
开发:
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。 为了创建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:
Non-interactive Argument是指:Prover create a proof for a given statement and witness。 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可表述为: 可能会有如下缺陷:
若proof中不会泄露任何关于witness(除了知道该witness确实存在且仅Prover知道)的信息,则可称该proof system为zero 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 ArithmetizationHalo2中的arithmetization采用的是PLONK,或更准确地说是基于扩展的UltraPLONK。 PLONKish circuit由一系列矩阵值表示,其中的rows, columns和cells与传统的矩阵定义是一致的。 PLONKish circuit取决于a configuration:
根据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:
在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。 根据多个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例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |