Neo创始人:去中心化创新
Figment Capital:深入解读零知识证明加速
原文标题:Accelerating Zero-Knowledge Proofs
原文作者:Figment Capital
原文编译:Lynn,MarsBit
零知识证明允许一个团体在向另一个团体证明一条声明时不需要透露除去「该声明为真实的」的信息以外的任何额外信息。尽管这项密码原语早在上世纪八十年代就已出现,但直到区块链技术的萌发,零知识证明才发现其实际应用,包括区块链扩展、隐私、互操作性,和身份。
尽管声称其可以解决区块链技术中的许多最重大的难题,零知识证明仍旧是一项不成熟的技术。在这些问题之中,最主要的其中之一是其证明时间之久。零知识技术应用在不断改进,其证明的复杂程度也在改进。这些声明需要更大的算数电路,导致证明时间飙升。生产一个零知识证明可能需要比底层计算增加多达百万倍。相应地,有大量的团队正在研究可以改进加速零知识证明所需要的软件和硬件。
在本文中,我们将提供加速零知识证明的概览。我们将总结生产零知识证明的主要操作作为讨论的起点,并在之后转向讨论这些操作可以如何被加速。
快速上手:什么是零知识证明?
零知识证明允许一方(通常被称为证明者),向另一方(通常被称为验证者)证明他们成功地完成了一次计算。一个零知识证明拥有以下三个关键特性:
完整性:如果证明者生成了一项有效的证明,一个诚实的验证者将视该声明是有效的。
合理性:如果该声明是虚假的,一个证明者将无法生成一项看起来有效的证明。
零知识:如果该声明是真实的,一个验证者不会知道除去「该声明是真实的」以外的任何信息。
区块链背景下最主要的零知识证明的类型是 zk-SNARK(全称是「零知识的简洁的非交互式知识论证」)。这终证明在上述的传统的零知识证明的三个特性之上额外有两条特性:简洁性和非交互式。具有简洁性意味着证明的规格小,通常只有几百字节,并且可以迅速地被验证者检验。非交互式的特性意味着证明者和验证者之间不需要交互,单单该证明本身已经足够。较老的零知识证明需要证明者和验证者之间互发信息以生成一项证明。
简介性使零知识证明能够快速地验证,且从计算角度来看很便宜。这使它们成为了一项很棒的扩展技术。在有效性 rollup(也就是零知识 rollup)中,强大的证明者能够计算数以千计的交易的输出,针对它们的正确性生产一个简洁的证明,并将它们发送到底层链上。在那里,验证者能够检验该证明并立刻接受所有已包含的交易的结果,而无需再自行计算。因此,在底层链保持去中心化的同时,网络得以进行扩展。
将上千条交易打包进单一的证明需要巨量的计算工作,从而导致证明时间变长。冗长的证明时间会导致同样冗长的最终确认时间。因为在交易和证明被发送至底层链之前,用户的交易没有完全的最终性。而这一过程可能要花一些时间。例如,在 Starknet,我们预期证明时间初步上将需要几个小时。零知识证明在更好的操作、安全、和 UX 上都需要加速。
一个零知识证明系统包含三个步骤:配置,证明的生成,以及证明的检验。
在证明中要用到 6 个值:
R - 随即数字:建立一个零知识证明系统需要一个一次性的秘密随机数。如果任何群体知道了该随机数,他们就可以破解代码并确认秘密输入值,消除其零知识属性。这便是「可信设置」的概念从何而来。在可信配置中,不同群体聚到一起,共同生成该随机数,以保证没有任何个体能够知道该秘密。作为一名用户,你必须信任该设置是被正确完成的(也就是说,没有人知道 R),以确保你的信息是私密的。注意,STARK 并不要求可信设置。
Sₚ - 证明者设置常数:设置完成后将交由证明者的常数,允许其验证一项有效的证明。
Sᵥ - 验证者设置常数:设置完成后将交由验证者的常数,允许其验证一项有效的证明。
X - 公开输入值:我们用于计算的输入值。这些将被给到证明者和验证者,且并不是保密的。
W - 私密输入值:这是秘密的输入值,被称作见证,只会被给到证明者。需要注意的是,在上面的图表中,见证不会被交给验证者。零知识的关键就是它使我们能够证明有关见证的声明,且不需要泄露见证。
P - 证明:这是由证明者创建、发送给给验证者的证明。