Efficient Zero-Knowledge Arguments for Arithmetic Circuits in the Discrete Log Setting学习笔记-程序员宅基地

技术标签: 零知识证明  

1. 引言

Bootle和Groth等人2016年论文《Efficient Zero-Knowledge Arguments for Arithmetic Circuits in the Discrete Log Setting》。

在本论文中,主要为 (只有加法门和乘法门的) arithmetic circcuit satisfiability 提供了一种零知识证明算法,具有的communication complexity为 O ( log ⁡ n ) O(\log n) O(logn),其中 n n n为circuit size;具有的round complexity也为 O ( log ⁡ n ) O(\log n) O(logn)。且对于所有gates均为 2 fan-in的arithmetic circuit,Prover和Verifier的computation complexity均为 O ( n ) O(n) O(n)。该算法无需trusted setup,仅需基于discrete logarithm assumption in prime order groups即可。

在该零知识证明算法中,核心内容为:

  • inner product 零知识证明算法。

该inner product 零知识证明算法,具有的communication complexity为 O ( log ⁡ n ) O(\log n) O(logn),round complexity为 O ( log ⁡ n ) O(\log n) O(logn),Prover和Verifier的computation complexity均为 O ( n ) O(n) O(n)

除此之外,还提供了一种polynomial commitment算法,用于reveal the evaluation at an arbitrary point in a verifiable manner。使用该polynomial commitment算法,可将Groth 2009年论文《Linear Algebra with Sub-linear Zero-Knowledge Arguments》中的constant round arithmetic circuit 零知识证明算法的communication complexity 由 O ( n ) O(\sqrt{n}) O(n )进一步优化降低为 O ( log ⁡ n ) O(\log n) O(logn)。(可参见博客 Linear Algebra with Sub-linear Zero-Knowledge Arguments学习笔记

零知识证明算法可广泛用于authentication protocol, multi-parity computation, encryption primitives, electronic voting systems和verifiable computation protocols。
零知识证明算法应具有如下属性:

  • Completeness:A prover with a witness w w w for u ∈ L u\in L uL can convince the verifier of this fact.
  • Soundness:A prover cannot convince a verifier when u ∉ L u\notin L u/L.
  • Zero-knowledge:The interaction should not reveal anything to the verifier except that u ∈ L u\in L uL. In particular, it should not reveal the prover’s witness w w w.

[Gro09b] Groth 2009年论文《Linear Algebra with Sub-linear Zero-Knowledge Arguments》中各算法性能表现为:
在这里插入图片描述
上图Arithmetic circuit constant round 零知识证明算法中,需要7 moves,具有square root communication complexity in the total number of gates。在该算法中,Prover需commits to all the wires using homomorphic multicommitments, 对于加法门可利用同态属性来verify,对于乘法门可利用product argument来verify。

本文在[Gro09b]算法的基础上,分为两大步来改进:
1)首先实现5 moves,communication complexity为square root的argument:

  • 避免使用[Gro09b]中的generic reductions to linear algebra statements,可由7 moves降为5 moves;
  • 通过同时处理一系列的Hadamard products和linear relations,可去除argument中加法门的communication cost,comminication complexity 由 O ( n a d d + n m u l ) O(\sqrt{n_{add}+n_{mul}}) O(nadd+nmul )降为 O ( n m u l ) O(\sqrt{n_{mul}}) O(nmul )(其中 n a d d + n m u l n_{add}+n_{mul} nadd+nmul代表total number of gates,而 n m u l n_{mul} nmul为multiplication gates的数量。)。
  • 同时还提出了一种polynomial commitment 零知识证明算法,其communication complexity为 O ( d ) O(\sqrt{d}) O(d ),其中 d d d为polynomial degree。

2)其次,在1)的基础上,进一步压缩communication complexity:

  • 在1)算法中,仍然具有communication complexity O ( n m u l ) O(\sqrt{n_{mul}}) O(nmul )。原因是在第一轮Prover需要commit to all circuit wires using 3 m 3m 3m commitments to n n n elements each,其中 m n = N mn=N mn=N 为multiplication gate数量的上线。而在最后一轮当收到challenge后,Prover open one commitment that can be constructed from the previous ones and the challenge。当设置 m ≈ n m\approx n mn时,最小communication complexity即为 O ( N ) O(\sqrt{N}) O(N )
    本文将最后一轮的opening step替换为了an argument of knowledge of the opening values,利用Pedersen multicommitments的同态属性,将该argument实现为an argument of knowledge of openings of two homomorphic commitments,satisfying an inner product relation。该inner product argument通过借助递归方法,其communication complexity为 O ( log ⁡ n ) O(\log n) O(logn),其中 n n n为vector size。借助该inner product argument,其最终实现的arithmetic circuit satisfiability argument的communication也为logarithmic。

将本文最终实现的5 moves, O ( log ⁡ n ) O(\log n) O(logn) communication argument算法与Pinocchio算法([PHGR13] 2013年Parno等人论文 Pinocchio: Nearly practical verifiable computation)进行对比:(Pinocchio为使用的verifiable computation scheme,允许constrained client将a function的computation 外包给 a powerful worker,同时能高效验证该worker输出的function运算结果是否正确。Pinocchio采用quadratic arithmetic programs,为arithmetic circuits的generalisation,可以实现比本地直接计算更快的function verification。)

  • 本文算法的verification虽然不够快,但是在基于更简单的assumption的基础上,具有更快的prover computation。
    在这里插入图片描述

1.1 相关研究工作

以下为对当前最高效的基于discrete logarithm assumption的zero-knowledge arguments的性能对比:
在这里插入图片描述
由上图可知:

