1. 引言

Wahby等人2018年论文《Doubly-efficient zkSNARKs without trusted setup》。
代码实现参见:
https://github.com/hyraxZK
视频解说参见:
https://www.youtube.com/watch?v=ScY9Z5tZZKU
https://www.youtube.com/watch?v=yq2AfLlMww0

论文要点:

  • 基于standard cryptographic assumption,无需trusted setup,对Prover和Verifier均具有low communication complexity和low concrete cost的zkSNARKs for NP。
  • Communication为Θ(d⋅log⁡G+nw)\Theta(d\cdot \log G+\sqrt{n_w})Θ(d⋅logG+nw​​),其中d,Gd,Gd,G分别为verifying circuit的depth和width,wnw_nwn​为witness size。
  • 当用于batched statements或者data-parallel statements时,Prover的runtime为linear in the verifying circuit size,Verifier的runtime为sub-linear in the verifying circuit size。两者均具有good constants。
  • 通过使用a new commitment scheme for multilinear polynomials,witness-related communication可reduced,但verifier time会增加。
  • 需要在setup、complexity assumptions、proof size和computational cost之间进行取舍平衡。
  • 基于discrete log assumption,采用Fiat-Shamir heuristic 实现了zkSNARK in the random oracle model,本文称之为Hyrax。
  • 将Hyrax与5种系统(BCCGP-sqrt, Bulletproofs, Ligero, ZKB++和libSTARK)进行了对比。对于modest problem sizes,Hyrax具有smaller proofs,most computationally costly baseline,prover和verifier速度快于5种系统中的3种。

其中5种方案分别为:

  • BCCGP-sqrt:来源于Bootle等人2016年论文《Efficient zero-knowledge arguments for arithmetic circuits in the discrete log setting》。(在Groth [57] 和 Bayer and Groth [6] 的基础上,基于hardness of discrete logarithm,提供了2种ZK argument for Arithmetic Circuit CCC’s satisfiability。第一种proof size为O(M)O(\sqrt{M})O(M​),具有quasi-linear prover and verifier runtime for an AC with MMM multiplications;第二种proof size为O(log⁡M)O(\log M)O(logM) at the cost of concretely longer prover and verifier runtimes。)
  • Bulletproofs:来源于Bünz等人2018年论文《Bulletproofs: Efficient range proofs for confidential transactions》。(在BCCGP-sqrt的基础上进行改进,reduce proof size and runtimes in the log scheme ≈3×\approx 3\times≈3×)
  • Ligero:来源于Ames等人2017年论文《Ligero: Lightweight sublinear arguments without a trusted setup》。(在ZKB++的基础上,使用了更成熟的secure computation protocol,可prove an Arithmetic Circuit CCC’s satisfiability with proof size O(∣C∣)O(\sqrt{|C|})O(∣C∣​),prover和verifier work为quasi-linear in ∣C∣|C|∣C∣。)
  • ZKB++:来源于Chase等人2017年论文《Post-quantum zero-knowledge and signatures from symmetric-key primitives》。(将a secure multi-party computation protocol into a ZK argument,为a ZK argument system for Boolean circuits with no trusted setup from collision-resistant hashes。concretely inexpensive for small circuits,但是costs scale linearly with circuit size。)
  • libSTARK:来源于Ben-Sasson等人2018年论文《Scalable, transparent, and post-quantum secure computational integrity》。(zkSTARKs不需要trusted setup,no public-key cryptography,但是其soundness 基于non-standard conjecture related to Reed-Solomon codes。Both proof size and verifier runtime are logarithmic in circuit size (hundreds of kilobytes and tens of milliseconds, respectively, in practice), and prover runtime is quasi-linear。)

1.1 zero-knowledge proof

