RapidUp: Multi-Domain Permutation Protocol for Lookup Tables学习笔记

Posted mutourend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RapidUp: Multi-Domain Permutation Protocol for Lookup Tables学习笔记相关的知识,希望对你有一定的参考价值。

1. 引言

前序博客有:


要点:


Polygon zero团队 Daniel Lubarov 和 Polygon zkEVM团队 Jordi Baylina 2022年9月联合发表的论文 《RapidUp: Multi-Domain Permutation Protocol for Lookup Tables》。

某些标准的密码学原语中包含了大量SNARK-unfriendly运算——如XOR运算。Gabizon等人2020年论文《plookup: A simplified polynomial protocol for lookup tables》,为解决这种SNARK-unfriendly运算,设计的协议中引入了lookup arguments——但是该协议仅适合用于相同的电路。本文的RapidUp协议,通过将grand-product多项式展开为2个具有相同size的(等价)多项式,不受限于相同电路。通过引入selectors,也可以让plookup协议更通用化。

2019年 Plonk 论文中包含了一种协议,用于证明,2个多项式基于某evaluation domain形成的evaluation vector,二者互为permutation。该协议后来进一步扩展为多个多项式,在Plonk主协议中用于证明各circuit gates是正确连接的。

通过构建“grand-product”多项式来实现permutation check。从上层来看,grand-product为所涉及的多项式evaluations的quotient的递增乘积。若该多项式的最后一个evaluation可正确cycle back为1,则可证明原始的evaluations之间互为permutation。

上述协议存在的一个主要问题在于,无法对 对不同的(可能相互关联的) domain的evaluate进行实例化。多项式 f f f g g g之间的permutation check仅适合 对相同的domain H H H进行evaluate 的场景。

本文对基于grand-product的协议 以2种不同方式进行了通用化改进:

  • 1)各多项式可基于不同的domain进行evaluate,各domain甚至可具有不同的size。
  • 2)适合原始evaluations之间相互不是permutation,但包含了该permutation的场景——即适合original values不是permute "in its whole"的情况。

如,具有集合 f = 5 , 4 , 2 , 5 f=\\5,4,2,5\\ f=5,4,2,5(某多项式基于domain size为 m m m的evaluation集合)以及 g = 9 , 7 , 5 , 8 , 5 , 1 , 6 , 9 , 4 g=\\9,7,5,8,5,1,6,9,4\\ g=9,7,5,8,5,1,6,9,4(某多项式基于domain size为 n n n的evaluation集合),二者当前不存在直接的permutation关系。

本文协议,可证明 f f f的某特定子集 f ′ f' f,与, g g g的某特定子集 g ′ g' g,二者存在permutation关系。本例中, f ′ = 5 , 4 , 5 , g ′ = 5 , 5 , 4 f'=\\5,4,5\\,g'=\\5,5,4\\ f=5,4,5g=5,5,4,二者permutation关系为 ( 1 , 3 , 2 ) (1,3,2) (1,3,2)。【注意, f , g f,g f,g的长度可不同,但 f ′ , g ′ f',g' f,g的长度是相同的。】

本协议的核心思想是,将grand-product多项式 Z Z Z“切分”为2个多项式 Z f , Z g Z_f,Z_g Zf,Zg——代表 Z Z Z中的2个quotient member。若在某evaluation point,多项式 Z Z Z的值为 A / B A/B A/B,则在某(可能不同的)evaluation point,多项式 Z f , Z g Z_f,Z_g Zf,Zg的值分别为 A , B A,B A,B。根据 Z Z Z的结构,这2个多项式的最后一个evaluation值要求是相等的。

为定义该多项式,需额外引入2个selectors集合 f s e l , g s e l f^sel,g^sel fselgsel

  • 这些selectors可选择每个 f , g f,g f,g中的indexes,以包含在待permutation check的子集 f ′ , g ′ f',g' f,g中。
  • 若某index被选中,相应selector值为1,否则为0。仍以上例为例,有 f s e l = 1 , 1 , 0 , 1 , g s e l = 0 , 0 , 1 , 0 , 1 , 0 , 0 , 0 , 1 f^sel=\\1,1,0,1\\,g^sel=\\0,0,1,0,1,0,0,0,1\\ fsel=1,1,0,1,gsel=0,0,1,0,1,0,0,0,1

