原文:StarkWare 由 DeFi 之道编译

StarkNet 性能路线图

  • rollups 的有用性不受限于L1的吞吐量,使得 L2 的 TPS 能够很高。

  • 在 StarkNet 的功能道路图中,处理了系统中的一个关键因素——排序器。

  • 功能的改善主要有以下几点:

  1. 排序器(Sequencer)的并行化

  2. 为 Cairo 虚拟机(Cairo-VM)供给 Rust 语境下的完结

  3. 在 Rust 语境下的排序器

  • 证明者(Provers)并不是瓶颈,他们能够处理比现在更多的东西。

简介

大约一年前,StarkNet Alpha 正式上线了以太坊主网,这时,咱们将重心放在了功用的构建上,现在,咱们决定将要点转移到进步功能之上,并方案经过一系列的过程来进步 StarkNet 上的用户体验。

在这篇文章中,我将解释为什么有许多优化办法只适用于有用性汇总(Validity Rollups),并分享 StarkNet 施行这些办法的方案和过程,其间一些方案现已在 StarkNet Alpha 0.10.2 中完结,在评论详细的细节之前,让咱们先来回忆一下约束链上功能的原因。

区块约束:Validity Rollups 与 L1

进步区块链可扩展性和 TPS 的办法之一是:在免除区块的约束(比方GAS和区块巨细的约束)一同,坚持区块生成时刻的不变。这需求区块生产者(L1 上的验证器,L2 上的排序器)供给更高效的服务,因而就需求更有用地履行这些组件,因而,咱们将要点转移到 StarkNet 排序器的优化之上,鄙人文会胪陈详细内容。

这儿会有一个问题,为什么对排序器的优化仅仅对 Validity Rollups 有用,换句话说,为什么咱们不能在 L1 上以相同的办法改善,避免有用性汇总(Validity Rollups) 有杂乱性?鄙人一节内容中,对这一问题将进行回答。

为什么L1吞吐量有限

假如 L1 的区块约束被免除,会遇到一个很大的问题,由于链的高吞吐带来了链上区块的高增长率,为了保证不同的节点跟上最新的全链状况,就需求添加了更多的全节点。又由于 L1 全节点有必要记载一切历史记载,区块巨细的大幅添加会给全节点运营者带来巨大压力,并导致部分全节点由于机器功能落后而退出系统,成果,能够运营全节点的都是一些比较大的实体,终究便是用户无法以无信赖的姿态验证状况并参加网络

这也让咱们理解,从某种意义上来说正是 L1 吞吐量的约束,成果了一个真实去中心化的和相对安全的网络系统。

上述问题为什么不会出现在 Validity Rollups 之上?

只要在考虑全节点的问题时,咱们才干看到有用性汇总(Validity Rollups)的优势。正常情况下,一个L1全节点需求从头履行整个链的历史以保证当时状况的正确性,而 StarkNet 节点只需求验证 STARK 证明,而且这种验证需求的计算资源呈指数级下降。要点是,链上全节点状况的验证同步没有涉及到履行;一个节点能够从另一个全节点那里接受当时状况的转储,只需经过 STARK 证明来验证这个状况是否有用即可。这让咱们在添加网络的吞吐量的一同,不用添加全节点的数量。

因而,在 L2 上,经过对排序器的优化能够对整个系统的功能进行提高,但这在L1上不能完结的。

StarkNet 的未来功能道路图

这一部分,咱们将评论现在有哪些方案用于对 StarkNet 排序器的优化。

排序器并行化

功能道路图的第一步是为买卖履行引进并行化。这个提议是在 StarkNet alpha 0.10.2 中正式引进的,该版别于11月29日在以太坊主网上发布,咱们现在来深入探讨下什么是并行化。

一般来说,并行履行多个买卖区块是不能够的,由于不同的买卖或许是相互依靠的。以下方示例中进行说明,咱们假定有一个包含来自同一用户的三笔买卖的区块:

  • Tx A(买卖A,下同):将USDC兑换ETH

  • Tx B:为某款NFT付出ETH费用

  • Tx C:将USDT兑换BTC

