1. 引言

Polynomial commitment schemes (PCSs):
可load a large amount of information (the ‘execution trace of a circuit’) into a single elliptic curve point —— a single ‘number’。

SNARKs需prove to a verifier that large computations have taken place without the verifier having to re run the whole computation (which would defeat the point)。

在Web3世界,Veriifer为a blockchain。对于区块链来说,proof应尽可能简短(即,keep the amount of data that needs to be sent to the verifier as small as possible),因为链上数据存储是非常昂贵的。

2. 何为“trace of a circuit”?

举例:
给定初始 x x x,进行100万次 x → x 3 + 5 x\rightarrow x^3+5 x→x3+5运算。

最终目的是:在Verifier无需重新运行整个运算过程的情况下,证明结果是正确的。

假设 x x x的初始值为2,即 x = 2 x=2 x=2。

第一次,Prover运算为:

  • x 2 = 4 x^2=4 x2=4
  • x 3 = x 2 × x = 4 × 2 = 8 x^3=x^2\times x=4\times 2=8 x3=x2×x=4×2=8
  • x 3 + 5 = 13 x^3+5=13 x3+5=13

所以对应的trace为 { 2 , 4 , 8 , 13 , ⋯ } \{2,4,8,13,\cdots\} {2,4,8,13,⋯}。

即意味着,100万次运算,需产生3,000,001个trace数字——that’s a lot of data to send, especially given the vastness of the numbers later in the sequence。

如何在不通过网络给Verifier传输这300多万个数字的基础上,使Verifier信任计算结果呢?
—— 可 ‘commit’ to some piece of data that is a digest of all these 3,000,000 numbers,即借助commit-challenge-prove策略:

  • 若使用 H ( a 0 ∣ ⋯ ∣ a d ) H(a_0|\cdots|a_d) H(a0​∣⋯∣ad​)来commit,则reveal时需传输公开所有 a i a_i ai​值。
  • polynomial commitment schemes使用类似vector space的polynomials,each ‘dimension’ is ‘loaded’ with one of the numbers in the ‘trace’ of computing a programme (by ‘trace’, we mean the sequence of all inputs, intermediary values and outputs computed/used in the course of running the algorithm concerned).
    2020年,Kate scheme (又名Kate-Zaverucha-Goldberg scheme),允许a prover to create some data which binds them to an evaluation of a polynomial f ( X ) = ∑ i = 0 k a i X i f(X)=\sum_{i=0}^{k}a_iX^i f(X)=∑i=0k​ai​Xi in a provable fashion。

3. Kate commitment中的reference string

Kate commitment中的reference string为:a list of successive powers of an unknown quantitiy,生成方式类似有 AZTEC Ignition Ceremony :
< g , g α , ⋯ , g α t > ∈ G t + 1 <g,g^{\alpha},\cdots,g^{\alpha^t}>\in\mathbb{G}^{t+1} <g,gα,⋯,gαt>∈Gt+1
其中 G \mathbb{G} G为某一elliptic curve group。

这些对应为多项式中的单项式 1 , X , X 2 , ⋯ , X t 1,X,X^2,\cdots,X^t 1,X,X2,⋯,Xt,evaluated at a number α \alpha α,然后表示为elliptic curve form而不是integer form。

4. Kate commitment的假设

Kate commitment的假设为:t-Strong Discrete Log Assumption,即:
已知 g , g α , ⋯ , g α t g,g^{\alpha},\cdots,g^{\alpha^t} g,gα,⋯,gαt,无法计算出 α \alpha α值。

但是,当 t t t非常大时,如Aztec选择的BN254 curve,当 t t t接近 2 40 2^{40} 240时,以上安全将无法保证。

4.1 Commitment

C = g f ( α ) = g a 0 + a 1 ⋅ α + a 2 ⋅ α 2 + ⋯ a d ⋅ α d = ( g ) a 0 ⋅ ( g α 1 ) a 1 ⋯ ( g α d ) a d C=g^{f(\alpha)}=g^{a_0+a_1\cdot\alpha+a_2\cdot \alpha^2+\cdots a_d\cdot \alpha^d}=(g)^{a_0}\cdot (g^{\alpha^1})^{a_1}\cdots (g^{\alpha^d})^{a_d} C=gf(α)=ga0​+a1​⋅α+a2​⋅α2+⋯ad​⋅αd=(g)a0​⋅(gα1)a1​⋯(gαd)ad​
为多项式 f ( X ) = ∑ i = 1 n a i ⋅ X i f(X)=\sum_{i=1}^{n}a_i\cdot X^i f(X)=∑i=1n​ai​⋅Xi的commitment。
要求 d e g ( f ) ≤ t deg(f)\leq t deg(f)≤t。

4.2 Opening

Verifier指定任意 opening point β ≠ α \beta\neq \alpha β​=α,有:
ψ β ( α ) = f ( α ) − f ( β ) α − β \psi_{\beta}(\alpha)=\frac{f(\alpha)-f(\beta)}{\alpha-\beta} ψβ​(α)=α−βf(α)−f(β)​

