改进的向量内积时间复杂度怎么算的
还有张凡等人提出的一种高效的范围证明方案中的CT cs代表什么含义
你可以不用花钱的,可以后台私信我交流交流
推荐你一个文献:Coppersmith, D., & Winograd, S. (1990). Matrix multiplication via arithmetic progressions. Journal of Symbolic Computation, 9(3), 251-280.
github链接:https://github.com/dalek-cryptography/bulletproofs
1、改进的向量内积时间复杂度的计算方法为:O(n²)
2、张凡等人提出的一种高效的范围证明方案中的CT cs代表的是:CT代表文心一言,cs是计算机科学领域的专业术语,代表复杂系统。
Bulletproofs 范围证明算法中的向量内积承诺,是指对两个向量进行内积运算后,对结果进行承诺,以便进行验证。具体来说,假设有两个向量 a 和 b,它们的长度均为 n。则它们的内积运算可以表示为:
c = a · b = a[1] * b[1] + a[2] * b[2] + ... + a[n] * b[n]
其中,c 表示内积的结果。
为了进行验证,需要对 c 进行承诺,即生成一个承诺值,使得只有知道对应的秘密值才能打开承诺。在 Bulletproofs 中,可以使用 Pedersen 承诺来实现。Pedersen 承诺的生成过程如下:
这样,就可以将内积结果 c 进行承诺。
在原始的 Bulletproofs 中,对两个向量进行内积运算的时间复杂度为 O(n^2),其中 n 是向量长度。这个时间复杂度比较高,不太适合大规模的应用。因此,后来的研究者们提出了一些优化方法,例如使用 FFT 算法,可以将时间复杂度降低到 O(n log n)。
另外,为了进一步优化验证效率,可以使用批量验证技术。具体来说,可以将多个承诺值和对应的挑战值一起进行验证,从而减少验证时间和空间复杂度。
至于张凡等人提出的高效范围证明方案中的 CT 和 cs,它们的含义如下:
在张凡等人的方案中,CT 和 cs 的生成方式与 Bulletproofs 中的 Pedersen 承诺类似,但有一些细节上的不同。具体来说,CT 和 cs 的生成方式可以参考相关的论文和代码实现。
以下是一些关于 Bulletproofs 范围证明算法和相关优化的参考文献:
Bünz, B., Bootle, J., Boneh, D., Poelstra, A., & Wuille, P. (2018). Bulletproofs: Short proofs for confidential transactions and more. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (pp. 315-329).
Bünz, B., Bootle, J., Boneh, D., Poelstra, A., Wuille, P., & Maxwell, G. (2018). Bulletproofs: Efficient range proofs for confidential transactions. Cryptology ePrint Archive, Report 2017/1066.
Danezis, G., & Fournet, C. (2018). Efficient zero-knowledge arguments for arithmetic circuits in the discrete log setting. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (pp. 1333-1348).
Zhang, F., Katz, J., Papamanthou, C., & Roeder, T. (2019). Efficient and private data retrieval with bounded error. In Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security (pp. 1117-1134).
Zhang, F., Katz, J., Papamanthou, C., & Roeder, T. (2020). Efficient and private data retrieval with bounded error (extended version). Cryptology ePrint Archive, Report 2020/149.
Zhang, F., Katz, J., Papamanthou, C., & Roeder, T. (2021). Efficient and private range proofs with logarithmic communication. Cryptology ePrint Archive, Report 2021/122.
在之前的Bulletproofs范围证明算法中,实现向量内积承诺时存在高计算开销和存储成本等问题。为了改进这个问题,有学者提出使用基于FRI(Fast Reed-Solomon Interactive Oracle Proofs)技术构造的MIMC(Merkle Tree-Structured Interpolation and Commitment)技术来实现向量内积承诺,使得计算开销和存储成本都得以优化。
改进后的向量内积时间复杂度可以通过两个因素来衡量:计算复杂度和存储复杂度。在MIMC技术中,计算复杂度是 $O(k\cdot \log n)$,其中k表示输入向量的长度,n表示叶子节点的个数。存储复杂度则被优化到 $O(n)$,相较原来的 $O(k)$ 有所提升。
CT cs指的是张凡等人提出的高效范围证明方案中的一个变量的名称,具体含义视具体算法而定。通常来说,在Zero-Knowledge证明中,这些变量代表着某种隐藏的值或随机数。
在张凡等人提出的高效范围证明方案中,CT cs指的是一个变量,用于表示一个向量的承诺。其中,向量承诺是一种对向量进行的加密操作,用于保护向量的隐私性,同时可以通过向量承诺完成向量内积的验证。
具体而言,张凡等人提出的高效范围证明方案中,首先使用 Pedersen commitment 对一个向量进行承诺,得到一个哈希值 h。然后,将向量分成若干个子向量,并对每个子向量进行一次承诺操作,得到一个随机数 r 和哈希值 h'。这里,CT cs就代表着这个承诺的随机数 r。之后,可以使用这些承诺和对应的随机数,完成向量内积的验证等操作。
在Zero-Knowledge证明中,通常会使用一些随机数、哈希函数等技术,来隐藏证明者的敏感信息,同时确保证明的正确性和可验证性。因此,CT cs 在张凡等人提出的高效范围证明方案中,就是用于完成这种隐藏和验证的变量之一。
可能优化方式
第一阶段
prover:
构造a L a_La
L
和a R a_Ra
R
,使a L a_La
L
满足< a L , 2 n > = v <a_L,2^n>=v<a
L
,2
n
>=v,a R = a L − 1 n a_R=a_L-1^na
R
=a
L
−1
n
.
构造一个a L a_La
L
,a R a_Ra
R
的承诺A = h α g a L h a R A=h^\alpha g^{a_L}h^{a_R}A=h
α
g
a
L
h
a
R
随机选取盲因子s L s_Ls
L
,s R s_Rs
R
构造一个s L s_Ls
L
,s R s_Rs
R
的承诺S = h ρ g s L h s R S=h^\rho g^{s_L}h^{s_R}S=h
ρ
g
s
L
h
s
R
将A和S发送给verifier。
verifier:随机选取y,z两个值。将这两个值发送给prover
第二阶段
prover:
随机选取τ 1 , τ 2 \tau_1,\tau_2τ
1
,τ
2
,用于做t(x)中一次项和二次项系数的特征值。
构造关于t(X)一次项和二次项系数的承诺$T_i=g{t_i}h{\tau_i},i= \left{ 1,2\right} $
将T 1 T_1T
1
,T 2 T_2T
2
发送给verifier。
verifier:随机选取x,发送给prover。
第三阶段
prover:
根据verifier给定的x,计算l ( x ) l(x)l(x)和r ( x ) r(x)r(x)。
计算t ( x ) = < l ( x ) , r ( x ) > t(x)=<l(x),r(x)>t(x)=<l(x),r(x)>
计算τ x = τ 2 ⋅ x 2 + τ 1 ⋅ x + z 2 ⋅ γ \tau_x=\tau_2\cdot x^2+\tau_1\cdot x+z^2\cdot \gammaτ
x
=τ
2
⋅x
2
+τ
1
⋅x+z
2
⋅γ,其中γ \gammaγ是随机选取的
计算μ = α + ρ ⋅ x \mu = \alpha + \rho \cdot xμ=α+ρ⋅x
生成关于v的承诺V:V = g v h γ V = g^{v}h^{\gamma}V=g
v
h
γ
将τ x , μ , t ( x ) , l ( x ) , r ( x ) , V \tau_x,\mu,t(x),l(x),r(x),Vτ
x
,μ,t(x),l(x),r(x),V发送给verifier。
第四阶段
verifier:
验证t(x):判断g t ( x ) h τ x g^{t(x)}h^{\tau_x}g
t(x)
h
τ
x
是否等于V z 2 ⋅ g δ ( y , z ) ⋅ T 1 x ⋅ T 2 x 2 V^{z^2}\cdot g^{\delta(y,z)}\cdot T^x_1 \cdot T^{x^2}_2V
z
2
⋅g
δ(y,z)
⋅T
1
x
⋅T
2
x
2
根据a L a_La
L
,a R a_Ra
R
,s L s_Ls
L
,s R s_Rs
R
生成的承诺A,S,生成L(x)和R(x)的承诺P:P = A ⋅ S x ⋅ g − z ⋅ ( h ‘ ) z ⋅ y n + z 2 ⋅ 2 n P=A\cdot S^x \cdot \pmb g^{-z} \cdot (\pmb h^`)^{z\cdot y^n+z^2\cdot 2^n}P=A⋅S
x
⋅
g
g
g
−z
⋅(
h
h
h
‘
)
z⋅y
n
+z
2
⋅2
n
其中h ‘ = ( h 1 , h 2 y − 1 , h 3 y − 2 , . . . , h n y − n + 1 ) h^`=(h_1,h_2^{y^{-1}},h_3^{y^{-2}},...,h_n^{y^{-n+1}})h
‘
=(h
1
,h
2
y
−1
,h
3
y
−2
,...,h
n
y
−n+1
)
利用生成的承诺P,判断l ( x ) l(x)l(x)和r ( x ) r(x)r(x)是否正确:判断P是否等于h μ ⋅ g l ⋅ ( h ‘ ) r h^\mu \cdot \pmb g^l\cdot (\pmb h^`)^rh
μ
⋅
g
g
g
l
⋅(
h
h
h
‘
)
r
判断t ( x ) t(x)t(x)是否等于l ( x ) , r ( x ) l(x),r(x)l(x),r(x)
改进的向量内积的时间复杂度可以通过分析算法的具体实现来确定。一般来说,向量内积的朴素实现需要进行 $n$ 次乘法和 $n-1$ 次加法,时间复杂度为 $O(n)$。如果对向量进行预处理,例如使用分块技术或者哈希技术,可以将向量内积的时间复杂度降低到 $O(\sqrt{n})$ 或者 $O(1)$。具体的时间复杂度取决于算法的实现方式和具体的输入数据。
对于张凡等人提出的高效的范围证明方案中的 CT 和 cs,具体含义如下:
回答: bulletproofs范围证明算法中的向量内积承诺可以通过使用批量验证技术来改进。批量验证技术是利用一次验证多个证明的能力,从而减少验证的时间复杂度。改进后向量内积的时间复杂度为O(log n),其中n为该向量的大小。改进后的具体步骤如下:
STEP 1: 将向量拆分成多个小向量并计算他们的哈希值。
STEP 2: 创建一个向量内积承诺(Commitment)来包含拆分后的所有小向量。
STEP 3: 在证明向量的范围时,使用向量承诺而不是单个承诺来验证向量内积的正确性。
STEP 4: 在证明完成后,使用批量验证技术来验证所有的证明。
高效的范围证明方案中的CT cs指的是基于Sigma协议和Pedersen承诺的高效承诺范围证明方案的组成部分,其中CT表示“隐藏模板”,cs表示“伪随机量”。这个方案可以通过批量验证技术来提高时间复杂度,从而大大减少验证时间。
CT表示在零知识证明中需要证明的承诺,cs表示在证明阶段由验证方生成的证明挑战字符串