显然,买卖A有必要发生在买卖B之前,但买卖C彻底独立于两者,是能够并行履行的。假如每个买卖需求1秒履行,那么经过引进并行化处理之后,区块生产时刻能够从3秒减少到2秒。

问题的关键在于,咱们事前并不知道不同买卖之间的依靠性。在实践中,只要当咱们履行到示例中的 Tx B 时,咱们才会发现它是依靠于 Tx A所做的改动。更准确地说,这种依靠性源于Tx B 从Tx A 写入的存储单元中读取这一动作。咱们能够把不同的 Tx 看成是一个依靠图,其间存在从买卖 A 到买卖 B 的一条边,当且仅当 A 写入一个由 B 读取的存储单元时,B 才或许履行。下图显现了这种依靠之间的联系:

StarkNet 性能路线图

在上面的示例中,每一列都能够并行履行。

为了克服事前无法确认不同买卖事情之间的依靠联系,咱们根据 Aptos Labs 推出的 BLOCK-STM,将 OP 并行化(optimistic parallelization)引进到 StarkNet 排序器中。在这种形式下,会以达观地方法并行地处理业务,并在发现碰撞时从头履行。比方在上述示例图中,咱们能够并行履行 TX1-4,但过后发现 Tx 4 依靠于 Tx1,因而这次履行是无效的(应该在 Tx1 履行后运转 Tx 4 ),在这种情况下,将从头履行Tx4。

请注意,在上述这种达观并行化的基础上咱们也添加一些优化办法。例如,与其等待每个履行的完毕,能够在发现一个使之运转成果无效的依靠联系时就中止履行。

另一个优化的例子是选择哪些业务来从头履行。假定由上述示例图的一切业务组成的区块被送入一个具有五核CPU的排序器。首先,咱们测验并行履行 tx 1-5,假如完结的顺序是Tx2、Tx3、Tx4、Tx1,最终是Tx5,那么咱们将在 Tx4 现已履行后才发现依靠联系Tx1→Tx4,这表明它应该被从头履行。直观地说,考虑到Tx4的从头履行,Tx5也需求从头履行,然而,咱们能够遍历由履行现已完毕的业务构建的依靠图,只从头履行依靠于Tx4的业务,而不是将失效Tx4之后的业务都从头执。

Rust 语境下的 Cairo-VM 完结

StarkNet 中的智能合约是经过 Cairo 语言编写的,并在 Cairo-VM 虚拟机中履行。现在,排序器正在使用python 语言在 Cairo-VM 上运转。为了优化虚拟机的完结功能,咱们之前发起了用 Rust 重写 Cairo-VM 虚拟机的工作。

现在,cairo-rs能够履行原生 Cairo 代码,下一步是处理智能合约的履行和与 pythonic 排序器的集成,一旦与 cairo-rs 集成,排序器的功能有望进一步进步。

Rust 语境下的排序器

经过 python 到 rust 的转变以进步网络功能,不只限于 Cairo-VM,StarkNet 用 Rust 重写了排序器相关的代码。除了 Rust 的内部优势之外,这还为排序器的其他优化供给了或许,比方,能够调集 cairo-rs 的优势,而无需 python-rust 通讯的开销,也能够彻底从头设计状况的存储和访问方法。

证明者(Provers)

在整篇文章中,没有提到有用性汇总(Validity Rollups)中核心元素之一——证明者(Provers)。作为能够说是架构中最杂乱的组件,证明者(Provers)算是瓶颈,也是优化的要点。但现在,StarkNet 的瓶颈是更加“规范”的组件,特别是对于递归证明,能够将当时测验网/主网上的更多买卖放入证明中。事实上,StarkNet 区块与 StarkEx 买卖一同得到有用的商场证明,后者有时会有数十万 NFT 的铸造事情。

总之,并行化、Rust 等改善,都是为接下来 StarkNet 提高 TPS 所做的准备。

此时快讯

【2022-11-30 14:43】【Nexo和Gemini获得意大利监管机构批准为该国的客户提供服务】金色财经报道,加密服务提供商Nexo和Gemini已获准在意大利监管机构注册,允许这些平台为该国的客户提供服务。声明称,该注册还为Nexo“在整个欧洲市场的合规性方面提供了更大的灵活性和稳健性”。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注