A zero-knowledge proof用于convince a verifier of a statement while revealing nothing but its own validity。

  • zero-knowledge proof概念由Goldwasser等人在1989年论文《The knowledge complexity of interactive proof systems》中首次提出。

  • Ben-Or等人1990年论文《Everything provable is provable in zero-knowledge》中指出:
    any problem solvable by an interactive proof (IP) is also solvable by a computational zero-knowledge proof or pefect zero-knowledge argument。
    也就是说,given an interactive proof for any NP-complete problem, one can construct zero-knowledge proofs or arguments for any NP statement。

1.2 本文算法性能表现

本文主要关注的点有:

  • proof应为succinct,sub-linear in the size of the statement and the witness to the statement’s validity;
  • verifier应run in time linear in input plus proof size;
  • prover,given a witness to the statement’s validity,应run in time linear in the cost of the NP verification procedure;
  • 整个scheme应既不需要trusted setup,也不需要common reference string;
  • soundness and zero-knowledge应为statistical或者基于standard cryptographic assumptions。实际上,security in the random oracle model就足够。

本文主要做了以下两方面的改进:

  • 1)在verification procedure中整合了multi-commitment scheme和Schnorr-style proof。
  • 2)设计了一种新的witness commitment scheme,可产生a succinct argument and asymptotically reducing the verifier’s cost associated with the witness。

具体的性能表现为:

1.3 Polynomial commitment scheme

  • Polynomial commitment scheme 首次由Kate等人2010年论文《Constant-size commitments to polynomials and their applications》中提出,并基于pairing assumption 构建了单变量polynomial commitment。
  • Papamanthou等人2013年论文《Signatures of correct computation》、Zhang等人2017年论文《vSQL: veriifying arbitrary SQL queries over dynamic outsourced databases》、Zhang等人2017年论文《A zero-knowledge version of vSQL》、Zhang等人2018年论文《vRAM: Faster verifiable RAM with program-independent preprocessing》等论文中,将其扩展为多变量polynomial commitment。
  • Libert等人2016年论文《Functional Commitment Schemes: From Polynomial Commitments to Pairing-Based Accumulators》中构建了Functional Commitment (FC) for a linear functions based on constant-size assumptions in composite order groups endowed with a bilinear map。设置其challenge为x⃗=(1,x,⋯,xn−1)\vec{x}=(1,x,\cdots,x^{n-1})x=(1,x,⋯,xn−1)即可实现polynomial commitment。
  • Fujisaki等人1997年论文《Statistical zero knowledge protocols to prove modular polynomial relations》中 give a construction for polynomial evaluation based on the RSA problem that can be immediately adapted to polynomial commitment。
  • Bootle等人2017年论文《Linear-time zero-knowledge proofs for arithmetic circuit satisfiability》 和 Bootle等人2018年论文《Efficient batch zero knowledge arguments for low degree polynomials》中基于discrete log assumption构建了单变量polynomial commitment。本文主要在此基础上,将其扩展为了multilinear polynomials。同时,Bootle等人2018年论文《Efficient batch zero knowledge arguments for low degree polynomials》中还 give a framework for expressing simple relations between commitments and field elements。

1.4 一些定义

  • Arithmetic circuit (AC) CCC:
    由加法门和乘法门组成,每个门最多由2个输入fan-in,所有计算基于finite field F\mathbb{F}F。CCC为分层设计,具有depth ddd,input x⃗\vec{x}x with length ∣x∣|x|∣x∣。
    目的是evaluate CCC on input x⃗\vec{x}x。在interactive proof or argument中,prover发送yyy,声称y=C(x⃗)y=C(\vec{x})y=C(x)并提供相应的证明。
    本文的目的是为这种arithmetic circuit satisfiability problem提供efficient protocol。
    Let C(⋅,⋅)C(\cdot,\cdot)C(⋅,⋅)为layered arithmetic circuit of fan-in two。已知输入x⃗\vec{x}x和输出yyy,目的是确认是否存在 witness w⃗\vec{w}w,使得 C(x⃗,w⃗)=yC(\vec{x},\vec{w})=yC(x,w)=y 成立。相应的witness relation可表示为:R(x⃗,y)={w⃗:C(x⃗,w⃗)=y}R_(\vec{x},y)=\{\vec{w}:C(\vec{x},\vec{w})=y\}R(​x,y)={w:C(x,w)=y}。

  • Interactive arguments and proofs:

  • Zero-knowledge (ZK):

  • Witness-extended emulation:

  • Generalized special soundness:

  • Collection of non-interactive commitment:

  • Additive homomorphism加法同态属性:

2. Arithmetic circuit evaluation problem

主要的研究有:(Arithmetic circuit CCC with depth ddd, input xxx, output yyy。)

  • 【54】Goldwasser等人2015年论文《Delegating computation: Interactive proofs for muggles》中主要针对boolean circuit with depth ddd and input length nnn。其Verifier runs in time n⋅poly(d,log⁡(n))n\cdot poly(d,\log(n))n⋅poly(d,log(n)) and space O(log⁡(n))O(\log(n))O(log(n)),communication complexity为poly(d,log⁡(n))poly(d,\log(n))poly(d,log(n)),Prover runs in time poly(n)poly(n)poly(n)。
  • 【37】【107】Cormode等人2012年论文《Practical verified computation with streaming interactive proofs》、Vu等人2013年论文《A hybrid architecture for interactive verifiable computation》中在【54】的基础上进行了改进,giving O(∣C∣log⁡∣C∣)O(|C|\log|C|)O(∣C∣log∣C∣) prover and O(∣x∣+∣y∣+dlog⁡∣C∣)O(|x|+|y|+d\log|C|)O(∣x∣+∣y∣+dlog∣C∣) verifier runtimes, for AC CCC with depth ddd, input xxx, and output yyy。
  • 【102】Thaler 2013年论文《Time-optimal interactive proofs for circuit evaluation》,针对CCC 为data parallel,即包含NNN个相同的sub-computations run on different inputs,可称其为sub-AC of CCC(sub-AC的width为GGG,有∣C∣=d⋅N⋅G|C|=d\cdot N\cdot G∣C∣=d⋅N⋅G),可进一步优化,将Prover runtimet由O(∣C∣log⁡∣C∣)O(|C|\log|C|)O(∣C∣log∣C∣)降为O(∣C∣log⁡G)O(|C|\log G)O(∣C∣logG)。
  • 【109】Wahby等人2017年论文《 Full accounting for verifiable outsourcing》中介绍了Giraffe算法,可将Prover runtime降为O(∣C∣+d⋅G⋅log⁡G)O(|C|+d\cdot G\cdot \log G)O(∣C∣+d⋅G⋅logG),由于∣C∣=d⋅N⋅G|C|=d\cdot N\cdot G∣C∣=d⋅N⋅G,当N≥log⁡GN\geq \log GN≥logG时,Prover runtime可进一步降为O(∣C∣)O(|C|)O(∣C∣)。即for sufficient data parallelism, the prover’s runtime is just a constant factor slower than evaluating the circuit gate-by-gate without providing any proof of correctness。
  • 【35】Chiesa等人2017年论文《A zero knowledge sumcheck and its applications》在Giraffe算法的基础上进行了优化,称为Gir++算法。
  • 本文在Gir++算法的基础上进行了简单调整。假设N,GN,GN,G均为powers of 2,设置bN=log⁡2N,bG=log⁡2Gb_N=\log_2N,b_G=\log_2GbN​=log2​N,bG​=log2​G。在CCC的每一层,每个gate都标记为 a pair (i,j)∈{0,1}bN×{0,1}bG(i,j)\in\{0,1\}^{b_N}\times\{0,1\}^{b_G}(i,j)∈{0,1}bN​×{0,1}bG​。CCC的每层序号标记为000到ddd,实际执行时是从ddd到000,即000对应为output层,ddd对应为input层。每层iii对应有一个evaluator function Vi:{0,1}bN×{0,1}bG→FV_i:\{0,1\}^{b_N}\times\{0,1\}^{b_G}\rightarrow \mathbb{F}Vi​:{0,1}bN​×{0,1}bG​→F 用于map a gate’s label to the output of that gate when CCC is evaluated on input xxx。比如,V0(i,j)V_0(i,j)V0​(i,j)为jjj-th output of the iii-th sub-AC,Vd(i,j)V_d(i,j)Vd​(i,j)为为jjj-th input to the iii-th sub-AC。
    从更宏观层面看,在circuit的每一层,protocol都是以迭代方式运行:
  • Prover发送声称的outputs y⃗\vec{y}y​ of CCC(如 all the claimed evaluations of V0V_0V0​);
  • 第一次迭代:reduce the claim about V0V_0V0​ to a claim about V1V_1V1​(若Verifier 信任 the former claim,则也信任 the latter。但是Verifier 无法直接验证 the claim about V1V_1V1​,因为验证过程中所有evaluating all of the gates in CCC other than the outputs themselves。);
  • 第二次迭代:reduce the claim about V1V_1V1​ to a claim about V2V_2V2​。
  • ⋯\cdots⋯
  • 以此类推,直到reduce to a claim about VdV_dVd​ (此时即为inputs to CCC),此时Verifier可直接check。

