R1CS和relaxed R1CS(一)

符号说明

  • F :有限域
  • ∘ \circ : 内积
1. R1CS

RlCS定义: ( A , B , C , m , n , l ) (A,B,C,m,n,l) (A,B,C,m,n,l),其中 m 、 n 、 l m、n、l mnl为正整数,且 m > l m>l m>l, A , B , C ∈ F m × m A,B,C \in F^{m \times m} A,B,CFm×m 且至多有n个non-zero entries,给定witness W ∈ F m − l − 1 W \in F^{m-l-1} WFml1 , R1CS满足
( A ⋅ Z ) ∘ ( B ⋅ Z ) = C ⋅ Z (A \cdot Z) \circ (B \cdot Z) = C \cdot Z (AZ)(BZ)=CZ
其中 Z = ( W , x , 1 ) , x ∈ F l Z = (W,x,1), x\in F^l Z=(W,x,1),xFl 包含公开输入和输出,也称为instance。

给定一个R1CS矩阵 ( A , B , C ) (A,B,C) (A,B,C),两个instance-witness对: ( x 1 , W 1 ) (x_1,W_1) (x1,W1) ( x 2 , W 2 ) (x_2,W_2) (x2,W2),按照传统方法,我们需要分别对 ( x 1 , W 1 ) (x_1,W_1) (x1,W1) ( x 2 , W 2 ) (x_2,W_2) (x2,W2)进行验证,即我们需要进行两次验证,才能确保 ( x 1 , W 1 ) (x_1,W_1) (x1,W1) ( x 2 , W 2 ) (x_2,W_2) (x2,W2)都是正确的instance-witness对。

问题🤔️:能不能将上述两个instance-witness对合并构造一种新的instance-witness对: ( x , W ) (x,W) (x,W),通过对 ( x , W ) (x,W) (x,W)的一次验证,即可证明 ( x 1 , W 1 ) (x_1,W_1) (x1,W1) ( x 2 , W 2 ) (x_2,W_2) (x2,W2)都是满足R1CS约束的(当然验证 ( x , W ) (x,W) (x,W)的开销比比验证 ( x 1 , W 1 ) (x_1,W_1) (x1,W1) ( x 2 , W 2 ) (x_2,W_2) (x2,W2)的开销要小)?

(上述方案也称为folding scheme,可以用来构造Recursive Zero-Knowledge

很不幸的是,R1CS本身是不支持folding scheme,R1CS的变种,即后面介绍的relexed R1CS是满足要求的

首次尝试:R1CS是一个代数系统,最先想到的是线性组合。假设prover首先发送 W 1 W_1 W1 W 2 W_2 W2,verifier随机选择 r ∈ F r \in F rF作为回复,这时prover和verifier进行如下计算:
x = x 1 + r ⋅ x 2 W = W 1 + r ⋅ W 2 x = x_1 + r \cdot x_2 \\ W = W_1 + r \cdot W_2 x=x1+rx2W=W1+rW2
然后,设置新的instance-witness对为: ( x , W ) (x,W) (x,W)
这时对于 Z 1 = ( W 1 , x 1 , 1 ) Z_1 = (W_1,x_1,1) Z1=(W1,x1,1) Z 2 = ( W 2 , x 2 , 1 ) Z_2 = (W_2,x_2,1) Z2=(W2,x2,1) Z = ( W , x , 1 ) Z = (W,x,1) Z=(W,x,1)有:
A Z ∘ B Z = A ( Z 1 + r ⋅ Z 2 ) ∘ B ( Z 1 + r ⋅ Z 2 ) = A Z 1 ∘ B Z 1 + r ( A Z 1 ∘ B Z 2 + A Z 2 ∘ B Z 1 ) + r 2 ( A Z 2 ∘ B Z 2 ) ≠ C Z \begin{align} A Z \circ BZ & = A(Z_1 + r \cdot Z_2) \circ B(Z_1 + r \cdot Z_2)\\ & = AZ_1 \circ BZ_1 + r(AZ_1 \circ BZ_2+AZ_2 \circ BZ_1) + r^2(AZ_2 \circ BZ_2) \\ & \neq CZ \end{align} AZBZ=A(Z1+rZ2)B(Z1+rZ2)=AZ1BZ1+r(AZ1BZ2+AZ2BZ1)+r2(AZ2BZ2)=CZ

首次尝试失败,很显然 A Z ∘ B Z ≠ C Z A Z \circ BZ \neq CZ AZBZ=CZ,这里主要存在三个问题:

  • 多了一个额外的交叉项: r ( A Z 1 ∘ B Z 2 + A Z 2 ∘ B Z 1 ) r(AZ_1 \circ BZ_2+AZ_2 \circ BZ_1) r(AZ1BZ2+AZ2BZ1)

  • 剔除交叉项后还是不等于 C Z CZ CZ:

    A Z 1 ∘ B Z 1 + r 2 ( A Z 2 ∘ B Z 2 ) = C Z 1 + r 2 C Z 2 ≠ C Z 1 + r C Z 2 = C Z AZ_1 \circ BZ_1 +r^2(AZ_2 \circ BZ_2) = CZ_1 + r^2CZ_2 \neq CZ_1+rCZ_2 =CZ AZ1BZ1+r2(AZ2BZ2)=CZ1+r2CZ2=CZ1+rCZ2=CZ

  • 甚至不满足 Z = Z 1 + r ⋅ Z 2 Z=Z_1 + r \cdot Z_2 Z=Z1+rZ2 ,因为 Z 1 + r ⋅ Z 2 = ( W , x , 1 + r ⋅ 1 ) Z_1 + r \cdot Z_2 = (W,x,1+r\cdot 1) Z1+rZ2=(W,x,1+r1)

第二次尝试
为了解决问题1,通过引入了一个error vector E ∈ F m E \in F^m EFm 用来抵消交叉项的影响
其次又引入了一个scalar u,用来抵消问题2和问题3中多余的 r r r

我们将这种变种的R1CS称为relaxed R1CS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值