1.2 polynomial commitment

  • Kate等人2010年论文《Constant-size commitments to polynomials and their applications》中提供了a protocol to commit to polynomial and then evaluate it at a given point in a verifiable way。该算法仅需a constant number of commitments,但是其security依赖于pairing assumption。

  • 本文构建的polynomial commitment 具有 square root communication complexity,但是完全基于discrete logarithm assumption。

1.3 相关定义

A multi-exponentiation of size n n n can be computed at a cost of roughly n log ⁡ n \frac{n}{\log n} lognn single group exponentiations using the multi-exponentiation techniques of [Lim00, M¨ol01, MR08]。

在这里插入图片描述

  • Pedersen Commitment定义:
    在这里插入图片描述
    在这里插入图片描述
    Breaking the binding property of Pedersen commitments corresponds to breaking the discrete logarithm assumption.
    在这里插入图片描述
    Pedersen commitment具有加法同态属性:
    C o m c k ( m 0 ; r 0 ) ⋅ C o m c k ( m 1 ; r 1 ) = C o m c k ( m 0 + m 1 ; r 0 + r 1 ) Com_{ck}(m_0;r_0)\cdot Com_{ck}(m_1;r_1)=Com_{ck}(m_0+m_1;r_0+r_1) Comck(m0;r0)Comck(m1;r1)=Comck(m0+m1;r0+r1)

Pedersen multicommitment指:
C o m c k ( m 1 , ⋯   , m n ; r ) = g r ∏ i = 1 n g i m i Com_{ck}(m_1,\cdots,m_n;r)=g^r\prod_{i=1}^{n}g_i^{m_i} Comck(m1,,mn;r)=gri=1ngimi

  • Argument of knowledge定义:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • Public coin 和 Perfect special honest verifier zero-knowledge 定义:
    在这里插入图片描述
    在这里插入图片描述

  • Full zero-knowledge 定义:
    在这里插入图片描述

  • Fiat-Shamir heuristic 定义:
    The Fiat-Shamir transformation takes an interactive public coin argument and replaces the challenges with the output of a cryptographic hash function. The idea is that the hash function will produce random looking output and therefore be a suitable replacement for the verifier.The Fiat-Shamir heuristic yields a non-interactive zero-knowledge argument in the random oracle model [BR93].
    本文可借助Fiat-Shamir heuristic,将logarithmic number of move转换为single one move的argument。

1.4 相关假设

  • Discrete Logarithm Assumption:
    在这里插入图片描述

  • Discrete Logarithm Relation Assumption:(与Discrete Logarithm Assumption 等价)
    在这里插入图片描述

  • A general forking lemma定义:
    假设有 ( 2 μ + 1 ) (2\mu+1) (2μ+1)-move public-coin argument,该argument有 μ \mu μ 个challenges —— 依次为 x 1 , ⋯   , x μ x_1,\cdots,x_{\mu} x1,,xμ
    对于 1 ≤ i ≤ μ 1\leq i\leq \mu 1iμ,有 n i ≥ 1 n_i\geq 1 ni1,将具有 ∏ i = 1 μ n i \prod_{i=1}^{\mu}n_i i=1μni 个accepting transcripts with challenges以tree 方式表示,该tree的depth为 μ \mu μ,具有的leaves数量为 ∏ i = 1 μ n i \prod_{i=1}^{\mu}n_i i=1μni,该tree的根表示为the statement。每个depth i < μ i<\mu i<μ 的node,有 n i n_i ni 个children,每个都labelled with a distinct value for the i i ith challenge x i x_i xi
    可将其理解为 ( n 1 , ⋯   , n μ ) (n_1,\cdots,n_{\mu}) (n1,,nμ)-tree of accepting transcripts。可理解为对Sigma-protocol来说,其 μ = 1 , n = 2 \mu=1,n=2 μ=1,n=2 的generalisation。
    本文所构建的arguments均可以 extract the witness from an appropriate tree of accepting transcripts。
    在这里插入图片描述

2. Polynomial commitment

Polynomial commitment 基本流程为:

  • 1)commit to a polynomial t ( X ) t(X) t(X)
  • 2)reveal the evaluation of t ( X ) t(X) t(X) at any point x ∈ Z p ∗ x\in\mathbb{Z}_p* xZp
  • 3)同时提供a proof 允许Verifier check that the evaluation is correct with respect to the committed t ( X ) t(X) t(X)

