EthWorks:零知识证明与区块链扩展(上)

2020-07-28 11:47 栏目:经验之谈 来源:网络整理 查看()

编者按:本文是由EthWorks撰写的关于零知识证明和区块链扩展方案之间关系的报告;简要介绍了可扩展性、零知识证明和ZK汇总扩展方案。本译文的校对得到了阿部实验室的大力支持,他们对原报告中的不足和遗漏做了很多解释(括号中以“阿部出版社”开头的段落是后来的补充内容)。我想对他们表示衷心的感谢。

1.介绍

1.1可扩展性问题

你可能已经知道了很多关于区块链的历史(但我会说更多的废话)。2017年,比特币开始成为主流媒体的头条,引起了前所未有的关注。全世界的人们都看到了这项技术面临的挑战。随着比特币的日益普及,比特币交易大量发生,网络拥塞达到了前所未有的程度。交易费用飙升使得比特币转账变得不切实际。最近,以太博物馆也揭露了同样的问题。与低峰期相比,以太网的燃气费增加了30到50倍。

所有这些现象所反映的问题早已为整个社会所知:比特币区块链的最初设计不适合大规模推广。比特币每秒只有几笔交易,远远落后于维萨或贝宝等主流支付网络。我们通常称这种限制为区块链可伸缩性问题。

以太网旨在比比特币更快地确认交易,但这远远不足以解决这个问题。以太网的交易吞吐量比比特币高——,但每秒的交易吞吐量只有12个——,不足以大规模采用该网络。以太博物馆将会拥挤不堪,甚至简单的智能合同操作也要花费几美元。

旁注:区块链实际吞吐量

从比特币的设计来看,理论上它的交易吞吐量仅为每秒7笔交易。事实上,由于空块和复杂的输入输出事务等问题,平均吞吐量仅为每秒3个事务。当比特币网络在2017年通过软分叉更新隔离见证协议时,吞吐量增加到4.6个事务,但仍不能达到每秒7个事务。

同样,以太网的设计事务吞吐量是每秒15个事务。但是,该限制是动态的(取决于矿工设定的区块气体限制)。假设当前网络将Gas的上限设置为1200万块,实际吞吐量将达到每秒36个以上的事务。然而,这种推论只适用于块中只有以太网传输事务的情况,因为令牌传输的成本要高2.5倍,更不用说与智能契约的更复杂的交互了。

在区块链行业,许多可伸缩性项目都惨败。其他项目只停留在白皮书阶段,或者砍掉他们的脚,歪曲区块链的内涵,以骗取关注。我们有理由相信可伸缩性问题没有最终的解决方案,新的解决方案总是会增加复杂性和难度。

即使我们接受这个事实,过去几年在可扩展程序领域的进展仍然令人沮丧。然而,黑暗的尽头是光明,我们即将迎来一个转折点。

今年早些时候,当一位客户要求我们调查可扩展性解决方案市场时,我们似乎听到了革命的号角。最近,几个有前途的团队宣布了项目里程碑。以太博物馆团体渴望再试一次。

我们知道太多的信息可能会产生误导,使我们很难掌握整个情况,所以我们决定帮助您理清头绪。通过这篇文章,我们希望与区块链开发者甚至整个区块链社区分享我们的可伸缩性研究结果。我们相信,本文将帮助您了解零知识证明和两层可伸缩性方案的潜力,同时,对这些技术有更深的理解。

1.2报告内容

与过去相比,可扩展解决方案的市场已经发展起来,许多致力于开发此类解决方案的公司已经分道扬镳。面对如此多的解决方案,我们很容易迷失方向,找出哪些解决方案最有希望。

因此,我们决定仔细分析和比较这些解决方案,找出最有潜力的解决方案,并帮助企业家和开发者做出正确的选择。我们主要关注基于零知识证明的两层方案,因为我们发现这些方案具有较高的安全性和相对较短的退出时间,所以从长远来看它们具有最大的潜力。

本文中至少有两个有前途的方案没有涉及到:最优汇总和状态通道。这两种方案都不是基于零知识证明的,因此超出了本文的范围。

附带说明:什么是双层解决方案?

两层可扩展性解决方案的目标是在现有区块链协议的基础上增加附加协议,提高以太网的最大吞吐量(即事务处理速度),并降低最终用户支付的事务费。与第一层方案如ETH 2.0不同,第二层方案将基本协议作为一个分散的安全层,然后在其上构建另一层(不改变以太网的一致算法或任何其他核心概念)。

两层方案将原本由以太网执行的计算转移到链中,并以以太网作为安全保证。由于计算转移到链中,链中存储的数据量大大减少,从而降低了交易成本,加快了交易速度。

