零知识证明(ZKP)
文章平均质量分 85
zkp能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。
孙绿如叶~
这个作者很懒,什么都没留下…
展开
-
Plonky2 = Plonk + FRI
Plonky2由Polygon Zero团队开发,实现了一种快速的递归SNARK。原创 2023-12-08 16:41:24 · 1071 阅读 · 0 评论 -
Mental Poker- Part 2
在part-1中,我们梳理了去中心纸牌游戏所面临的挑战,也介绍了一种改进的Barnett-Smart协议,part-2将深入了解该协议背后涉及的算法。原创 2023-09-13 15:12:28 · 229 阅读 · 0 评论 -
Mental Poker- Part 1
扑克是一种牌桌上的游戏,但如果在没有物理扑克的互联网上,没有一个可信第三方维护公平,且参与玩家皆是不诚实的,这个时候怎么来一场公平的扑克游戏?这个问题由Rivest, Shamir and Adleman于1979年提出,并将这个问题称为“Mental Poker”,下面是摘自原文的一段关于Mental Poker的描述:自此大量的解决方案涌现出来,但都不经打,主要因为这些方案计算和通信成本太大,这对于一个实时游戏来说是无法接受的。原创 2023-09-06 09:32:59 · 245 阅读 · 0 评论 -
R1CS和relaxed R1CS(二)
R1CS原创 2023-05-25 14:56:16 · 1007 阅读 · 0 评论 -
R1CS和relaxed R1CS(一)
R1CS和relaxed R1CS原创 2023-05-24 19:42:05 · 1009 阅读 · 0 评论 -
Groth16
Groth16于16年被提出,是一种在证明大小(证明只包含三个点)和验证时间上都具有很大优势的zkSNARK算法。zkSNARK通常需要进行可信设置(Setup),Groth16也不例外,然而Groth16的setup生成的公共参考串(CRS)不是通用的,即由该初始设置生成的CRS只能针对特定电路,而不能直接被用于任意电路的零知识证明之中,这也是Groth16实际应用中比较鸡肋的地方。原创 2023-05-09 15:44:59 · 1288 阅读 · 0 评论 -
Poseidon Hash
之前我们介绍了zk友好的哈希函数,今天我们介绍另一种zk友好的哈希函数PoseidonPoseidon采用 sponge/squeeze 结构,该结构吸纳万物并生成固定大小的输出,内部有一个状态Ss1s2...st,初始状态为0,状态S可分为外部状态和内部状态,即rrate和ccapacityps:内部状态是不透明的,也不是输出的一部分,这对安全至关重要。原创 2023-04-19 15:01:03 · 753 阅读 · 0 评论 -
sum-check protocol
sum-check协议原创 2023-03-09 17:32:25 · 791 阅读 · 1 评论 -
Anemoi hash:一种SNARK-friendly的哈希函数
随着zk的兴起,出现了一大批zk友好且面向算术化(Arithmetization-Oriented)的哈希函数,如MiMC-Hash, Rescue–Prime, Poseidon等等,本文要介绍的Anemoi也是一种zk友好且面向算术化的哈希函数,与其他哈希函数相比,Anemoi具有以下特点:可以被用于Groth16, Plonk等证明系统中包含对特定应用的优化,如merkle tree的证明性能优越,参见下表。原创 2022-11-25 17:31:58 · 781 阅读 · 0 评论 -
Zerocash:Decentralized Anonymous Payments from Bitcoin
Zerocash是在比特币上增加一套匿名支付机制得到的货币,这套匿名支付机制叫做DAP(Decentralized Anonymous Payment )方案,DAP可以搭建在任何基于账本的加密数字货币上层,提供一套匿名机制。zcash系统利用zkSnark构造了去中心化的”匿名池“ ,通过铸币(Mint)和浇铸(Pour)完成匿名操作,所谓铸币过程是指用户使用一定量的币兑换等额的承诺(匿名货币),浇铸过程是指用户通过零知识证明的方式进行匿名货币之间的转账,并且在转账过程中还可以进行赎回操作。ste原创 2022-05-26 08:39:32 · 2195 阅读 · 0 评论 -
zkSnarks:QAP上构造零知识证明
协议一:抽样验证:prover向验证证明它知道一个d阶多项式verifier:选取随机数s,发送给proverprover:计算h(x) = P(x)/t(x) ,公开p(s) 、h(s)。verifier:验证等式p(s) = t(s) h(s)是否成立该证明了prover知道一个整除t(x)的多项式,但存在以下问题:prover 知道s,可以计算出t(s), 随机选取h(s) ,并构造p(s) = t(s) h(s)prover 知道点(s, t® h®), 可以构造原创 2022-03-23 15:34:43 · 1031 阅读 · 0 评论 -
zkSnarks:证明问题到QAP的转换
许多待证明的问题可以表示为多项式函数的形式,而一个多项式函数可以转化为一个算术电路,已经有文献证明算术电路可以转换成QAP问题,基于QAP问题可以构造zkSNARKs,所以基于QAP问题构造zkSNARKs的第一步是将待证明问题转换成QAP问题,本文主要讲解如何将待证明问题转换成QAP问题。QAP定义:给一系列多项式以及一个目标多项式,是否能根据这一系列的多项式,求得它们的一个线性组合,刚好可以整除目标多项式,如下描述,给定一个解{ai}i=0−>n\{a_i\}_{i=0->n}{ai}原创 2021-11-04 16:57:04 · 1263 阅读 · 5 评论 -
零知识证明框架:gnark
一. 零知识证明的一般构造步骤zk-SNARKs是一种新颖的零知识证明,一般构造流程图如下,首先将一个NP问题拍平(Flatten)构成电路(若干个乘法门/加法门构成),在电路的基础上构造约束,也就是R1CS,有了约束就可以把NP问题抽象成QAP问题。有了QAP问题的描述,就可以在QAP上构建zkSNARKs。二. gnarkgnark是consenSys开发的一个zkSARNK实现,采用Go语言,目前支持groth16,github地址:https://github.com/ConsenSys/g原创 2021-10-14 11:42:21 · 2001 阅读 · 5 评论