摘要
我们提出了一种新的Layer-2可扩展技术“zkPorter”,可以将zkRollup和分片结合在一个高度可扩展且原子化可组合的区块链网络中。
问题#1:交易吞吐量≠可扩展性???
交易吞吐量是用全网处理的总交易数量来度量的;而可扩展性是单个节点处理的交易数量。zkRollup可以被认为是满足了安全性和有用性的终极Layer-2扩展方案。但是zkRollup相对于主网仅仅提供了约100倍的可扩展性提升,因为交易数据还是需要广播到所有全节点。有人可能会说,zkRollup只是线性提升了吞吐量,但并没有提供指数级的可扩展性。
zkRollup在Eth1上的处理速度可达3000TPS,但保守估计——取决于Eth2实现的细节——在分片化的Eth2上的处理速度至少是20000TPS。相比于Visa最高可达24kTPS的吞吐量,这已经是个巨大的成就了,但因为我们想要帮助今天还不能享受到银行服务的数十亿人,我们还要争取更多。
问题#2:孤立的可扩展性是死胡同?
DeFi的崛起意味着可组合性是成功的关键。作为可以自由组合的“货币积木”,DeFi应用证明了把免信任的协议层层叠加可以解锁的潜在价值。如果一个项目只盯着自己的扩展方案,最终他们会发现自己孤立于由社区共享的、可组合的扩展机制所创造的安全性和网络效应之外。
介绍zkPorter?
在本文中,我们要演示一种新的、基于零知识证明的扩展方案,它有望能解决上述所有问题:zkPorter。
解释zkPorter?
zkPorter是一个账户模式的、基于简洁的零知识证明来保障安全性的免信任型扩展协议。类似于zk家族的其它扩展方案,zkPorter中的计算可以指数级扩展:任意多的交易都可以用几乎恒定的开销来验证。每一笔交易都会由Layer-1上的智能合约来验证,所以zkPorter中的账户状态的正确性与Layer-1上的状态有同样的安全性保证。
河南省地方金融监督管理局关于数字藏品投资的风险提示:金色财经报道,据河南省地方金融监督管理局官方公众号,河南省地方金融监督管理局发布关于数字藏品投资的风险提示,提醒消费者,要高度警惕以数字藏品为代表的NFT(非同质化通证)投资风险,包括:一、投资流动性风险。二、数字藏品质量风险。三、数据信息安全风险。四、数字藏品金融化风险。[2022/11/11 12:49:55]
另一方面,基于零知识证明的扩展方案仍不能直接解决数据可用性问题:如果状态数据变得不可用,资金就会被冻结。zkRollup和Validium是用不同的方法来处理数据可用性问题的。
zkPorter使用了一个结合zkRollup理念和分片理念的混合方法来解决数据可用性问题。它可以支持任意多数量的分片,每一个分片都有自己的数据可用性方案。同时,对分片的选择是在个体账户层面上控制的。
zkPorter将对状态有效性和数据可用性的顾虑分离开来。状态有效性——有效的状态转换才能发生——由零知识证明工具来统一实现,这就能提供指数级的可扩展性,同时继承Layer-1的安全性保证。另一方面,数据可用性则委托给各分片自己解决,可以自由实验不同的解决方案。必要之处求联合,未决之事任自由!
zkPorter中的可组合性:打了激素的区块链互联网?
同步的跨分片互操作性公认是非常难的。这就是为什么现有的分配解决方案都选择了更简单的异步互操作性,用交易收据方法来实现。但是从同步模式转变成异步互操作性,会在协议交互和用户体验上产生许多令人头疼的麻烦,尤其是对那些对时间敏感的应用。
那就让zkPorter来试试!zkPorter里面的所有账户都共享同一个地址空间,而且可以通过运行在zkPorter中的基础分片shard0上的zkRollup与其它账户互操作。一个对流量有很高要求以及/或者特定数据可用性需求的协议可以将自己的协议接口放在自己的分片里面。其中的安全性、成本和吞吐量权衡,我们下文再说。
Peter Schiff声称CNBC避免在关于比特币的文章中提及他的名字:黄金支持者、比特币反对人士Peter Schiff在推特上表示,CNBC在最近一篇关于比特币的文章中避免使用他的名字,CNBC不把他当作比特币批评者令他感到不满。据悉,这篇文章是基于埃隆·马斯克对Peter Schiff的回应,马斯克在推特中称“比特币和以太坊的(延迟和错误)确实看起来很高”。
此前消息,马斯克20日表示,比特币“几乎”和法定货币一样不靠谱。黄金支持者、比特币反对人士Peter Schiff表示,其同意该观点。Peter Schiff认为数字法币“比特币”比央行发行的纸质法币更不靠谱。黄金靠谱,是真正的钱,比两者都好。
马斯克刚对此回复表示,一封说你有黄金的电子邮件和有黄金是不一样的。你不妨拥有加密资产。金钱只是一种数据,可以让我们避免易货带来的不便。与所有数据一样,这些数据也会受到延迟和错误的影响。系统将发展到使延迟和错误这两者最小化的程度。(U.Today)[2021/2/24 17:48:21]
zkPorter让任意数量的协议都可以平滑地互操作。单笔原子交易可以在不同的zkPorter分片上调用任意数量的智能合约。不仅如此,分片内的交易将可以访问整个zkPorter的状态?——包括其它分片上的数据。这一特性可被用于读取来自某个信息输入机制的信息。
你可以把zkPorter模式想象成打了zk激素的区块链互联网。
zkPorter分片:安全性与开销?
zkPorter的Shard0就是一个zkRollup,有完整的数据可用性和以太坊的安全性保证。Shard0会成zkPorter内部运行的分片中最贵的一个,交易成本大约是主网交易的1/100。
Shard0以外的分片会在自己的智能合约中定义自己的数据可用性方案。这些其它分片,牺牲了链上数据可用性,换来了进一步的10~100倍的交易成本节约和吞吐量提升。zkPorter会引入一个可选的验证者机制,我们称之为“zkPorter卫士”,它让协议可以邀请协议的利益相关者作为协议分片的数据可用性保证人而参与进来。使用卫士机制的分片会运行一种权益证明共识机制,因此,只要1/3的参与验证者保持诚实,该分片的用户就能随时带着自己的数据退出。
动态 | 国家互联网信息办公室发布关于《区块链信息服务管理规定(征求意见稿)》:2018年10月19日,国家互联网信息办公室向社会公开征求有关《区块链信息服务管理规定(征求意见稿)》的意见。 意见中提到,区块链信息服务提供者和使用者不得利用区块链信息服务制作、复制、发布、传播法律法规禁止的信息内容。区块链信息服务提供者应当记录区块链信息服务使用者发布内容和日志等信息,记录备份应当保存六个月,并在相关执法部门依法查询时予以提供。 区块链信息服务提供者应当配合有关部门依法进行监督检查,并提供必要的数据支持和技术协助,自觉接受社会监督,设置便捷的投诉举报入口,及时处理公众投诉举报,区块链信息服务提供者开发上线新产品、新应用、新功能的,应当按有关规定报国家和省、自治区、直辖市互联网信息办公室进行安全评估。 区块链信息服务提供者应当在提供服务之日起十个工作日内通过国家互联网信息办公室区块链信息服务备案管理系统填报《区块链信息服务备案登记表》,主要包括服务提供者、服务类别、服务形式、应用领域、服务器地址等信息,履行备案手续。国家互联网信息办公室根据实际情况对《备案登记表》进行调整,并按规定进行公示等内容。 根据中国政府法制信息网公开发布的信息,公众可以在2018年11月2日前登陆该网站进行意见反馈。[2018/10/19]
各协议可以自由选择自己的数据可用性方案,可以包括zkPorter卫士,也可以不使用这种机制。协议所选数据可用性方案的效率就会影响到所在分片的吞吐量和交易成本。
灵活的数据可用性就是zkPorter的核心设计目标。允许了各协议自行设计方案,zkPorter就能支持非常多不同的方案,可以适应每个人的需要。安全假设以受信任的中心化参与者作为保证人的应用可以实现权威证明共识机制。而带有治理代币的应用可以实现自己的权益证明共识机制来保护自己的分片——只不过要避免让分片内的资金体量超过已锁定的验证者押金体量。纠删码机制可以用于证明验证者没有删除数据。比如,考虑到比特币网络相对比较简单、交易数量也低,一个zkPorter分片的验证者完全可以在他们的分片内创造一个比特币实现,运行基于工作量证明的中本聪共识。所有这些都可以与zkPorter的卫士验证者设置相结合,也都可以与之独立运行。
zkPorter在一开始设计时就把扩展当成目标。zkPorter协议将每一个分片的数据可用性和有效性开销降低到了一个很低的水平。增加新分片的边际成本比起在基础的zkRollup上包含嵌套数据所引起的成本是对数级别的。这就让zkPorter可以高效地扩展到支持数亿个账户。
最后,用户的隐私可以得到零知识证明技术的保护。使用一个zkRollup作为zkPorter的基本元素有一个内在的优势,就是状态转换的有效性是可以被证明的,而且可以不用公开这些交易的内容。
架构?
究其实,zkPorter很像zkRollup和Validium。一个放在Layer-1上的智能合约托管着资金、保存着一份对账户状态默克尔根的记录。实际状态数据由zkPorter验证者和各分片的数据保证人保存在链下:我们也管它叫“状态树”。
一个分片的智能合约定义了自己的状态转换规则。当一个zkPorter区块被接受的时候,该块会引起一次状态转换:一笔在Layer-1上的交易会把默克尔根替换成新值。这笔交易必须验证用于证明新值有效的零知识证明:即,要验证该区块中的每一笔交易都是有效的。
在zkPorter中,每个分片的账户都必须存储状态树的一棵独立的子树中。此外,每一个分片子树都必须包含关于自身分片类型的信息,并引用定义其状态可用性策略的智能合约账户。
假设一个分片的类型是zkRollup,那么该分片中每一笔改变账户状态的交易都必须把对状态的更改作为Layer-1的calldata发布出来。
所有会同时修改两个及以上分片状态的交易都必须用zkRollup模式来执行。
而所有其它仅会影响特定一个分片内账户的交易都可以用正常的分片模式来执行。如果一个区块包含了分片S内的一些分片交易,那必须遵循下述规则:
分片S子树的根哈希必须公开一次,作为calldata放到Layer-1上。这是为了让所有其它分片的用户能够重构自己的状态
该分片配套的智能合约必须被调用来执行额外的要求
案例分析?
我准备用4个案例来展示zkPorter的潜能,演示它是如何无缝组合不同的应用、同时扩展交易量来满足每个应用的需要的。
案例1:Reddit社区积分
2020年6月,Reddit启动了TheGreatRedditScalingBake-Off计划,让各个社区有机会通过一个社区积分系统来主持自己的子论坛,也让各Layer-2方案能一展身手。显然,社区积分系统的解决方案必须是安全的、去中心化的和易用的,同时还能保持与其它第三方应用的互操作性,还有,能处理数以十万计的交易。社区积分可以用zkPorter来实现,有三种不同的方式。
选项1:运行在zkSync上
为让社区积分连接到以太坊主网,Reddit可以直接在zkSync上使用现有的zkRollup功能。zkSync在Eth1上可达到3000TPS。假设所有5亿Reddit月活用户都踊跃参与。再假设平均每个用户在每个月里要发送一笔铸币交易、一笔销毁交易和两笔转账,则社区积分系统要求的平均负载是:
5亿×4/约等于700TPS
这只占zkRollup当前吞吐量的1/4。
选项2:放到一个Reddit专属的分片上,由zkPorter卫士来验证
若有意提高交易吞吐量的弹性并降低用户的使用成本,Reddit可以将Reddit交易从基础分片下放到一个Reddit专属的分片上。Reddit可以自己选择向用户提供数据可用性保证的方案。最简单的办法就是现有的zkSync卫士实现,向用户提供由权益证明实现的数据可用性保证。我们会建议Reddit除了使用卫士模板,还要把数据存储在Reddit的服务器里。在这种模式下,即使卫士遭受2/3多数攻击,Reddit也能应付下来,这样用户就高枕无忧了。相应地,用户的数据也不会因Reddit服务器出错、被攻击而倾覆。
选项3:放到一个Reddit专属分片上,使用专属的数据可用性策略
第三种方法是,Reddit可以选择最大化交易吞吐量、最小化用户成本,就是将Reddit社区放到一个专属分片上,同时使用一个定制化的数据可用性方案,而不用卫士机制。一种基于权益证明共识的可行方案是,基于社区驱动的数据可用性,再加上2/3的多签名机制。
设想一种可能的方案实现:Reddit和Reddit的用户会发送签名来见证每一个状态转换的有效性。Reddit可以,比如说,占据1/3的总签名权重,把2/3分发给用户。再加上一个签名权重的2/3多数机制,足以保证Reddit分片上的状态转换是有效的。可以激励用户发布关于自己所见无效转换的证明,比如扣减该无效状态转换的发布者的押金。
交易成本在这种方案中会变成仅覆盖零知识证明的生成所需的成本
互操作性
在所有这些场景中,Reddit社区积分的持有者都能够:
容易地与其它分片上的智能合约互动,比如使用部署在zkSync上的DeFi协议来交易/出借/贷款
把他们的社区积分转移给一个zkRollup分片上的用户
快速取出他们的代币到以太坊主网上,与zkSync以外的智能合约互动
案例2:智能钱包/密码学货币银行
智能钱包就是用智能合约来实现的钱包,可以帮助用户获得隐私功能和互操作功能。一些智能钱包比如Argent,甚至在引导新用户的过程中会选择性地为用户补贴一定比例的交易手续费。以当前的GasPrice和以太坊价格来算,一笔交易就是0.5美元。智能钱包可以使用智能合约调用zkRollup函数来降低整体的Gas开销。
这里提供一种可能的实现方案,分3个简单的步骤。
步骤1:zkRollup分片
智能钱包的账户可以迁移到一个zkRollup解决方案上。zkSync内部的钱包之间的转账是很便宜的,虽然从zkSync发送到主网的交易会稍微贵一点,而且耗时也更久。
步骤2:zkSync卫士钱包运营者分片
在引入足够多的新用户之后,在zkRollup上运营的成本可能会让钱包运营者考虑开启一个专属分片。在上文的Reddit部分中,我们就详细讲解过这种方案:把用户基础迁移到一个独立的、由zkSync卫士和钱包运营者来保证其数据可用性。只要钱包运营者或者zkSync卫士中的大部分没有被攻破,分片就是安全的。这一选项也为钱包运营者的灵活手续费分享方案打开了可能性。
步骤3:钱包DAO分片
到了某一刻,钱包的用户基础可能会变得非常大,达到钱包需要迁移到一个由治理代币来治理的分片上。这个分片仍会是zkSync网络的一部分,而且可以用zkRollup模式访问所有其它分片上的服务。
隐私考虑
还需进一步说明的是:隐私功能在上述任一步中都很容易实现。没有零知识证明,就很难实现隐私性。但zkRollup的好处就在于,账户可以即时获得隐私性、大幅降低参与网络的费用,而且无需牺牲安全性和去中心化。
案例3:DeFi协议和DEX
预见到了未来会出现的吞吐量瓶颈,多个主流的DeFi应用都投资于部署自己的可扩展性解决方案。这是很聪明的一步,因为这一方面给了他们在GasPrice高企时候的竞争优势,另一方面也给了他们对可扩展性技术/牺牲的更深刻理解。
不仅如此,对于渴望支持高频交易的去中心化交易所来说,单笔交易的费用必须尽可能小,因为吃下一个单需要非常高的交易数量。
不过,这一方法面前横亘着两大问题:
孤立的可扩展性缺乏可组合性,或者说网络效应。
随着零知识证明技术的潜力完全展现,越来越多人意识到,零知识证明是大规模普及的关键。与此同时,ZKP领域的创新速度很快,以至于要跟上节奏必须有自己专门的研究开发团队。但是,如果不能很好地审计和实现复杂的密码学算法,等待他们的可能是严重的安全漏洞。密码学领域的黄金法则还是对的:不要闭门造车搞一套只有你自己知道的密码学。
zkPorter就解决了这个问题。DeFi协议可以建立在先进的可扩展性技术和强大的网络效应上,同时控制交易成本。要拥有这些,一个协议可以在zkPorter内创建一个自己的分片,用协议代币持有者的共识来保护它。这也为灵活的手续费共享提供了机会。
案例4:微交易
需要处理大量低价值转账的协议可以实现一个类似于Validum的分片,让交易手续费低到弥补零知识证明的生成成本即可。
如此整合微交易平台,则用户还可以在余额超过一定额度之后自动将余额转移到一个zkRollup分片中。
前进的道路?
zkPorter将作为zkSync路线图的一部分而初步实现。
对于这一愿景,接下来我们要做的有:
为zkSync提供对通用的智能合约的支持
实现一种多验证者的共识机制
分发zkSync代币来启动卫士保护型分片
zkSync已经上线以太坊主网,现在就可以使用免准入的zkRollup模式了。我们相信它的吞吐量对于满足以太坊社区接下来两年内的需要是足够的了。不过,我们欢迎大家讨论和实现定制化的分配解决方案、缔结密切的合作伙伴关系。
请在这里联系我们。
提醒
zkSync现在还没有发行过代币,暂时也没有销售和分发计划。请警惕局。
原文链接:
https://medium.com/matter-labs/zkporter-composable-scalability-in-l2-beyond-zkrollup-2a30c4d69a75
作者:?AlexGluchowski
翻译:?阿剑
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。