2.零知识的证明

2.1导言

本文详细介绍的解决方案使用零知识证明密码来保证交易安全和实现离线计算。因此,在深入研究可伸缩性解决方案之前,我们需要对零知识证明技术有一个基本的了解。

零知识证明(ZK)是密码学的一个分支,也是区块链社区近年来追求的热点之一。通过零知识证明,一方(证明者)可以向另一方(验证者)证明他有一些知识,但是不需要披露知识本身和可以用来破解该知识的其他信息。证明者只需要向验证者传达和证明他确实拥有这些知识。

如果你不明白也没关系。让我们举一个零知识证明的简单例子。

2.2现实生活中的例子

康斯坦丁诺斯查尔基亚斯给出了一个关于零知识证明如何工作的极好例子。假设有两个好朋友维克多和佩吉,他们都喜欢在周末去公园玩杂耍。维克多是一名红绿色盲患者。对他来说,这些球都是一样的颜色。

他们决定像往常一样去中央公园玩杂耍。佩吉带来了一个红色的球和一个绿色的球。维克多是一名红绿色盲患者,他看不出这两个球的区别。

为了向维克多证明这两个球的区别,佩吉让维克多一只手拿着一个球,藏在背后,然后反复交换手中的球。每次交换之后,维克多都会给佩吉看任何一个球,并问她这个球是否和上一个不同。

每当维克多交换他手里的球时,佩吉就能分辨出他展示的球和最后一个球是否不同,因为她能分辨出红色和绿色。这样,维克多可以肯定佩吉知道这两个球的区别,而他却不知道这两个球的颜色。这是零知识的证明。

尽管佩吉有50%的概率能够猜测一两次,但他们重复的次数越多,被猜测的概率就会无限接近零。因此,维克多可以肯定这两个球的颜色是不同的。

EthWorks:零知识证明与区块链扩展(上)

EthWorks:零知识证明与区块链扩展(上)

2.3零知识证明与区块链

零知识证明可用于生成密码证明,证明已经根据预定规则执行了某个计算。这种证据可以通过编程的计算机程序生成,并可以自动验证。

零知识证明有助于解决可扩展性问题的原因是零知识证明本身比它所代表的数据小得多,零知识证明可以用来实现交易的匿名性。