为了更好的描述how a reduction from a claim about ViV_iVi​ to a claim about Vi+1V_{i+1}Vi+1​ is performed,引入了multilinear extensions,the sum-check protocol和wiring predicates概念。

  • Multilinear extensions定义:
    a function f:{0,1}l→Ff:\{0,1\}^l\rightarrow \mathbb{F}f:{0,1}l→F 为具有lll 个变量的多项式,若对于所有的x⃗∈{0,1}l\vec{x}\in\{0,1\}^lx∈{0,1}l都有g(x⃗)=f(x⃗)g(\vec{x})=f(\vec{x})g(x)=f(x)【每个变量xix_ixi​的取值仅能为0或1】,则ggg可称为an extension of fff。任意这样的function fff,都有唯一的multilinear extension (MLE)——a multilinear polynomial——表示为f~\tilde{f}f~​。
    任意的vector z⃗∈Fm\vec{z}\in\mathbb{F}^mz∈Fm,其中m=2lm=2^lm=2l,可将该向量理解为a function z:{0,1}l→Fz:\{0,1\}^l\rightarrow\mathbb{F}z:{0,1}l→F 用于mapping indices to vector entries(其实就是每个变量xix_ixi​的取值仅能为0或1,所有x1,⋯,xlx_1,\cdots,x_lx1​,⋯,xl​的组合有2l2^l2l个,对应的多项式值即为2l2^l2l个),使用z~\tilde{z}z~来表示zzz的MLE。

  • sum-check protocol定义:
    Lund等人1992年论文《Algebraic methods for interactive proof systems》中描述的sum-check interactive proof为:

    Goldwasser等人2015年论文《Delegating computation: Interactive proofs for muggles》中描述的interactive sum-check protocol为:


    ggg为有限域F\mathbb{F}F内,具有 lll 个变量的多项式 ,degi(g)deg_i(g)degi​(g)表示the degree of ggg in variable iii。The sum-check protocol is an interactive proof that allows PPP to convince VVV of a claim about the value of ∑x⃗∈{0,1}lg(x⃗)\sum_{\vec{x}\in\{0,1\}^l}g(\vec{x})∑x∈{0,1}l​g(x) by reducing it to a claim about the value of g(r⃗)g(\vec{r})g(r),其中r⃗∈Fl\vec{r}\in\mathbb{F}^lr∈Fl are randomly chosen by VVV。存在lll rounds,且VVV的run time 为 O(∑i=1ldegi(g))O(\sum_{i=1}^{l}deg_i(g))O(∑i=1l​degi​(g)) + the cost of evaluating g(r⃗)g(\vec{r})g(r)。

  • Wiring predicates:
    用于capture the wiring information of the sub-ACs。
    定义wiring predicate addi:{0,1}3bG←{0,1}add_i:\{0,1\}^{3b_G}\leftarrow\{0,1\}addi​:{0,1}3bG​←{0,1},其中addi(g,h0,h1)add_i(g,h_0,h_1)addi​(g,h0​,h1​)返回1值,若:
    – a) within each sub-AC, gate ggg at layer i−1i-1i−1 is an add gate;
    – b) and the left and right inputs of ggg are respectively h0h_0h0​ and h1h_1h1​ at layer iii。
    否则输出0值。
    multimult_imulti​对乘法门的定义类似。
    定义equality predicate eq:{0,1}2bN←{0,1}eq:\{0,1\}^{2b_N}\leftarrow\{0,1\}eq:{0,1}2bN​←{0,1},eq(a,b)=1eq(a,b)=1eq(a,b)=1 iff a=ba=ba=b。