至此,基于不同的evaluation domain, Z f , Z g Z_f,Z_g Zf,Zg的evaluation值定义为:

  • Z f → 1 , ( 5 + γ ) , ( 5 + γ ) ( 4 + γ ) , ( 5 + γ ) ( 4 + γ ) , ( 5 + γ ) ( 4 + γ ) ( 5 + γ ) Z_f\\rightarrow \\1,(5+\\gamma),(5+\\gamma)(4+\\gamma), (5+\\gamma)(4+\\gamma),(5+\\gamma)(4+\\gamma)(5+\\gamma)\\ Zf1,(5+γ),(5+γ)(4+γ),(5+γ)(4+γ),(5+γ)(4+γ)(5+γ)
  • Z g → 1 , 1 , 1 , ( 5 + γ ) , ( 5 + γ ) , ( 5 + γ ) ( 5 + γ ) , ( 5 + γ ) ( 5 + γ ) , ( 5 + γ ) ( 5 + γ ) , ( 5 + γ ) ( 5 + γ ) , ( 5 + γ ) ( 5 + γ ) ( 4 + γ ) Z_g\\rightarrow \\1,1,1,(5+\\gamma),(5+\\gamma),(5+\\gamma)(5+\\gamma), (5+\\gamma)(5+\\gamma), (5+\\gamma)(5+\\gamma), (5+\\gamma)(5+\\gamma),(5+\\gamma)(5+\\gamma)(4+\\gamma)\\ Zg1,1,1,(5+γ),(5+γ),(5+γ)(5+γ),(5+γ)(5+γ),(5+γ)(5+γ),(5+γ)(5+γ),(5+γ)(5+γ)(4+γ)

其中 γ \\gamma γ为基于底层域的随机值。

以上2个多项式的最后一个值为相同的product value。相应的思想为:当且仅当 Z f , Z g Z_f,Z_g Zf,Zg 最后一个evaluate值相同时,subset 5 , 4 , 5 ⊂ f i \\5,4,5\\\\subset \\f_i\\ 5,4,5fi 也为subset in g i \\g_i\\ gi

1.1 用例:Lookup Tables

本协议可用于lookup tables场景。
lookup技术可用于reduce某些标准密码学原语的原生SNARK表示(如Keccak-256)。从上层来看,该技术是通过将某特定“SNARK-unfriendly”运算的所有可能输入/输出组合 预计算出 一个lookup table。不同于以某SNARK语言来表示这些运算,Prover只需声称相应的witness在相应的查找表中。

plookup 协议提供了一种简单高效的实现方案。存在的主要的问题在于在lookup中包含了vectors——witness-related的 f f f 与 table-related t t t 之间需具有相近的length——如,可用于满足 ∣ t ∣ = ∣ f ∣ + 1 |t|=|f|+1 t=f+1的2个向量 f , t f,t f,t之间。在2022年论文《PlonKup: Reconciling PlonK with plookup》中,以不同的方法(即填充)来调整该限制。同时,当 f , t f,t f,t具有相同的length时,在PlonKup论文中可构建具有更少约束的更简单的lookup协议。

但是,仍然存在某些场景, f , t f,t f,t并不具有相近的长度。某传统场景中, ∣ f ∣ |f| f可为small power of two,而 t t t可为big power of two。之前的协议就存在瓶颈了——需对 f f f的长度进行调整,如对 f f f以上是关于RapidUp: Multi-Domain Permutation Protocol for Lookup Tables学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

A Blockchain-based Multi-domain Authentication Scheme for Conditional Privacy Preserving in车联网 论文阅读

如何计算Hits per second

Presto + query.max-memory-per-node 配置

linux内核源码分析之per-CPU

php classe per la validazione del CF e per estrazione data di nascita e sesso

SQL查询中IN语句条件为一个数组如何进行查询?(ASP提示类型不匹配)