t ( X ) t(X) t(X)理解为是具有negative degree的Laurent polynomials, t ( X ) ∈ Z p [ X , X − 1 ] t(X)\in\mathbb{Z}_p[X,X^{-1}] t(X)Zp[X,X1]。(可参见博客 Laurent polynomial劳伦特多项式
t ( X ) = ∑ k = − d 1 d 2 t k X k = t − d 1 X − d 1 + t − d 1 + 1 X − d 1 + 1 + ⋯ + t 0 + t 1 X + ⋯ + t d 2 X d 2 t(X)=\sum_{k=-d_1}^{d_2}t_kX^k=t_{-d_1}X^{-d_1}+t_{-d_1+1}X^{-d_1+1}+\cdots+t_0+t_1X+\cdots+t_{d_2}X^{d_2} t(X)=k=d1d2tkXk=td1Xd1+td1+1Xd1+1++t0+t1X++td2Xd2

由于有 C o m ( a 1 m 1 + a 2 m 2 ) = C o m ( m 1 ) a 1 ⋅ C o m ( m 2 ) a 2 Com(a_1m_1+a_2m_2)=Com(m_1)^{a_1}\cdot Com(m_2)^{a_2} Com(a1m1+a2m2)=Com(m1)a1Com(m2)a2
最简单的方法是对 t ( X ) t(X) t(X)的每个系数分别进行commitment,然后可以利用commitment的同态属性直接verify the evaluation of t ( X ) t(X) t(X) at any particular point。存在的问题是需要发送 d d d 个 group elements,其中 d d d 为the number of non-zero coefficients in t ( X ) t(X) t(X)
本文构建的算法其communication cost 可由 O ( d ) O(d) O(d) 降为 O ( d ) O(\sqrt{d}) O(d ),其中 d = d 2 + d 1 d=d_2+d_1 d=d2+d1

分两个阶段来看:
(1)针对standard polynomial t ( X ) = ∑ k = 0 d t k X k t(X)=\sum_{k=0}^{d}t_kX^k t(X)=k=0dtkXk,假设 d + 1 = m n d+1=mn d+1=mn,可将 t ( X ) t(X) t(X)表示为:
t ( X ) = ∑ i = 0 m − 1 ∑ j = 0 n − 1 t i , j X i n + j t(X)=\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}t_{i,j}X^{in+j} t(X)=i=0m1j=0n1ti,jXin+j,将其系数以 m × n m\times n m×n矩阵表示:
T = ( t 0 , 0 t 0 , 1 ⋯ t 0 , n − 1 t 1 , 0 t 1 , 1 ⋯ t 1 , n − 1 ⋮ ⋮ ⋮ t m − 1 , 0 t m − 1 , 1 ⋯ t m − 1 , n − 1 ) \mathbf{T}=\begin{pmatrix} t_{0,0} & t_{0,1} & \cdots & t_{0,n-1}\\ t_{1,0} & t_{1,1} & \cdots & t_{1,n-1}\\ \vdots & \vdots & & \vdots\\ t_{m-1,0} & t_{m-1,1} & \cdots & t_{m-1,n-1} \end{pmatrix} T=t0,0t1,0tm1,0t0,1t1,1tm1,1t0,n1t1,n1tm1,n1
此时, t ( X ) t(X) t(X) 可evaluate by multiplying the matrix by row and column vectors:
t ( X ) = ( 1 X n ⋯ X ( m − 1 ) n ) ( t 0 , 0 t 0 , 1 ⋯ t 0 , n − 1 t 1 , 0 t 1 , 1 ⋯ t 1 , n − 1 ⋮ ⋮ ⋮ t m − 1 , 0 t m − 1 , 1 ⋯ t m − 1 , n − 1 ) ( 1 X ⋮ X n − 1 ) t(X)= \begin{pmatrix} 1 & X^n & \cdots & X^{(m-1)n} \end{pmatrix}\begin{pmatrix} t_{0,0} & t_{0,1} & \cdots & t_{0,n-1}\\ t_{1,0} & t_{1,1} & \cdots & t_{1,n-1}\\ \vdots & \vdots & & \vdots\\ t_{m-1,0} & t_{m-1,1} & \cdots & t_{m-1,n-1} \end{pmatrix}\begin{pmatrix} 1\\ X\\ \vdots\\ X^{n-1} \end{pmatrix} t(X)=(1XnX(m1)n)t0,0t1,0tm1,0t0,1t1,1tm1,1t0,n1t1,n1tm1,n11XXn1