3. Pedersen commitment相关

3.1 Pedersen commitment scheme定义


Pedersen commitment scheme 为a non-interactive commitment scheme assuming the hardness of the discrete logarithm problem in G\mathcal{G}G。

3.2 proof of opening

3.3 proof of commitment to the same value


注意,博客 基于Sigma protocol实现的零知识证明protocol集锦 2.6节的Protocol 6. Equality of message in 2 Pedersen commitment 证明方法则略有不同 (此处的proof size更精简)

3.4 proof of product


4. Dot-prodcut proof protocol

基本内容为:

  • public info: a⃗=(a1,⋯,an)∈Fn\vec{a}=(a_1,\cdots,a_n)\in\mathbb{F}^na=(a1​,⋯,an​)∈Fn、multi-commitment ξ=Com(x⃗;rξ)\xi=Com(\vec{x};r_{\xi})ξ=Com(x;rξ​)和scalar commitment τ=Com(y;rτ)\tau=Com(y;r_{\tau})τ=Com(y;rτ​)。
  • private info: x⃗=(x1,⋯,xn)∈Fn\vec{x}=(x_1,\cdots,x_n)\in\mathbb{F}^nx=(x1​,⋯,xn​)∈Fn、y∈Fy\in\mathbb{F}y∈F、rξr_{\xi}rξ​ 和 rτr_{\tau}rτ​。
  • relation: y=<a⃗,x⃗>y=<\vec{a},\vec{x}>y=<a,x>。

证明的基础为:
<z⃗,a⃗>=<cx⃗+d⃗,a⃗>=c<x⃗,a⃗>+<d⃗,a⃗>=cy+<d⃗,a⃗><\vec{z},\vec{a}>=<c\vec{x}+\vec{d},\vec{a}>=c<\vec{x},\vec{a}>+<\vec{d},\vec{a}>=cy+<\vec{d},\vec{a}><z,a>=<cx+d,a>=c<x,a>+<d,a>=cy+<d,a>

4.1 ZK vector dot-product proof

直观的证明过程如下,需要的proof size为O(n)。O(n)。O(n)。
详细的证明思路为:

4.2 dot-product proof with Bulletproofs

2018年论文《Bulletproofs: Short Proofs for Confidential Transactions and More》中针对的场景为:【未引入随机值rξr_{\xi}rξ​来对commitment进行hiding操作。】

  • public info: commitment P=g⃗a⃗h⃗b⃗P=\vec{g}^{\vec{a}}\vec{h}^{\vec{b}}P=g​ahb、c∈Fc\in\mathbb{F}c∈F 和 generators g,hg,hg,h。
  • private info: a⃗=(a1,⋯,an)∈Fn\vec{a}=(a_1,\cdots,a_n)\in\mathbb{F}^na=(a1​,⋯,an​)∈Fn、b⃗=(b1,⋯,bn)∈Fn\vec{b}=(b_1,\cdots,b_n)\in\mathbb{F}^nb=(b1​,⋯,bn​)∈Fn。
  • relation: c=<a⃗,b⃗>c=<\vec{a},\vec{b}>c=<a,b>。

