引介 | zkPorter:Layer-2 的可组合可扩展性
摘要: zkPorter 使用了一个结合 zkRollup 理念和分片理念的混合方法
摘要
我们提出了一种新的 Layer-2 可扩展技术 “zkPorter”,可以将 zkRollup 和分片结合在一个高度可扩展且原子化可组合(atomically composable)的区块链网络中。
问题 #1:交易吞吐量 ≠ 可扩展性 ⚖️
交易吞吐量是用全网处理的总交易数量来度量的;而可扩展性是单个节点处理的交易数量。zkRollup 可以被认为是满足了安全性和有用性的终极 Layer-2 扩展方案。(编者注:见文末超链接《各以太坊 Layer 2 扩容方案的评估对比》)但是 zkRollup 相对于主网仅仅提供了约 100 倍的可扩展性提升,因为交易数据还是需要广播到所有全节点。有人可能会说,zkRollup 只是线性提升了吞吐量,但并没有提供指数级的可扩展性。
zkRollup 在 Eth1 上的处理速度可达 3000 TPS,但保守估计 —— 取决于 Eth2 实现的细节 —— 在分片化的 Eth2 上的处理速度至少是 20000 TPS。相比于 Visa 最高可达 24k TPS 的吞吐量,这已经是个巨大的成就了,但因为我们想要帮助今天还不能享受到银行服务的数十亿人,我们还要争取更多。
问题 #2:孤立的可扩展性是死胡同 🛑
DeFi 的崛起意味着可组合性(composability)是成功的关键。作为可以自由组合的 “货币积木”,DeFi 应用证明了把免信任的协议层层叠加可以解锁的潜在价值。如果一个项目只盯着自己的扩展方案,最终他们会发现自己孤立于由社区共享的、可组合的扩展机制所创造的安全性和网络效应之外。
介绍 zkPorter 🎉
在本文中,我们要演示一种新的、基于零知识证明的扩展方案,它有望能解决上述所有问题:zkPorter。
解释 zkPorter 🥜
zkPorter 是一个账户模式的、基于简洁的零知识证明来保障安全性的免信任型扩展协议。类似于 zk 家族的其它扩展方案(例如 zkRollup 和 Validum),zkPorter 中的计算可以指数级扩展:任意多的交易都可以用几乎恒定的开销来验证。每一笔交易都会由 Layer-1 上的智能合约来验证,所以 zkPorter 中的账户状态的正确性与 Layer-1 上的状态有同样的安全性保证。
另一方面,基于零知识证明的扩展方案仍不能直接解决数据可用性问题:如果状态数据变得不可用,资金就会被冻结。zkRollup 和 Validium 是用不同的方法来处理数据可用性问题的(编者注:见文末超链接《ZK rollup 与 Validium 对比》)。
zkPorter 使用了一个结合 zkRollup 理念和分片理念的混合方法来解决数据可用性问题。它可以支持任意多数量的分片,每一个分片都有自己的数据可用性方案(由该分片的智能合约来定义)。同时,对分片的选择是在个体账户层面上控制的(The choice of the shard is controlled at individual account level)。
zkPorter 将对状态有效性和数据可用性的顾虑分离开来。状态有效性 —— 有效的状态转换才能发生 —— 由零知识证明工具来统一实现,这就能提供指数级的可扩展性,同时继承 Layer-1 的安全性保证。另一方面,数据可用性则委托给各分片自己解决,可以自由实验不同的解决方案。必要之处求联合,未决之事任自由(In necessariis unitas, in dubiis libertas)!
zkPorter 中的可组合性:打了激素的区块链互联网💊
同步的跨分片(或者说跨区块链)互操作性公认是非常难的(编者注:中译本见文末《区块链分片的理念与挑战,Part-1》)。这就是为什么现有的分配解决方案(Cosmos、Polkadot、Eth2)都选择了更简单的异步互操作性,用交易收据方法来实现。但是从同步模式转变成异步互操作性,会在协议交互和用户体验上产生许多令人头疼的麻烦,尤其是对那些对时间敏感的应用(即,Aave 的 15 秒闪电贷)。
那就让 zkPorter 来试试!zkPorter 里面的所有账户都共享同一个地址空间,而且可以通过运行在 zkPorter 中的基础分片 shard 0 上的 zkRollup 与其它账户互操作。一个对流量有很高要求 以及/或者 特定数据可用性需求的协议可以将自己的协议接口放在自己(在 zkPorter 中)的分片里面。其中的安全性、成本和吞吐量权衡,我们下文再说。
zkPorter 让任意数量的协议都可以平滑地互操作。单笔原子交易可以在不同的 zkPorter 分片上调用任意数量的智能合约。不仅如此,分片内的交易将可以访问整个 zkPorter 的状态 —— 包括其它分片上的数据。这一特性可被用于(例如)读取来自某个信息输入机制的信息。
你可以把 zkPorter 模式想象成打了 zk 激素的区块链互联网。
zkPorter 分片:安全性与开销 💸
zkPorter 的 Shard 0 就是一个 zkRollup,有完整的数据可用性和以太坊的安全性保证。Shard 0 会成 zkPorter 内部运行的分片中最贵的一个,交易成本大约是主网交易的 1/100。
Shard 0 以外的分片会在自己的智能合约中定义自己的数据可用性方案。这些其它分片,牺牲了链上数据可用性,换来了进一步的 10~100 倍的交易成本节约和吞吐量提升。zkPorter 会引入一个可选的验证者机制,我们称之为 “zkPorter 卫士”,它让协议可以邀请协议的利益相关者作为协议分片的数据可用性保证人而参与进来。使用卫士机制的分片会运行一种权益证明共识机制,因此,只要 1/3 的参与验证者保持诚实,该分片的用户就能随时带着自己的数据退出。
各协议可以自由选择自己的数据可用性方案,可以包括 zkPorter 卫士,也可以不使用这种机制。协议所选数据可用性方案的效率就会影响到所在分片的吞吐量和交易成本。
灵活的数据可用性就是 zk Porter 的核心设计目标。允许了各协议自行设计方案,zkPorter 就能支持非常多不同的方案,可以适应每个人的需要。安全假设以受信任的中心化参与者作为保证人的应用可以实现权威证明共识机制。而带有治理代币的应用可以实现自己的权益证明共识机制来保护自己的分片 —— 只不过要避免让分片内的资金体量超过已锁定的验证者押金体量。纠删码(erasure coding)机制可以用于证明验证者没有删除数据。比如,考虑到比特币网络相对比较简单、交易数量也低,一个 zkPorter 分片的验证者完全可以在他们的分片内创造一个比特币实现,运行基于工作量证明的中本聪共识。所有这些都可以与 zkPorter 的卫士验证者设置相结合,也都可以与之独立运行。
zkPorter 在一开始设计时就把扩展当成目标。zkPorter 协议将每一个分片的数据可用性和有效性开销降低到了一个很低的水平。增加新分片的边际成本比起在基础的 zkRollup 上包含嵌套数据所引起的成本是对数级别的。这就让 zkPorter 可以高效地扩展到支持数亿个账户。
最后,用户的隐私可以得到零知识证明技术的保护。使用一个 zkRollup 作为 zkPorter 的基本元素有一个内在的优势,就是状态转换的有效性是可以被证明的,而且可以不用公开这些交易的内容。
架构 🏛
究其实,zkPorter 很像 zkRollup 和 Validium。一个放在 Layer-1 上的智能合约托管着资金、保存着一份对账户状态默克尔根的记录。实际状态数据由 zkPorter 验证者和各分片的数据保证人保存在链下:我们也管它叫 “状态树”。
一个分片的智能合约定义了自己的状态转换规则。当一个 zkPorter 区块被接受的时候,该块会引起一次状态转换:一笔在 Layer-1 上的交易会把默克尔根替换成新值。这笔交易必须验证用于证明新值有效的零知识证明:即,要验证该区块中的每一笔交易都是有效的。
在 zkPorter 中,每个分片的账户都必须存储状态树的一棵独立的子树中。此外,每一个分片子树都必须包含关于自身分片类型的信息,并引用定义其状态可用性策略的智能合约账户。
假设一个分片的类型是 zkRollup,那么该分片中每一笔改变账户状态的交易都必须把对状态的更改作为 Layer-1 的 calldata 发布出来(就跟一个 zkRollup 一样)。
所有会同时修改两个及以上分片状态的交易都必须用 zkRollup 模式来执行。
而所有其它仅会影响特定一个分片内账户的交易都可以用正常的分片模式来执行(我们称之为 “分片交易”)。如果一个区块包含了分片 S 内的一些分片交易,那必须遵循下述规则:
-
分片 S 子树的根哈希必须公开一次,作为 calldata 放到 Layer-1 上。这是为了让所有其它分片的用户能够重构自己的状态 -
该分片配套的智能合约必须被调用来执行额外的要求(例如:验证分片共识参与者的签名)
案例分析 💼
案例 1:Reddit 社区积分
-
容易地与其它分片上的智能合约互动,比如使用部署在 zkSync 上的 DeFi 协议(Curve on zkSync、Compound on zkSync,等等)来 交易/出借/贷款 -
把他们的社区积分转移给一个 zkRollup 分片上的用户(以获得最大的安全性) -
快速取出他们的代币到以太坊主网上,与 zkSync 以外的智能合约互动
案例 2:智能钱包/密码学货币银行(Argent、Dharma、MyKey,等等)
案例 3:DeFi 协议和 DEX(Loopring、IDEX、Curve、Coumpound,等等)
-
孤立的可扩展性缺乏可组合性,或者说网络效应。 -
随着零知识证明技术的潜力完全展现,越来越多人意识到,零知识证明是大规模普及的关键。与此同时,ZKP 领域的创新速度很快,以至于要跟上节奏必须有自己专门的研究开发团队。但是,如果不能很好地审计和实现复杂的密码学算法,等待他们的可能是严重的安全漏洞。密码学领域的黄金法则还是对的:不要闭门造车搞一套只有你自己知道的密码学。
案例 4:微交易(Brave、Livepeer、Storj,等等)
前进的道路 🛣
-
为 zkSync 提供对通用的智能合约的支持 -
实现一种多验证者的共识机制 -
分发 zkSync 代币来启动卫士保护型分片
(完)
(文内有许多超链接,可点击左下 ”阅读原文“ 从 EthFans 网站上获取)
原文链接:
https://medium.com/matter-labs/zkporter-composable-scalability-in-l2-beyond-zkrollup-2a30c4d69a75
作者: Alex Gluchowski
作者:以太坊爱好者;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com
评论(0)
Oh! no
您是否确认要删除该条评论吗?