Prover给Verifier发送的证明内容为:
< f ( β ) , g ψ β ( α ) > <f(\beta), g^{\psi_{\beta}(\alpha)}> <f(β),gψβ​(α)>

4.3 Verify

验证过程为判断:
e ( C , g ) = e ( g ψ β ( α ) , g α ⋅ g − β ) ⋅ e ( g , g ) f ( β ) e(C,g)=e(g^{\psi_{\beta}(\alpha)}, g^{\alpha}\cdot g^{-\beta})\cdot e(g,g)^{f(\beta)} e(C,g)=e(gψβ​(α),gα⋅g−β)⋅e(g,g)f(β)
是否成立即可。

参考资料

[1] https://hackmd.io/I9CvNQm-S-WQozt6ElNG_Q

Kate commitments入门相关推荐

  1. fflonK: a Fast-Fourier inspired verifier efficient version of PlonK

    1. 引言 前序博客有: [KZG10] Kate commitments入门 [GWC19]论文 PLONK: permutations over lagrange-bases for oecume ...

  2. 超越信标链:Eth2的下一步是什么?

    "Ben Edgington在文中回顾了以太坊信标链发展进程,并重新回顾了以太坊2021年的三重路线图:Eth1和Eth2之间的"合并".分片和轻客户端相关的具体内容(V ...

  3. RedShift: Transparent SNARKs from List Polynomial Commitments学习笔记

    1. 引言 纽约大学Kattis和Matter Labs团队2019年论文<RedShift: Transparent SNARKs from List Polynomial Commitmen ...

  4. Python入门4_之字典的使用

    说到python的字典,我第一个想到的是与之类似的JSON,也同样是键值对. 前面第一讲有那么一个隐患的问题,我们说八进制数都是以0开头的,但是有的时候,我们要表示以0开头的十进制数,怎么办?最常见的 ...

  5. react入门(1)之阮一峰react教程

    阮一峰老师的github地址:React Demos React 入门实例教程 1.HTML模板 <!DOCTYPE html> <html><head>// re ...

  6. [入门]Ruby on Rails入门教程及开发工具选用

    http://witcheryne.javaeye.com/blog/846714 最近在为一家公司做一个小项目,前端时间一直在用最熟悉的java,结果java的开发效率实在让人崩溃.用框架吧-一堆配 ...

  7. jsx 调用php,JavaScript_JavaScript的React框架中的JSX语法学习入门教程,什么是JSX? 在用React写组件的 - phpStudy...

    JavaScript的React框架中的JSX语法学习入门教程 什么是JSX? 在用React写组件的时候,通常会用到JSX语法,粗看上去,像是在Javascript代码里直接写起了XML标签,实质上 ...

  8. 【React】入门实例

    React 可以灵活的应用在各种各样的项目中.你可以用它来创建新的应用程序,你也可以逐步引用而不改变现有的代码库. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaS ...

  9. python快速入门【四】-----各类函数创建

    python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...

最新文章

  1. Enum.GetHashCode()的问题
  2. git 提交到某分支_Git如何拉取某个分支的某段提交
  3. Eclipse Source not found
  4. (网页)AngularJS 参考手册
  5. jquery ajax.then,jQuery动态AJAX Promise链
  6. 英语口语小组PPT--袁隆平
  7. 阿里云携领先SDN能力,亮相全球网络技术盛会ONS
  8. 深入理解JavaScript系列(12):变量对象(Variable Object)
  9. isKindOfClass vs isMemberOfClass
  10. 棋牌游戏服务器架构: 详细设计(3) 数据库设计
  11. 2021-2025年中国单相静态电能表行业市场供需与战略研究报告
  12. python爬虫十二种方法_Python爬虫的N种姿势
  13. Typescript的应用与思考
  14. 存储过程实现报表数据源的利弊分析
  15. GDB调试指南-启动调试
  16. 电脑更新win10系统一直卡在57%怎么办
  17. java实现数据挖掘_数据挖掘Apriori算法的java实现
  18. 软件项目该如何接?(转自速用)
  19. 小程序推广的官方规则
  20. thinkphp3.2对接短信验证码平台代码

热门文章

  1. elementui icon图标使用 颜色修改
  2. 精通javapython拼写_异步图书 精通Python自然语言处理 高清文字版PDF下载
  3. html中视频的封面+ueditor的视频封面
  4. 强化学习环境mujoco排坑之关于anaconda3/compiler_compat/ld: cannot find -lGL问题
  5. 晨南戴科dbkaos
  6. 曾经以为30岁很遥远,如今18早已是很久以前的事情了
  7. PostgreSQL编写记录删除表格信息的Extension扩展
  8. javascript 跳转页面 关闭当前页面 返回上页面
  9. GSEA原理及一些理解
  10. Font Icon 的资源推荐