如博客 Proofs for Inner Pairing Products and Applications 学习笔记 4.2节所述,Bulletproofs论文中构建的commitment scheme为CM((g⃗,h⃗);(a⃗,b⃗))=g⃗a⃗h⃗b⃗u<a⃗,b⃗>CM((\vec{g},\vec{h});(\vec{a},\vec{b}))=\vec{g}^{\vec{a}}\vec{h}^{\vec{b}}u^{<\vec{a},\vec{b}>}CM((g​,h);(a,b))=g​ahbu<a,b>,再对该scheme采用二分法利用迭代进行证明。

本文针对的场景为:【引入了随机值rξ、rτr_{\xi}、r_{\tau}rξ​、rτ​来对commitment进行hiding操作。】

  • public info: a⃗=(a1,⋯,an)∈Fn\vec{a}=(a_1,\cdots,a_n)\in\mathbb{F}^na=(a1​,⋯,an​)∈Fn、multi-commitment ξ=Com(x⃗;rξ)\xi=Com(\vec{x};r_{\xi})ξ=Com(x;rξ​)和scalar commitment τ=Com(y;rτ)\tau=Com(y;r_{\tau})τ=Com(y;rτ​)。
  • private info: x⃗=(x1,⋯,xn)∈Fn\vec{x}=(x_1,\cdots,x_n)\in\mathbb{F}^nx=(x1​,⋯,xn​)∈Fn、y∈Fy\in\mathbb{F}y∈F、rξr_{\xi}rξ​ 和 rτr_{\tau}rτ​。
  • relation: y=<a⃗,x⃗>y=<\vec{a},\vec{x}>y=<a,x>。

注意:根据博客 Halo: Recursive Proof Composition without a Trusted Setup 学习笔记 第3节“Polynomial commitments”指出的,prooflog−of−dot−prodproof_{log}-of-dot-prodprooflog​−of−dot−prod的实现存在Prover作弊的情况。需要将bullet−reducebullet-reducebullet−reduce算法中的ggg改为g=gαg=g^{\alpha}g=gα,以及做如下调整:(与Bulletproofs中的Protocol 1类似)
– Verifier:收到commitment ξ=Com(x⃗;rξ),τ=Com(y;rτ)\xi=Com(\vec{x};r_{\xi}),\tau=Com(y;r_{\tau})ξ=Com(x;rξ​),τ=Com(y;rτ​)
– Verifier:random challenge α←ZqG\alpha\leftarrow\mathbb{Z}_{q \mathcal{G}}α←ZqG​,将α←ZqG\alpha\leftarrow\mathbb{Z}_{q \mathcal{G}}α←ZqG​发送给Prover。
– Prover和Verifer:计算g=gαg=g^{\alpha}g=gα, Υ’=ξ⊙τα=hrΥ⊙gy⊙⨀i=1ngixi\Upsilon’=\xi\odot \tau^{\alpha}=h^{r_{\Upsilon}}\odot g^y\odot \bigodot_{i=1}^ng_i^{x_i}Υ’=ξ⊙τα=hrΥ​⊙gy⊙⨀i=1n​gixi​​,其中rΥ=αrτ+rξr_{\Upsilon}=\alpha r_{\tau}+r_{\xi}rΥ​=αrτ​+rξ​。
– 调用bullet-reduce。。。




5. 基于Giraffe和Gir++算法构建的Arithmetic circuit zk argument 算法

待补充。。。
主要基于Wahby等人2017年论文《Full accounting for verifiable outsourcing》和 Chiesa等人2017年论文《A zero knowledge sumcheck and its applications》。