(阿比盖尔:并非所有零知识证明技术产生的证明都比陈述小得多。零知识证明技术只需要满足三个要求:完整性、可靠性和零知识,但它不需要有这么小的容量。(

附带说明:基于零知识证明的可伸缩性方案不会从根本上改变区块链的可伸缩性,只会改变区块链的用法:所有的小计算都是从一个链转移到另一个链,区块链只需要验证大量的计算结果。

由两级扩展方案生成的零知识证明首先需要符合一组预定义的规则。如果是交易系统,这套规则可能类似于区块链的共识规则,例如,每笔交易都必须正确签名,否则用户可能不会透支。两层系统将规则转换成一系列数学表达式(电路和多项式),然后使用这些数学表达式创建零知识证明生成过程所需的两个计算机程序:证明者和验证者。

EthWorks:零知识证明与区块链扩展(上)

只要有认证者和验证者,我们就可以使用这个系统来生成和验证交易。假设爱丽丝钱包里有3个钱,她想给鲍勃转一个账户。她签署了交易,交易数据被提交给认证机构。证明者使用这些数据来生成零知识证明,然后将其发送给验证者。现在让我们考虑以下两种情况。

2.3.1生成零知识的有效证明

验证者可以在根本不知道交易信息的情况下验证爱丽丝是否根据预定义的规则执行了交易。其中一个规则是爱丽丝不能透支,所以如果她想转2 ETH,验证者会同意交易。

EthWorks:零知识证明与区块链扩展(上)

2.3.2生成零知识的虚假证明

现在,假设爱丽丝想发送5个以太。显而易见,交易将在证明阶段被拒绝。即使证明人做了坏事,交易也不会被允许,也不会通过证明人的验证,因为它没有按照规定执行。

EthWorks:零知识证明与区块链扩展(上)

(阿比盖尔:读者应该注意,第2.3.1章和第2.3.2章是零知识证明属性中的“完整性”和“可靠性”:正确的证明必须通过验证;错误的证据一定不能通过验证。这里不使用零知识证明的“零知识”。因此,如果不需要满足隐私要求,而只是为了提高可扩展性,那么任何满足完整性、可靠性、简单性(小认证量)和快速验证速度的认证系统实际上都可以用于相同的目的。因此,维塔利科曾建议“用讽刺取代ZK汇总的ZK前缀”,或给出一个更详细的名称,如“Validium”,因为这些方案实际上都没有使用零知识属性。包括StakWare在内,都一直强调他们正在使用证明系统来证明计算的完整性。然而,当ZK汇总深入人心,阿兹特克使用零知识证明(提供隐私)汇总方案,所以它必须被命名为ZK-ZK-汇总。尴尬)

2.4 SNARK vs. STARK

到目前为止,已经有许多基于零知识证明的密码学证明,其中最著名的是SNARK和STARK。他们之间有非常重要的联系。

SNARK代表:

简洁:证据比它所代表的数据要小得多,而且可以很快得到验证。

非交互:证明者只向验证者发送一组信息,所以他们之间不需要交互。

知识论证:从计算层面来看,我们认为证明是完整的。——恶意认证者不能欺骗系统,除非技术顾问真正知道知识的具体内容,以便支持技术顾问提出的证据。

(阿比盖尔:在密码学中,证明和证明是有区别的。该方案的可靠性可以称为证明;只有当它能够抵抗拥有无限计算资源的证明者时。论证只需要能够抵抗计算能力是多项式的恶意证明者,而不需要抵抗计算能力是无限的恶意证明者。(

可伸缩性解决方案使用的SNARK需要在证明者和验证者之间建立一个可信的设置。可信初始化是一组类似于游戏规则的初始公共参数,由一组志愿者参与者在指定时间执行联合计算生成,即所谓的可信设置仪式。只要至少有一个参与者是诚实的,就可以安全地生成参数。因此,参与者人数越多,该机制的可信度就越高。

STARK(例如,StarkWare开发的FRI-AIR STARK)不需要可信初始化——。因此,这里的“t”代表“透明”。这为整个系统消除了单点故障的隐患。尽管STARK证明的数据量很大,但对于大批量交易,成本可以同等计算。因此,STARK可以提高可扩展性。

附带说明:就基于早期SNARK技术(即Grot 16)的解决方案而言,每次Grot 16带着新版本上线时,都会执行一个可信的初始化仪式。因此,当下面描述的循环去年上线时,也有必要实施这个机制。SNARK的一个变体叫做SNARK(通用SNARK或SNORK)(例如,PLONK和SONIC)。在这项技术中,使用了通用可信设置。例如,zkSync的创建者在发布新版本时不需要实现可信的初始化机制:他们重用了包括Vitalik在内的200多位名人去年进行的多方计算的执行结果。通过通用可信初始化,协议中使用的零知识证明方案可以在不执行新仪式的情况下被扩展或更新。

(Abe press:snork=被动非交互的文档(通用)知识参数,它实际上是SNARK,具有通用和可升级的可信初始化设置。(

EthWorks:零知识证明与区块链扩展(上)

本文描述的解决方案的共同点是它们都使用零知识加密。它们之间的区别源于数据可用性的问题。

3.体系结构

3.1数据可用性问题

交易数据和与用户余额相关的信息可以存储在底层区块链中,也可以不存储,这需要在可伸缩性和安全性之间进行基本的权衡。

存储在链上的数据的安全性类似于直接在以太网上存储资产,而不需要用户执行额外的操作。用户可以随时获取数据。这一点非常重要,尤其是当可伸缩性解决方案提供商的服务器被损坏或损坏时。链上数据的可用性允许用户创建证书来证明他们持有一定数量的令牌,这些令牌可以直接从智能合同中取出,而无需与两层系统交互。基于零知识证明的解决方案将数据存储在链中,这种解决方案称为zkRollup。

在链下存储数据的可伸缩性方案引入了数据可用性问题,这将削弱两层方案的安全性。一旦可伸缩性解决方案提供商终止合作,普通用户就不能提取他们的资金,除非他们能够获得代表其余额的数据。这种解决方案叫做Validium。为了缓解数据可用性的问题,这种方案可以引入一个多方委员会,该委员会负责存储数据副本,并在提供商的错误行为或服务终止的情况下与用户共享数据副本。

然而,在链下存储数据有一个很大的优势:更高的可伸缩性。使用离线存储的解决方案不需要受到区块链的限制。因此,与使用链存储的解决方案相比,这种解决方案更有助于提高事务吞吐量。

最近,StarkWare提出了一个混合解决方案,允许用户自由选择是在链上还是链外存储数据。用户可以在每次启动交易时进行选择,因此他们的选择是动态的。这种可伸缩性解决方案被称为意志。

EthWorks:零知识证明与区块链扩展(上)

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发