基本思路为:

  • 对系数矩阵 T \mathbf{T} T的每行进行commitment,相应的commitment值为 T 0 , ⋯   , T m − 1 T_0,\cdots,T_{m-1} T0,,Tm1
  • 对evaluation point x ∈ Z p x\in\mathbb{Z}_p xZp,利用commitment的同态属性,可知,对应如下vector 的commitment值为 C o m ( t ˉ ⃗ ) = ∏ i = 1 m − 1 T i x i n Com(\vec{\bar{t}})=\prod_{i=1}^{m-1}T_i^{x^{in}} Com(tˉ )=i=1m1Tixin
    t ˉ ⃗ = ( 1 x n ⋯ x ( m − 1 ) n ) ( t 0 , 0 t 0 , 1 ⋯ t 0 , n − 1 t 1 , 0 t 1 , 1 ⋯ t 1 , n − 1 ⋮ ⋮ ⋮ t m − 1 , 0 t m − 1 , 1 ⋯ t m − 1 , n − 1 ) \vec{\bar{t}}=\begin{pmatrix} 1 & x^n & \cdots & x^{(m-1)n} \end{pmatrix}\begin{pmatrix} t_{0,0} & t_{0,1} & \cdots & t_{0,n-1}\\ t_{1,0} & t_{1,1} & \cdots & t_{1,n-1}\\ \vdots & \vdots & & \vdots\\ t_{m-1,0} & t_{m-1,1} & \cdots & t_{m-1,n-1} \end{pmatrix} tˉ =(1xnx(m1)n)t0,0t1,0tm1,0t0,1t1,1tm1,1t0,n1t1,n1tm1,n1
  • Prover可直接open C o m ( t ˉ ⃗ ) Com(\vec{\bar{t}}) Com(tˉ ),然后Verifier就很容易计算出evaluation值 v = t ( x ) = t ˉ ⃗ ( 1 x ⋮ x n − 1 ) v=t(x)= \vec{\bar{t}}\begin{pmatrix} 1\\ x\\ \vdots\\ x^{n-1} \end{pmatrix} v=t(x)=tˉ 1xxn1
  • 此时,Prover若直接open C o m ( t ˉ ⃗ ) Com(\vec{\bar{t}}) Com(tˉ ),将会造成 t ( X ) t(X) t(X)系数的部分泄露。(如设置 x = 0 x=0 x=0,则系数 t 0 , 0 , t 0 , 1 , ⋯   , t 0 , n − 1 t_{0,0},t_{0,1},\cdots,t_{0,n-1} t0,0,t0,1,,t0,n1将会泄露)
    因此,需要在系数矩阵 T \mathbf{T} T中引入blinding values u 1 , ⋯   , u n − 1 u_1,\cdots,u_{n-1} u1,,un1 来hide the weighted sum of the coefficients in each column。同时,要保证这些blinding values能相互抵消从而仍然保证多项式的evaluation是正确的。
    具体实现方式为:
    – 构建 ( m + 1 ) × n (m+1)\times n (m+1)×n的系数矩阵:
    T = ( t 0 , 0 t 0 , 1 − u 1 ⋯ t 0 , n − 2 − u n − 2 t 0 , n − 1 − u n − 1 t 1 , 0 t 1 , 1 ⋯ t 1 , n − 2 t 1 , n − 1 ⋮ ⋮ ⋮ t m − 1 , 0 t m − 1 , 1 ⋯ t m − 1 , n − 2 t m − 1 , n − 1 u 1 u 2 ⋯ u n − 1 0 ) \mathbf{T}=\begin{pmatrix} t_{0,0} & t_{0,1}-u_1 & \cdots & t_{0,n-2}-u_{n-2} & t_{0,n-1}-u_{n-1}\\ t_{1,0} & t_{1,1} & \cdots & t_{1,n-2} & t_{1,n-1}\\ \vdots & \vdots & & & \vdots\\ t_{m-1,0} & t_{m-1,1} & \cdots & t_{m-1,n-2} & t_{m-1,n-1}\\ u_1 & u_2 & \cdots & u_{n-1} & 0 \end{pmatrix} T=t0,0t1,0tm1,0u1t0,1u1t1,1tm1,1u2t0,n2un2t1,n2tm1,n2un1t0,n1un1t1,n1tm1,n10
    对系数矩阵 T \mathbf{T} T的每行进行commitment,相应的commitment值为 T 0 , ⋯   , T m − 1 , U T_0,\cdots,T_{m-1},U T0,,Tm1,U
    同时, t ( X ) t(X) t(X)可表示为:
    t ( X ) = ( 1 X n ⋯ X ( m − 1 ) n X ) T ( 1 X X 2 ⋮ X n − 1 ) t(X)= \begin{pmatrix} 1 & X^n & \cdots & X^{(m-1)n} & X \end{pmatrix}\mathbf{T}\begin{pmatrix} 1\\ X\\ X^2\\ \vdots\\ X^{n-1} \end{pmatrix} t(X)=(1XnX(m1)nX)T1XX2Xn1
    – 对evaluation point x ∈ Z p x\in\mathbb{Z}_p xZp,利用commitment的同态属性,可知,对应如下vector 的commitment值为 C o m ( t ˉ ⃗ ) = U x ∏ i = 1 m − 1 T i x i n Com(\vec{\bar{t}})=U^x\prod_{i=1}^{m-1}T_i^{x^{in}} Com(tˉ )=Uxi=1m1Tixin
    t ˉ ⃗ = ( 1 X n ⋯ X ( m − 1 ) n X ) T \vec{\bar{t}}=\begin{pmatrix} 1 & X^n & \cdots & X^{(m-1)n} & X \end{pmatrix}\mathbf{T} tˉ =(1XnX(m1)nX)T
    – 此时,Prover直接reveal the vector t ˉ ⃗ \vec{\bar{t}} tˉ ,就不会造成 t ( X ) t(X) t(X)系数的泄露了。【 x = 0 x=0 x=0 t 0 , 0 t{0,0} t0,0不算泄露。】
    然后Verifier就很容易计算出evaluation值 v = t ( x ) = t ˉ ⃗ ( 1 x ⋮ x n − 1 ) v=t(x)= \vec{\bar{t}}\begin{pmatrix} 1\\ x\\ \vdots\\ x^{n-1} \end{pmatrix} v=t(x)=tˉ 1xxn1