Hyrax: Doubly-efficient zkSNARKs without trusted setup学习笔记相关推荐

  1. Customizable constraint systems for succinct arguments学习笔记(2)

    微软研究中心Srinath Setty.a16z crypto research 和 Georgetown University Justin Thaler.Carnegie Mellon Unive ...

  2. qesa Efficient zero-knowledge arguments in the discrete log setting 学习笔记

    1. 引言 Hoffmann等人 2019年论文 <Efficient zero-knowledge arguments in the discrete log setting >. 相应 ...

  3. Halo——zcash新的零知识证明机制,无需Trusted Setup

    Halo zcash新的零知识证明机制,无需Trusted Setup过程. 具体可参见论文<Halo: Recursive Proof Composition without a Truste ...

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

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

  5. Marlin:Preprocessing zkSNARKs with Universal and Updatable SRS学习笔记

    1. 引言 Chiesa等人2019年论文<Marlin:Preprocessing zkSNARKs with Universal and Updatable SRS>. 相关代码实现有 ...

  6. setup.s 分析—— Linux-0.11 学习笔记(二)

    更新记录 版本 时间 修订内容 1.0 2018-4-14 增加了"获取显示模式"这一节,AL取值的表格 标题: setup.s 分析-- Linux-0.11 学习笔记(二) 老 ...

  7. Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(3)

    1. 前言 在博客 Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(1)中介绍了Shuffle argument总 ...

  8. 论文学习笔记(1):Efficient L0 resampling of point sets

    论文学习笔记(1):Efficient L0 resampling of point sets 本文出自2019年"Computer Aided Geometric Design" ...

  9. Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记

    1. 引言 前序博客有: Lurk--Recursive zk-SNARKs编程语言 rank-1 constraint system R1CS Spartan中 Vitalik R1CS例子 SNA ...

  10. Fast Reed-Solomon Interactive Oracle Proofs of Proximity学习笔记

    1. 引言 Eli Ben-Sasson等人2018年论文<Fast Reed-Solomon Interactive Oracle Proofs of Proximity>.该论文又俗称 ...

最新文章

  1. 谁是“艾灵”?是腾讯的真国风 AI 虚拟人!
  2. C 语言中的 feof()函数
  3. ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案
  4. brew 安装mysql5.6_mac使用brew安装mysql的坑
  5. Markdown Test
  6. 算法:Regular Expression Matching(正则表达式匹配)
  7. VS2017配置opencv-c++
  8. 手机号码检测开通微信查询方法
  9. 使用U盘在虚拟机中安装系统
  10. 基于机智云物联网平台4孔插座开源
  11. IRM电源维修XRM65P50X3402高压发生器维修
  12. 以下关于android应用程序的目录结构,以下关于Android应用程序的目录结构描述中,错误的是哪个()...
  13. xp 无法关闭计算机,xp系统关机时一直显示正在关机状态却无法关键的解决方法...
  14. 百慕大永中为何有权继续开发集成Office?
  15. php 抓取弹幕,php实现斗鱼弹幕,一起来欣赏弹幕吧~
  16. 轻量级单片机命令行交互项目,全部开源
  17. 求助Fatal error: Class 'think\App' not found in C:\``thinkphp\start.php on line 19Fatal error: Class '
  18. 信息学奥赛初赛题目讲解(2)
  19. Appium无线连接手机(一)
  20. 过程/数据矩阵(U/C矩阵)

热门文章

  1. linux 安装TeamViewer
  2. 传智播客asp.net基础视频免费分享
  3. 电池SOC预估存在哪些难题以及常用方法
  4. GitHub的简介翻译(草稿)
  5. 计算机视觉中的论文常见单词总结
  6. 计算前复权和后复权价格?A股复权因子的使用
  7. python 数据填充
  8. 如何以2万美元出售你的软件
  9. 建筑竞赛获奖项目解析国外教程
  10. python语法错误检查_Python之静态语法检查