写在前面:本文由MatterLabs发布,该公司得到了以太坊基金会的资助,目前在扩容方案方面取得了一定的进展。其在文中提出了一个layer2解决方案,可以在不牺牲去中心化的情况下满足数百万用户的需求,同时保证隐私,并且带来流畅的用户体验。
以下为文章完整内容:
解决公有区块链扩容问题的一个成功方案不仅仅与交易吞吐量有关,其还必须做到,系统在不牺牲去中心化的情况下满足数百万用户需求。加密货币全面普及的先决条件包括高速、低成本、流畅的用户体验和隐私。
在缺乏技术突破的情况下,现有的扩容方案不得不对上述需求中的一个或多个做出重大妥协。幸运的是,零知识证明的最新进展为解决这个问题开辟了全新的可能性。
今天,MatterLabs很高兴地向大家展示我们对ZKSync的展望:基于ZKRollup的以太坊去信任化扩容和隐私解决方案,强调用户和开发人员的卓越体验。我们也很自豪地宣布推出了针对ZKSync的devnet。
ZKSync旨在为以太坊带来Visa级别、每秒数千笔交易的吞吐量,同时保证资金与layer1账户一样安全,并保持高度的抗审查性。协议的另一个重要方面是它的超低延迟:ZKSync中的交易将提供即时的经济终结。
我们赞同简化设计的理念,并倾向于循序渐进的协议演进,一个接一个地引入功能,在每一步都为用户带来最切实的价值。这就是为什么我们从基础开始,首先关注基本的可扩展性,然后是可编程性,最后是隐私。
区块链扩容最难的问题
今天,在现实情况中,加密货币仍然主要用于投机。如果没有真正实现大规模普及,神奇的互联网货币、DeFi、Web3.0和所有其他有前景的区块链创意的价值主张将几乎无法实现。
可扩展性不仅仅是交易吞吐量,还包括区块链系统满足数百万用户需求的总体准备状态。
让我们来看看向大众普及区块链革命的三个最困难的问题。
挑战1:保持去中心化
现实世界普及需要的交易吞吐量比如今最去中心化的区块链高出一个数量级。比特币的TPS是7个,以太坊是15,而Visa是2000。
但比特币和以太坊的速度慢是一个功能,而不是缺陷!通过减少验证者的数量来提高速度是可能的。这两个领先的区块链网络中的大量全节点是它们最重要的资产。这提供了网络的弹性,实际上是它们与现有金融机构的本质区别。
另一种普遍的可扩展性方法是要求每个验证者只检查部分相关的区块链流量,而不是全部。但这不可避免地引入了额外的信任假设,并将此类系统置于非常不可靠的博弈论基础之上。
挑战2:实现隐私
大多数人都不愿意把大部分财产放到一个一览无遗的玻璃盒子里。危险地区的居民不太可能用加密货币支付,否则接收者就能马上知道他们有多少钱。如果这些支付可能与用户的真实身份相关联,那么人们就不太可能使用加密货币来替代Paypal。
此外,在链上保密性缺失的情况下,像GDPR和CCPA这样的隐私法规将驱使普通企业远离公有区块链,转向更中心化的支付和金融中心,将我们日益无现金化的社会变成一场监控噩梦。
隐私是大规模普及的绝对先决条件。
由于以下几个因素,在公有区块链中实现隐私尤其困难:
1.作为一个完整协议功能,隐私必须是默认开启的。引用VitalikButerin的话:“如果你的隐私模型有一个中等的匿名集,它实际上有一个小的匿名集。如果你的隐私模型有一个小的匿名集,匿名集数量实际上只有1。只有全球匿名集才是真正安全的。”
2.为了实现默认隐私,隐私交易成本必须非常低,尽管会增加大量的计算支出。
3.隐私模型必须支持可编程性,因为现实世界的应用需要的不仅仅是转账:需要账户恢复、多重签名、支出限制等。
挑战3:满足用户体验预期
现实是残酷的:产品经理很清楚,用户通常更喜欢更简单、更轻量级的体验,即时满足,往往忽略了长尾风险。从熟悉的东西切换到新的东西需要下很大的决心。对一些人来说,加密货币的价值主张就足够了。但这些人可能已经在船上了。我们需要至少数百万人来达到加密货币实现其承诺所需的规模。
为了吸引数百万的主流用户,我们需要提供给他们一种用户体验,这种体验不仅要符合这些预期,还要超越这些预期。我们必须在保持人们已经习惯的传统Web产品的所有便利属性的同时,提供全新的可能性。一切都必须快速、简单、直观和容错。
ZKSync的承诺:去信任化、保密、快速
在这篇技术文章中,我们将探讨ZKSync的高级体系结构、设计选择和属性。
1.安全性:扎根于ZKRollup
ZKSync建立在ZKRollup的概念上。
简而言之,ZKRollup是一个layer2扩容决方案,其中所有资金由主链上的智能合约持有,而计算和存储则在链下执行。每个Rollup区块都会生成一个状态转换零知识证明,并通过主链合约进行验证。这个SNARK包含了Rollup区块中每笔交易有效性的证明。此外,每个区块的公共数据更新在主链网络上作为低成本的calldata发布。
该架构提供了以下保证:
Rollup验证者永远不会破坏状态或窃取资金。
用户始终可以从Rollup中检索资金,即使验证者因为数据可用而停止合作。
由于有了有效性证明,为了防止欺诈,用户或单个可信第三方都不需要在线监控Rollup区块。
换句话说,ZKRollup严格继承了底层layer1的安全保证。这一点,再加上以太坊丰富的社区和现有的基础设施,是我们决定专注于layer2解决方案,而不是试图建立我们自己的layer1的决定性因素。
在以太坊基金会的资助下,MatterLabs在过去的一年中致力于ZKRollup技术。我们已经完全重写了这个架构和ZK电路自从推出的第一个原型。最新的版本整合了我们从社区获得的反馈,并实现了各种可用性和性能改进。
2.可用性:实时交易
我们期待ZK验证技术目前的发展,以达到证明时间,让ZKRollup区块在一分钟内产出。一旦向主链提交了一个区块证明,并通过Rollup智能合约进行验证,那个这个区块中的所有交易都将完成,现在将获得layer1防重组保证。
但在零售和在线支付领域,即使是以太坊的15秒区块延迟也可能太长。我们怎样才能做得更好?
可以这样做:在ZKSync中,我们引入了即时交易收据。
被选中参与ZKSync区块产出的验证者必须在主网上与ZKSync智能合约签订重要的安全协议。验证者运行的共是给用户提供一个次秒级的确认,确认他们的交易将被包含在下一个ZKSync区块,由绝对多数的三分之二的共识参与者签名。
如果产生了一个新的ZKSync区块并将其提交到主链,则无法将其恢复。然而,如果它不包含已承诺的交易,原始收据的签名者和新区块的签名者的安全担保交集将被削减。这个交集是保证持有三分之一以上的stake。这可以保证至少三分之一的安全担保可以削减,只有恶意用户将受到惩罚。
部分削减的资金将用于补偿交易接收方。其余的将被烧毁。
削减可以由用户自己触发,也可以由在原始交易收据上签名的诚实参与者触发。后者将有一种天然的动机去揭发欺诈:如果他们参与了随后的区块产出,它们也可能遭遇大幅削减。因此,在共识中至少有一个诚实的参与者足以发现欺诈。
让我们检查一下这个协议的特性。我们将零确认交易称为一个带有ZKSync区块即时收据的交易,该区块尚未发布到以太坊。
在ZKSync上双花零确认交易只可能在很短的时间内被利用,直到区块证明在主链上发布。此外,恶意验证者会诱用户接受价值超过安全担保六分之一的零确认交易。
从买家和商家的角度来看,零确认交易是:
即时的
可逆的,但只在几分钟内
只有在同时攻击成千上万的商家时才可逆,而不是一个接一个。
与信用卡支付相比,这是一个巨大的用户体验和安全改进!让我们从不同的角度来看:
拥有实体商品的在线商店可能会立即向用户确认购买,但不会受到攻击,因为他们会在发货前等待完全的确认。实体店在处理小额交易时几乎不受攻击。即使你是根据即时的交易收据来出售Macbook,也需要不同位置的数千名经过协调的物理攻击者和大多数验证者的配合才能让你蒙受损失。
让我们再深入挖掘一下。为了量化风险,可以将担保提供的经济保障与PoW区块链提供的结算保证进行比较。例如,Coinbase在考虑以太坊交易的最终性之前需要35个交易的确认。从AWS租用GPU,进行10分钟51%攻击来撤回此交易的成本大约为60000美元。假设有数百万美元的安全担保,撤回即时的ZKSync收据所需付出的成本更大。因此,即时收据通常具有类似于以太坊的性质,甚至具有更好的经济终结性。
重要的是,即时的交易收据也防止了以太坊区块重组,因为他们的有效性是独立于以太坊存在的。此外,以太坊的结算保证与ZKSync的结算保证可以互相结合。
3.活性:抗审查和抗DoS
所有扩容方案一个不可避免的特性是,大多数用户不能参与所有的交易验证。这导致需要在所有layer2扩容方案中设置专门的角色。这些角色在安全性和性能方面的改进带来了中心化和审查的风险。
ZKSync的设计解决了这个问题,在长期运行中引入了两个不同的角色:验证者和守护者。
验证者
验证者负责将交易打包进区块并为它们生成零知识证明。它们参与共识,因此必须为即时的交易收据贡献一部分安全担保。它们的节点必须在具有良好互联网带宽的安全环境中运行。或者,他们可以选择在无担保的云端中生成ZK证明。
验证者将获得交易手续费,可以用正在交易的任意token支付。
为了保持ZKSync的共识速度,在任何时候都只允许有限数量的验证者。但是,回想一下,ZKRollup验证者是完全去信任化的。在ZKSync中,恶意的验证者既不能危害系统的安全性,也不能诚实的验证者来破坏条件。因此,与optimisticrollups不同,验证者可以由守护者频繁地轮换。与此同时,只要被提名的验证者中有三分之二以上的人是诚实且可运作的,就可以保证共识的活性。
守护者
守护者大多是ZKSynctoken持有者,他们通过质押token的形式选出验证者。守护者的目标是监控点对点的交易流量,检测审查行为,并确保被发现审查的验证者不被提名。守护者的动机是通过确保ZKSync保持抗审查和抗DoS来保护他们的stake价值。
尽管ZKSync将投票密钥保存在线上,但守护者永远不会面临资产被削减或被盗的风险。他们也可能只监控一部分流量。因此,它们的节点可以在普通的笔记本电脑或云服务器上运行,也就是说,不需要专门的验证者服务。
守护者以ZKSynctoken的形式从验证者处获得费用奖励。他们的收益和stake会被锁定很长一段时间,以激励他们优先考虑ZKSynctoken的长期价值,而不是短期回报。
4.可编程性和隐私:构建区块
实现高效的可编程性和隐私是ZKSync愿景中最困难的部分。它需要对适当的零知识证明系统和智能合约编程框架进行可靠的设计和部署。
RedShift:透明的通用SNARK
实现基于ZK的智能合约的最大障碍是缺乏有效的具有递归组合的通用ZK证明系统。Groth16是当时效率最高的ZKSNARK,它需要专用的可信设置,在应用递归时可能会影响效率。另一方面,基于FRI的STARKs需要高度专业化的技能来构建任意通用电路,并且缺乏有效的递归组合。
这是我们研究RedShift的主要动机之一:一个新的透明、高效、简洁的SNARK,来源于我们基于FRI的多项式承诺方案。我们目前正在同时进行同行评审和社区反馈,然后将部署RedShift作为ZKSync的核心部分。
RedShift是一种通用的SNARK,它允许我们使用它方便地将任意程序转换成可证明的ZK电路。异质电路可以在一个SNARK中递归地组成。RedShift似乎是抗量子的,因为它只依赖于抗碰撞哈希函数。
Zinc:零知识智能合约框架
在ZKSync的可编程性模型的设计中,我们致力于几个正交目标的组合:
较高的可扩展性
支持公共和私有智能合约
最重要的是:用起来很简单
上述特点是许多优秀项目的目标,但是没有一个项目同时承诺所有这些目标。例如,ZkVM提供了一个用于通用保密智能合约的虚拟机,但它是基于bulletproofs的,不支持简洁的证明聚合。ZEXE有一个优秀的隐私保护设计,但需要深入了解零知识电路的细节和权衡,这造成了准入门槛过高。其他更简单的ZK编程框架缺乏安全智能合约开发所需的特点。
这是我们决定创建Zinc的原因:一个安全、简单、高效的编程框架和基于虚拟机的运行时环境,专门为基于ZKP的智能合约设计。
SyncVM的设计重点是安全性和开发者友好。用于定义合约的编程语言严格遵循简化的Rust语法,智能合约编程元素借鉴了Solidity和Libra的MOVE。它不需要开发者深入了解ZKP的细节来编写高效和安全的程序。事实上,拥有Rust、Solidity、C++或类似编程语言背景的开发者可以在一天内学会Zinc。
Zincv0.1将在2020年1月发布。
ZKSyncv0.1开发者网络已上线
ZKSyncv0.1开发者网络已上线。此版本的范围仅限于在单操作符设置中进行以太坊和ERC20代币传输。
开发者网络v0.1的发布是实现ZKSync功能的第一步。这需要大量的研究、实验和开发工作。一些设计方面的内容可能会随着我们的学习和反馈而改变。但我们承诺,这一愿景不会改变:ZKSync将成为数百万用户进入加密货币世界的桥梁。我们为用户体验设置了很高的标准,并将证明ZK技术能够在不牺牲区块链革命价值的情况下提供类似于Web的体验。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。