(2)由standard polynomial 扩展至 Laurent polynomial,其中 t 0 = 0 t_0=0 t0=0
t ( X ) = ∑ k = − d 1 d 2 t k X k = t − d 1 X − d 1 + t − d 1 + 1 X − d 1 + 1 + ⋯ + t 0 + t 1 X + ⋯ + t d 2 X d 2 t(X)=\sum_{k=-d_1}^{d_2}t_kX^k=t_{-d_1}X^{-d_1}+t_{-d_1+1}X^{-d_1+1}+\cdots+t_0+t_1X+\cdots+t_{d_2}X^{d_2} t(X)=k=d1d2tkXk=td1Xd1+td1+1Xd1+1++t0+t1X++td2Xd2

  • m 1 , m 2 , n m_1,m_2,n m1,m2,n均为正整数,且满足 d 1 = n m 1 , d 2 = n m 2 d_1=nm_1,d_2=nm_2 d1=nm1,d2=nm2 t ( X ) t(X) t(X) 可表示为:
    t ( X ) = X − m 1 n t ′ ( X ) + X t ′ ′ ( X ) t(X)=X^{-m_1n}t'(X)+Xt''(X) t(X)=Xm1nt(X)+Xt(X),其中 t ′ ( X ) = ∑ i = 0 m 1 − 1 ∑ j = 0 n − 1 t i , j ′ X i n + j , t ′ ′ ( X ) = ∑ i = 0 m 2 − 1 ∑ j = 0 n − 1 t i , j ′ ′ X i n + j t'(X)=\sum_{i=0}^{m_1-1}\sum_{j=0}^{n-1}t'_{i,j}X^{in+j}, t''(X)=\sum_{i=0}^{m_2-1}\sum_{j=0}^{n-1}t''_{i,j}X^{in+j} t(X)=i=0m11j=0n1ti,jXin+j,t(X)=i=0m21j=0n1ti,jXin+j
    可将 t ′ ( X ) t'(X) t(X) t ′ ′ ( X ) t''(X) t(X)的系数添加blind values后以 ( m 1 + m 2 ) × n + 1 (m_1+m_2)\times n+1 (m1+m2)×n+1的系数矩阵表示:
    T = ( t 0 , 0 ′ t 0 , 1 ′ ⋯ t 0 , n − 1 ′ t 1 , 0 ′ t 1 , 1 ′ ⋯ t 1 , n − 1 ′ ⋮ ⋮ ⋮ t m 1 − 1 , 0 ′ t m 1 − 1 , 1 ′ ⋯ t m 1 − 1 , n − 1 ′ t 0 , 0 ′ ′ t 0 , 1 ′ ′ − u 1 ⋯ t 0 , n − 1 ′ ′ − u n − 1 t 1 , 0 ′ ′ t 1 , 1 ′ ′ ⋯ t 1 , n − 1 ′ ′ ⋮ ⋮ ⋮ t m 2 − 1 , 0 ′ ′ t m 2 − 1 , 1 ′ ′ ⋯ t m 2 − 1 , n − 1 ′ ′ u 1 u 2 ⋯ 0 ) = ( t ⃗ 0 ′ t ⃗ 1 ′ ⋮ t ⃗ m 1 − 1 ′ t ⃗ 0 ′ ′ t ⃗ 1 ′ ′ ⋮ t m 2 − 1 ⃗ ′ ′ u ⃗ ) \mathbf{T}=\begin{pmatrix} t'_{0,0} & t'_{0,1} & \cdots & t'_{0,n-1}\\ t'_{1,0} & t'_{1,1} & \cdots & t'_{1,n-1}\\ \vdots & \vdots & & \vdots\\ t'_{m_1-1,0} & t'_{m_1-1,1} & \cdots & t'_{m_1-1,n-1}\\ t''_{0,0} & t''_{0,1}-u_1 & \cdots & t''_{0,n-1}-u_{n-1}\\ t''_{1,0} & t''_{1,1} & \cdots & t''_{1,n-1}\\ \vdots & \vdots & & \vdots\\ t''_{m_2-1,0} & t''_{m_2-1,1} & \cdots & t''_{m_2-1,n-1}\\ u_1 & u_2 & \cdots & 0 \end{pmatrix}= \begin{pmatrix} \vec{t}_0'\\ \vec{t}_1'\\ \vdots\\ \vec{t}_{m_1-1}'\\ \vec{t}_0''\\ \vec{t}_1''\\ \vdots\\ \vec{t_{m_2-1}}''\\ \vec{u} \end{pmatrix} T=t0,0t1,0tm11,0t0,0t1,0tm21,0u1t0,1t1,1tm11,1t0,1u1t1,1tm21,1u2t0,n1t1,n1tm11,n1t0,n1un1t1,n1tm21,n10=t 0t 1t m11t 0t 1tm21 u
    定义 vectors:
    Z ⃗ = Z ( X ) ⃗ = ( X − m 1 n , X − ( m 1 − 1 ) n , ⋯   , X − n , X , X n + 1 , ⋯   , X ( m 2 − 1 ) n + 1 , X 2 ) \vec{Z}=\vec{Z(X)}=(X^{-m_1n},X^{-(m_1-1)n},\cdots,X^{-n},X,X^{n+1},\cdots,X^{(m_2-1)n+1},X^2) Z =Z(X) =(Xm1n,X(m11)n,,Xn,X,Xn+1,,X(m21)n+1,X2)
    X ⃗ = X ( X ) ⃗ = ( 1 X ⋮ X n − 1 ) \vec{X}=\vec{X(X)}=\begin{pmatrix} 1\\ X\\ \vdots\\ X^{n-1} \end{pmatrix} X =X(X) =1XXn1
    最终, t ( X ) t(X) t(X)可表示为:
    t ( X ) = Z ⃗ T X ⃗ t(X)=\vec{Z}\mathbf{T}\vec{X} t(X)=Z TX

  • 对系数矩阵 T \mathbf{T} T逐行commit,相应的commitment值为 T 0 ′ , ⋯   , T m 1 − 1 ′ , T 0 ′ ′ , ⋯   , T m 2 − 1 ′ ′ , U T_0',\cdots,T_{m_1-1}',T_0'',\cdots,T_{m_2-1}'',U T0,,Tm11,T0,,Tm21,U

  • 对vector t ˉ ⃗ = Z ⃗ T \vec{\bar{t}}=\vec{Z}\mathbf{T} tˉ =Z T 的 commitment 值为 ( ∏ i = 0 m 1 − 1 ( T i ′ ) x ( i − m 1 ) n ) ( ∏ i = 0 m 2 − 1 ( T i ′ ′ ) x i n + 1 ) U x 2 (\prod_{i=0}^{m_1-1}(T_i')^{x^{(i-m_1)n}})(\prod_{i=0}^{m_2-1}(T_i'')^{x^{in+1}})U^{x^2} (i=0m11(Ti)x(im1)n)(i=0m21(Ti)xin+1)Ux2

  • Prover直接reveal the vector t ˉ ⃗ \vec{\bar{t}} tˉ ,然后Verifier就很容易计算出evaluation值 v = t ( x ) = t ˉ ⃗ X ( x ) ⃗ = t ˉ ⃗ ( 1 x ⋮ x n − 1 ) v=t(x)= \vec{\bar{t}}\vec{X(x)}= \vec{\bar{t}}\begin{pmatrix} 1\\ x\\ \vdots\\ x^{n-1} \end{pmatrix} v=t(x)=tˉ X(x) =tˉ 1xxn1
    由于已在系数矩阵 T \mathbf{T} T中增加了blind values u 1 , ⋯   , u n − 1 u_1,\cdots, u_{n-1} u1,,un1,实现了hide the weighted sums of each column,从而使得Verifier is able to compute t ( x ) t(x) t(x) without gaining additional information about its coefficients。

整个polynomial commitment的详细流程为:
在这里插入图片描述
以上协议具有如下特性:

  • Perfect completeness;
  • Statistical ( m 1 + m 2 ) n + 1 (m_1+m_2)n+1 (m1+m2)n+1-Special Soundness;
  • Perfect Special Honest Verifier Zero Knowledge。

以上协议的开销主要为:

  • PolyCommit中的 p c ⃗ \vec{pc} pc 中包含 m 1 + m 2 + 1 m_1+m_2+1 m1+m2+1 个group elements;
  • PolyEval中的 p e ⃗ \vec{pe} pe 中包含 n + 1 n+1 n+1 个field elements;
  • PolyCommit中的 p c ⃗ \vec{pc} pc 的计算开销主要在于计算commitments T i ’ T_i’ Ti T i ’ ’ T_i’’ Ti,对应为 m 1 + m 2 m_1+m_2 m1+m2 n n n-wide multi-exponentiations。采用[Lim00, M¨ol01,MR08]中的multi-exponentiation技术,最终总的开销大概在 ( m 1 + m 2 ) n log ⁡ n \frac{(m_1+m_2)n}{\log n} logn(m1+m2)n个group expentiations。
  • PolyEval中的 p e ⃗ \vec{pe} pe 的计算开销主要在于计算 Z ⃗ T \vec{Z}\mathbf{T} Z T,需要 n ( m 1 + m 2 ) n(m_1+m_2) n(m1+m2) 个field multiplications。
  • PolyVerify中的主要计算开销在于verification equation中的multi-exponentiations,大概需要 m 1 + m 2 + n log ⁡ ( m 1 + m 2 + n ) \frac{m_1+m_2+n}{\log (m_1+m_2+n)} log(m1+m2+n)m1+m2+n 个group exponentiations。

3. Inner product argument

基本信息为:
public info: z ∈ Z p , A , B ∈ G , g ⃗ , h ⃗ ∈ G n z\in\mathbb{Z}_p,A,B\in\mathbb{G},\vec{g},\vec{h}\in\mathbb{G}^n zZp,A,BG,g ,h Gn
private info: a ⃗ , b ⃗ \vec{a},\vec{b} a ,b
relation: A = g ⃗ a ⃗ ∧ B = h ⃗ b ⃗ ∧ a ⃗ ⋅ b ⃗ = z A=\vec{g}^{\vec{a}}\wedge B=\vec{h}^{\vec{b}}\wedge \vec{a}\cdot\vec{b}=z A=g a B=h b a b =z

当不要求zero-knowledge时,Prover可直接将 a ⃗ , b ⃗ \vec{a},\vec{b} a ,b 发送给Verifier,相应的communication cost为 O ( 2 n ) O(2n) O(2n)。本文可通过增加interaction来减少communication cost 至 O ( n ) O(\sqrt{n}) O(n ),其中 n n n为vector length。

本文构建的inner product argument,是基于Bayer和Groth 2012年论文《Efficient zero-knowledge argument for correctness of a shuffle》(参见博客 Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(1))中类似的2-move reduction to smaller statement技术。即:
It will suffice for the prover to reveal the witness for the smaller statement in order to convince the verifier about the validity of the original statement。
在整个argument中,Prover和Verifier都递归地 run the reduction to obtain increasingly smaller statements,然后最后Prover reveal a witness for a very small statement。最终需要 O ( log ⁡ n ) O(\log n) O(logn)个move,总的communication cost为 O ( log ⁡ n ) O(\log n) O(logn) 个 group和field elements。

基本思路为:
Prover和Verifier的common input 为 ( G , p , g ⃗ , A , h ⃗ , B , z , m ) (\mathbb{G},p,\vec{g},A,\vec{h},B,z,m) (G,p,g ,A,h ,B,z,m),其中 m m m可整除 n n n。对应的 g ⃗ = ( g ⃗ 1 , ⋯   , g ⃗ m ) , h ⃗ = ( h ⃗ 1 , ⋯   , h ⃗ m ) , a ⃗ = ( a ⃗ 1 , ⋯   , a ⃗ m ) , b ⃗ = ( b ⃗ 1 , ⋯   , b ⃗ m ) \vec{g}=(\vec{g}_1,\cdots,\vec{g}_m),\vec{h}=(\vec{h}_1,\cdots,\vec{h}_m),\vec{a}=(\vec{a}_1,\cdots,\vec{a}_m),\vec{b}=(\vec{b}_1,\cdots,\vec{b}_m) g =(g 1,,g m),h =(h 1,,h m),a =(a 1,,a m),b =(b 1,,b m),其中每个 g ⃗ i , h ⃗ i \vec{g}_i,\vec{h}_i g i,h i的size为 n m \frac{n}{m} mn
转为证明:
Public info: z ∈ Z p , A , B ∈ G , g ⃗ , h ⃗ ∈ G n z\in\mathbb{Z}_p,A,B\in\mathbb{G},\vec{g},\vec{h}\in\mathbb{G}^n zZp,A,BG,g ,h Gn
Private info: a ⃗ = ( a ⃗ 1 , ⋯   , a ⃗ m ) , b ⃗ = ( b ⃗ 1 , ⋯   , b ⃗ m ) \vec{a}=(\vec{a}_1,\cdots,\vec{a}_m),\vec{b}=(\vec{b}_1,\cdots,\vec{b}_m) a =(a 1,,a m),b =(b 1,,b m)
Relation: A = g ⃗ a ⃗ = ∏ i = 1 m g ⃗ i a ⃗ i ∧ B = h ⃗ b ⃗ = ∏ i = 1 m h ⃗ i b ⃗ i ∧ a ⃗ ⋅ b ⃗ = ∑ i = 1 m a ⃗ i ⋅ b ⃗ i = z A=\vec{g}^{\vec{a}}=\prod_{i=1}^{m}\vec{g}_i^{\vec{a}_i}\wedge B=\vec{h}^{\vec{b}}=\prod_{i=1}^{m}\vec{h}_i^{\vec{b}_i}\wedge \vec{a}\cdot\vec{b}=\sum_{i=1}^{m}\vec{a}_i\cdot\vec{b}_i=z A=g a =i=1mg ia iB=h b =i=1mh ib ia b =i=1ma ib i=z

将其展开为矩阵,主对角线上的元素即为相应的vector commitment。
在这里插入图片描述

  • Prover:for k = 1 − m , ⋯   , m − 1 k=1-m,\cdots,m-1 k=1m,,m1,计算 A k = ∏ i = m a x ( 1 , 1 − k ) m i n ( m , m − k ) g ⃗ i a ⃗ i + k , B k = ∏ i = m a x ( 1 , 1 − k ) m i n ( m , m − k ) h ⃗ i b ⃗ i + k A_k=\prod_{i=max(1,1-k)}^{min(m,m-k)}\vec{g}_i^{\vec{a}_{i+k}}, B_k=\prod_{i=max(1,1-k)}^{min(m,m-k)}\vec{h}_i^{\vec{b}_{i+k}} Ak=i=max(1,1k)min(m,mk)g ia i+k,Bk=i=max(1,1k)min(m,mk)h ib i+k。将所有的 A k A_k Ak 发送给Verifier。其中 A 0 = A , B 0 = B A_0=A,B_0=B A0=A,B0=B为public info。
  • Verifier:发送 challenge x ← Z p ∗ x\leftarrow \mathbb{Z}_p* xZp
  • Prover和Verifier:同时计算 g ⃗ ′ = ∏ i = 1 m g ⃗ i x − i , A ′ = ∏ k = 1 − m m − 1 A k x k , h ⃗ ′ = ∏ i = 1 m h ⃗ i x i , B ′ = ∏ k = 1 − m m − 1 B k x − k \vec{g}'=\prod_{i=1}^{m}\vec{g}_i^{x^{-i}},A'=\prod_{k=1-m}^{m-1}A_k^{x^k},\vec{h}'=\prod_{i=1}^{m}\vec{h}_i^{x^{i}},B'=\prod_{k=1-m}^{m-1}B_k^{x^{-k}} g =i=1mg ixi,A=k=1mm1Akxk,h =i=1mh ixi,B=k=1mm1Bkxk
  • Prover:构建新的witness a ⃗ ′ = ∑ i = 1 m a ⃗ i x i , b ⃗ ′ = ∑ i = 1 m b ⃗ i x − i \vec{a}'=\sum_{i=1}^{m}\vec{a}_ix^i, \vec{b}'=\sum_{i=1}^{m}\vec{b}_ix^{-i} a =i=1ma ixi,b =i=1mb ixi,使得 A ′ = ( g ⃗ ′ ) a ⃗ ′ , B ′ = ( h ⃗ ′ ) b ⃗ ′ A'=(\vec{g}')^{\vec{a}'}, B'=(\vec{h}')^{\vec{b}'} A=(g )a ,B=(h )b 成立。
  • Prover:为了证明 a ⃗ ⋅ b ⃗ = z \vec{a}\cdot\vec{b}=z a b =z,即需要证明 z z z a ⃗ ′ ⋅ b ⃗ ′ = ∑ i = 1 m a ⃗ i x i ⋅ ∑ j = 1 m b ⃗ j x − j \vec{a}'\cdot\vec{b}'=\sum_{i=1}^{m}\vec{a}_ix^i\cdot\sum_{j=1}^{m}\vec{b}_jx^{-j} a b =i=1ma ixij=1mb jxj的常量项。
    for k = 1 − m , ⋯   , m − 1 k=1-m,\cdots,m-1 k=1m,,m1,Prover计算 z k = ∑ i = m a x ( 1 , 1 − k ) m i n ( m , m − k ) a ⃗ i ⋅ b ⃗ i + k z_k=\sum_{i=max(1,1-k)}^{min(m,m-k)}\vec{a}_i\cdot\vec{b}_{i+k} zk=i=max(1,1k)min(m,mk)a ib i+k。将所有 z k z_k zk发送给Verifier。其中 z 0 = z = ∑ i = 1 m a ⃗ i ⋅ b ⃗ i z_0=z=\sum_{i=1}^{m}\vec{a}_i\cdot\vec{b}_i z0=z=i=1ma ib i
  • Verifier:计算 z ′ = a ⃗ ′ ⋅ b ⃗ ′ = ∑ k = 1 − m m − 1 z k x − k z'=\vec{a}'\cdot\vec{b}'=\sum_{k=1-m}^{m-1}z_kx^{-k} z=a b =k=1mm1zkxk

至此,Prover和Verifier都知道 g ⃗ ′ , A ′ , h ⃗ ′ , B ′ , z ′ \vec{g}',A',\vec{h}',B',z' g ,A,h ,B,z满足 A ′ = g ⃗ ′ a ⃗ ′ ∧ B ′ = h ⃗ ′ b ⃗ ′ ∧ z ′ = a ⃗ ′ ⋅ b ⃗ ′ A'=\vec{g}'^{\vec{a}'}\wedge B'=\vec{h}'^{\vec{b}'}\wedge z'=\vec{a}'\cdot\vec{b}' A=g a B=h b z=a b ,且witness a ⃗ ′ , b ⃗ ′ \vec{a}',\vec{b}' a ,b 的length均为 n m \frac{n}{m} mn

假设 n = m μ m μ − q ⋯ m 1 n=m_{\mu}m_{\mu-q}\cdots m_1 n=mμmμqm1,则可 recursively apply this reduction over the factors of n n n to obtain, after μ − 1 \mu-1 μ1 iterations,vectors of length m 1 m_1 m1。然后Prover可直接reveal shorter m 1 m_1 m1 length vectors,而不再是 n n n length vectors。

详细的算法实现为:
在这里插入图片描述
以上inner product argument协议具有如下属性:

以上inner product argument的开销为:

  • 整个递归argument需要 2 μ − 1 2\mu-1 2μ1 moves。
  • 所有步骤的communication cost为 4 ∑ i = 2 μ ( m i − 1 ) 4\sum_{i=2}^{\mu}(m_i-1) 4i=2μ(mi1)个group elements和 2 ∑ i = 2 μ ( m i − 1 ) + 2 m 1 2\sum_{i=2}^{\mu}(m_i-1)+2m_1 2i=2μ(mi1)+2m1个field elements。
  • 在每个迭代中,Prover的主要computation cost在于计算 A k , B k A_k,B_k Ak,Bk(借助multi-exponentiation技术,需少于 4 ( m μ 2 m μ − 1 ⋯ m 1 ) log ⁡ ( m μ ⋯ m 1 ) \frac{4(m_{\mu}^2m_{\mu-1}\cdots m_1)}{\log (m_{\mu}\cdots m_1)} log(mμm1)4(mμ2mμ1m1)次group exponentiations运算)和计算 z k z_k zk,需要 m μ 2 m μ − 1 ⋯ m 1 m_{\mu}^2m_{\mu-1}\cdots m_1 mμ2mμ1m1次field multiplication 运算。
  • Prover和Verifier在每次迭代中均需要计算 g ⃗ ′ , h ⃗ ′ , A ′ , B ′ , z ′ \vec{g}',\vec{h}',A',B',z' g ,h ,A,B,z,相应的computation cost 主要为 2 ( m μ m μ − 1 ⋯ m 1 ) log ⁡ m μ \frac{2(m_{\mu}m_{\mu-1}\cdots m_1)}{\log m_{\mu}} logmμ2(mμmμ1m1)个group exponentiations。
    m μ = ⋯ = m 1 = m m_{\mu}=\cdots=m_1=m mμ==m1=m时,Verifier的computation complexity上限为 2 m μ log ⁡ m m m − 1 \frac{2m^{\mu}}{\log m}\frac{m}{m-1} logm2mμm1m个group exponentiations,Prover的computation complexity上限为 6 m μ + 1 log ⁡ m m m − 1 \frac{6m^{\mu+1}}{\log m}\frac{m}{m-1} logm6mμ+1m1m个group exponentiations和 m μ + 1 m m − 1 m^{\mu+1}\frac{m}{m-1} mμ+1m1m个field multiplications。

4. 为Arithmetic Circuit Satisfiability构建Logarithmic Communication Argument

Groth 2009年论文《Linear Algebra with Sub-linear Zero-Knowledge Arguments》中基于discrete logarithm assumption的constant round arithmetic circuit 零知识证明算法的communication complexity 为 O ( n ) O(\sqrt{n}) O(n )。(详细可参见博客 Linear Algebra with Sub-linear Zero-Knowledge Arguments学习笔记
借助第3节的recursive inner product argument,可将communication complexity降为 O ( log ⁡ n ) O(\log n) O(logn)

将arithmetic circuit转换为2种类型的equations:

  • 乘法门直接表示为 a ⋅ b = c a\cdot b=c ab=c,其中 a , b , c a,b,c a,b,c分别代表the left, right and output wires。可将一系列这样的值以矩阵表示形成a Hadamard matrix product A ∘ B = C \mathbf{A}\circ\mathbf{B}=\mathbf{C} AB=C
  • 这种表示方式会存在一些冗余值,如 a wire is the output of one multiplication gate and the input of another 或者 a wire is used as input multiple times。可以通过一系列的linear constraints来跟踪这些冗余:如 the output of the first multiplication gate is the right input of the second,可表示为 c 1 − b 2 = 0 c_1-b_2=0 c1b2=0
    同时将加法门和常量乘法门以linear constraints表示,最终只需关注非常量乘法门。

最后,将Hadamard matrix product和linear constraints压缩为a single polynomial equation,以Laurent polynomial 表示(其constant term为 0 0 0)。可采用第2节的polynomial commitment来证明,同时可结合第3节的inner product argument来减少communication cost。

相比于Groth 2009年论文《Linear Algebra with Sub-linear Zero-Knowledge Arguments》的arithmetic circuit算法,主要从以下三方面做了改进:

  • 不再需要加法门的input 和 output commitments了。将加法门以linear consistency equation形式来出来,可大幅提高性能。与此同时的研究成果,在Gennaro等人2013年论文《Quadratic span programs and succinct NIZKs without PCPs》中,也是去除了加法门,只不过采用的方式是从circuit中构建 Quadratic Arithmetic Programs。
  • 避免对generic linear algebra statements采用黑盒reduction,而是为arithmetic circuit satisfiability直接设计an argument。
    本文的square-root argument仅需要5 moves,而Groth 2009年论文《Linear Algebra with Sub-linear Zero-Knowledge Arguments》中的argument需要7 moves。而Seo 2011年论文《Round-efficient sub-linear zero-knowledge arguments for linear algebra》中虽然为5 moves,但是增加了computational cost。
  • 可采用第2节的方式来减少polynomial commitment的communication cost。

最终,本文实现的communication complexity为 O ( N ) O(\sqrt{N}) O(N ),其中 N N N表示multiplication gate的数量。
假设circuit有 N = m n N=mn N=mn个multiplication gates,Prover在第一轮为make 3 m 3m 3m commitments to wire values,然后提供an opening consisting of n n n field elements to a homomorphic combination of these commitments。当 m ≈ n ≈ N m\approx n\approx \sqrt{N} mnN 时,即具有 O ( N ) O(\sqrt{N}) O(N ) communication complexity。
Verifier利用这 n n n个field elements来验证 an inner product relation,为了进一步降低communication cost,可采用第3节中的inner product argument来减少sending field elements的数量。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
a
a
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mutourend/article/details/107712770

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文