Starknet 与 zkSync 深度分析:谁更胜一筹?
作者:Eli Barbieri,以太坊开发者 来源:medium 翻译:善欧巴,
介绍
过去两年,以太坊 rollup 领域取得了重大发展。有效性Rollup(也称为 ZK Rollup)近几个月已成为极具竞争力、实用且廉价的第 2 层解决方案。此外,随着即将到来的 Dencun 硬分叉和数据 blob ( EIP-4844)的实施,了解与在以太坊主网上验证有效性证明相关的流程和成本至关重要。
尤其是 Starknet 和 zkSync Era 已成为突出的竞争对手,通常与以太坊主网上执行的用户操作数量相当甚至超过。我们的目标是在交易量、相对计算和压缩效率方面准确比较他们的系统,深入研究第 1 层验证成本、第 2 层交易和第 2 层资源消耗等方面。他们被选为最大的 Layer 1 个Gas支出者,拥有现成的分析基础设施;Linea 和 Scroll 留待以后研究。
以下部分将详细分析与提交链上证明和状态数据相关的成本。我们将剖析负责此过程的第 1 层智能合约,并评估每笔交易的平均链上验证成本。
此外,我们将预测 EIP-4844 对这些成本的影响,突出显示哪条链可能会从这次升级中受益更多。最后,我们将讨论用于比较两个网络的真实可扩展性的各种技术,旨在平衡和细致地比较它们的效率。
背景
用户操作与交易
Starknet 处理交易的方式与主流 EVM 兼容链不同。在后面的分析中,我们将重点关注bartek.eth定义的用户操作,而不是分析 Starknet 的交易量。用户操作代表用户想要执行的“标准”操作,包括代币转移、代币交换、铸币或投票。
尤其是 Starknet 和 zkSync Era 已成为突出的竞争对手,通常与以太坊主网上执行的用户操作数量相当甚至超过。我们的目标是在交易量、相对计算和压缩效率方面准确比较他们的系统,深入研究第 1 层验证成本、第 2 层交易和第 2 层资源消耗等方面。他们被选为最大的 Layer 1 个Gas支出者,拥有现成的分析基础设施;Linea 和 Scroll 留待以后研究。
以下部分将详细分析与提交链上证明和状态数据相关的成本。我们将剖析负责此过程的第 1 层智能合约,并评估每笔交易的平均链上验证成本。
此外,我们将预测 EIP-4844 对这些成本的影响,突出显示哪条链可能会从这次升级中受益更多。最后,我们将讨论用于比较两个网络的真实可扩展性的各种技术,旨在平衡和细致地比较它们的效率。
背景
用户操作与交易
Starknet 处理交易的方式与主流 EVM 兼容链不同。在后面的分析中,我们将重点关注bartek.eth定义的用户操作,而不是分析 Starknet 的交易量。用户操作代表用户想要执行的“标准”操作,包括代币转移、代币交换、铸币或投票。
在大多数 EVM 兼容链上,每个操作都作为单个交易发送。当帐户抽象可用时,用户将操作捆绑到单个事务中。在 Starknet 上,这称为多重调用。由于这种差异,直接的“以交易计价”的比较,例如每秒交易数 (TPS) 的比较,不足以代表具有本机帐户抽象的Rollup的性能。
例如,zkSync Era 上的所有交易中大约 20% 是 ERC20 Approve 交易,而 Starknet 上几乎所有 Approve 交易都捆绑在一起。实际上,Starknet 上的同一组用户和操作的 TPS 减少了 20%。
在比较 Starknet 和其他链之间的交易负载时,我们使用“UserOperation”指标(缩写为 UOP 或 UOPS)。
ZK Rollup受欢迎程度
目前,ZK Rollup功能齐全,并在多个方面与以太坊主网竞争。以太坊平均每日约 550,000 笔合约调用交易(不包括原生 ETH 转账)。Starknet 的交易量变化较大,但其日均用户操作量略高。zkSync Era 描绘了类似的景象,其特点是高度可变性,其交易量经常超过以太坊主网。
在上图中,由于大量 BRC-20 铭文的铸造,zkSync Era 的日交易量在 12 月 16 日达到历史新高。
方法
Rollup数据和回填范围
我们利用 zkSync Erazks_getL1BatchDetails
RPC 方法来检索提交、证明和执行交易的主网交易哈希值。使用zks_getL1BatchBlockRange
我们获取每个批次中包含的 L2 块的范围。
在第 330,981 批中,zkSync Era 进行了证明者升级,重新部署了 L1 验证合约,并从基于 Plonk 的证明系统转移到更新的 Boojum 系统。zkSync Era 数据分为两个数据集:过渡前批次的 Plonky 数据和升级后批次的 Boojum 数据。
为了追踪 Starknet 的证明批次,我们追踪verifyProofAndRegister
以太坊上的交易。从这些跟踪中,我们可以检查isValid(fact)
调用并为每个证明生成事实列表。生成列表后,我们可以直接将组件交易与其所属的批次进行匹配。对于数据可用性(DA)交易,可通过日志获得验证事实。在后续步骤中,我们利用状态差异来检测每个事务记录了哪些事实。最后一步是将状态转换事实与updateState
事件相匹配,事件提供 L1 消息传递成本和每个批次的 L2 块列表。
最早的 Starknet 批次使用不同的数据格式。为简单起见,我们的 Starknet 数据省略了前 300 个批次。同样,zkSync Era 的前几个月使用了单独的验证架构;为了简单起见,我们省略了前 100,000 个批次。对于Starknet,批次368和3,966之间的数据被回填,而对于zkSync Era,数据存在于批次100,000和401,345之间。下表列出了回填证明批次的日期范围,以及该数据集中涵盖的 L2 区块编号。
第 1 节 — Rollup L1 验证成本
在本节中,我们将详细介绍验证 zkSync 和 Starknet 证明所需的链上步骤。我们剖析了相关成本,其中包括证明的链上提交、证明验证算法中的主要操作以及提交Rollup数据以实现数据可用性。作为参考,其中包含链上合约的链接。
zkSync 中的证明验证概述
zkSync Lite 和 zkSync Era 的早期版本使用了 PLONK 证明器系统。我们期望这些基于 SNARK 的系统具有恒定的证明验证成本和可变的数据可用性成本。2023 年 12 月,Era 升级为使用其 Boojum Proof 系统,该系统使用包裹在 SNARK 内的 STARK 证明。该证明仍预计具有固定的验证成本和可变的数据可用性成本,但更有效的证明可以降低中心化基础设施成本。不幸的是,没有可供分析的集中数据。
首先建立基线,图 1.1 显示了 zkSync Lite 产生的每日 L1 验证成本的细目。对于 zkSync Lite PLONK 证明者,块首先被提交,然后被证明,最后被执行。最有趣的是,commitBlocks
使用的gas最多,总共占验证成本的60%,而proveBlocks
和executeBlocks
各占约20%。zkSync Lite 的 L2 交易数据和分析的质量并不是最佳的。然而,基于区块平均值的估计表明,zkSync Lite 交易量很少超过每天 100K 第 2 层 UOPS。要更深入地了解 zkSync Lite 数据,请参阅Marcov的仪表板。
从 zkSync Lite 到 Era 的变化
1 —L1 ↔ L2 消息传递操作从executeBlocks 移至commitBlocks,降低了executeBlocks 成本并增加了commitBlocks。(这使得 Era 能够创建大约 20 小时的执行延迟,在此期间,块被提交和证明,然后在最终确定之前保持挂起状态。此延迟会在发生安全事件时创建回滚缓冲区。此延迟是在 BRC-20 代币铭文的创纪录数量对网络进行压力测试后,于 12 月使用。)
2 —zkSync Era 转向存储状态差异而不是完整交易。鉴于消息传递的变化,我们预计 commitBlocks 的比例会增加;然而,它保持不变,这表明状态差异需要比完整事务更少的 DA 字节。
负责为两个 zkSync 系统提交交易的 EOA/代理如下:
zkSync 批处理由三个独立的操作组成:提交交易/状态差异、验证证明和执行,其中包括更新链头和消息传递等。每个步骤的 L1 交易都可以在 zkSync Era Block Explorer中找到,并将用于将验证成本分解为单独的操作。下面列出了处理这些交易的以太坊主网合约。
所有 zkSync 证明系统都首先通过交易发送批次的 DA 承诺commitBatches
。在 zkSync Lite 中,区块由其交易来表示,而在 zkSync Era 中,则由执行交易所产生的状态差异来表示。commitBatches
可能包含多个批次并消耗/发出 L1 ↔ L2 消息。一旦 DA 承诺被散列并保存,proveBatches
就会发送一个带有证明的交易。每一批都有一份证明。证明的验证检查 DA 承诺是否已保存以及 zkProof 是否正确。几个小时后,批次被“执行”,最终确定 L2 的状态。每个executeBatches
事务同时执行多个批次。
zkSync Era L1验证成本
对图 1.3 中 Era Plonk 和 Boojum 证明者之间的成本细分进行的分析表明,尽管百分比图并未表明发生巨大变化,但 L1 总 Gas 消耗量表明 Boojum 升级是一个显着的改进。
Plonk 验证每批次的验证成本约为 760,000 L1 Gas,而验证 Boojum 证明每批次仅为约 460,000 Gas,这表明有相当大的改进。与直觉相反,花费的成本比例proveBatches
并没有出现显着下降。然而,对顶部子图中的每日总支出进行审查后发现,总费用明显下降。考虑到 Boojum 升级后第 2 层 UOP 数量的增加,看来 zkSync 在此次升级期间也对其 DA 发布进行了实质性优化。
进一步分析 zkSync 如何在处理更多交易的同时减少 DA 费用将很有价值。
Starknet 上的证明验证概述
Starknet 使用基于 STARK 的证明系统,我们预计该系统具有多对数验证成本。
所有证明验证交易均源自两个 EOA 之一。这些 EOA 为批量验证的每个步骤调用五个入口点合约之一。
下表展示了五个入口点合约,以及显示所执行操作的示例交易。在证明验证期间,这些合约处理证明验证的各个步骤。请注意,批次由通过数十个区块发送的数百笔交易组成。
Starknet 块被分批在一起。该registerContinuousMemory
交易提交块的状态差异作为数据可用性(DA),每个块涉及两个交易:一个捕获状态差异,另一个捕获块输出。一旦提交了一批状态差异,就会验证相应的执行证明。最后,处理 L1 ↔ L2 消息传递,并推进链头。
为了分解验证,我们将其分为以下几部分:
验证默克尔
验证 FRI
寄存器内存
验证并登记证明
更新状态
通过使用最多的gas来获取数据registerContinuousMemory
,约占验证成本的80%。updateState
占10%,verifyProofAndRegister
占5%,其余占5%。
Starknet 和 zkSync Era 成本比较
zkSync Era 和 Starknet 每天使用的 Gas 量大致相似,在 2 到 40 亿之间。虽然与 Era 和 Boojum 相比,Starknet 在证明验证中使用的 Gas 明显减少,但它消耗更多的 Gas 来提供数据。尽管由于网络使用情况不同,这可能不是一个公平的比较,但这些见解很有价值。为了进行更精确的比较,在第 2 节中,我们详细介绍了每个用户操作的验证成本。
上述数据表明,Starknet 可以从对其链上数据表示的最小改进或 EIP-4844 的实施中获益匪浅,这可能会导致它变得比 zkSync Era 更便宜。
第 2 节 — 每个用户操作的验证成本
之前的分析比较了网络之间的每日总验证成本及其内部支出的明细。虽然这可以深入了解Rollup的运营成本,但它不能帮助我们了解最终用户的网络性能或成本。在本节中,我们比较每个用户操作的系统验证成本,如方法部分所述。
为了实现这一目标,我们将测量每批 L2 区块中的用户操作数量,并将其与 Starknet 和 zkSync Era 的 L1 批次验证成本进行比较。
一旦我们有了每笔交易成本如何变化的公式,我们就可以根据批量大小绘制两个网络的性能,并比较它们每个用户操作的平均成本。
我们userOperaptionCost
根据 L2 操作的数量和每批次消耗的 L1 验证Gas量来定义批次的 。
在以下部分中,我们将绘制使用的 L1 Gas与批次中用户操作数量的关系图,并旨在为上述公式找到最佳拟合回归。然后我们对 Starknet 和 zkSync 进行比较。
zkSync Era 每个用户操作的验证成本
在图 2.1 中,我们绘制了 L2 批次用户操作计数与在 L1 上验证批次所需的 Gas 的关系,涵盖 zkSync Era (Plonky) 和 zkSync Era (Boojum)。
我们注意到以下几点:
无论批量大小如何,Era 和 Boojum 的证明验证都保持不变,Plonk 的证明验证成本为 76 万Gas,Boojum 的证明验证成本为 46 万Gas。
在 Boojum 之前的时代,成本
commitBlocks
似乎与交易数量保持不变。这不是我们所期望的,因为我们假设较大的交易计数会导致较大的状态差异。然而,这种差异可以通过 Era 的批处理算法来解释。批处理程序尝试包含尽可能多的交易,最多可达 750 笔交易 (Plonk) 和 1,000 笔交易 (Boojum) 的 Gas 限制或硬限制。基于此假设,事务计数较低的批次可能会按比例使用更多的存储空间。为了解决批量大小和批量成本的选择偏差,我们将消除提供 DA 的成本,以确保网络的公平比较。
— 每笔交易的负成本回归是由 zkSync 批量大小和密封标准产生的。如果满足以下任何条件,则对批次进行密封和证明:
— 每批达到 120kb 的 MAX_PUBDATA
— 达到 750 (Plonk) 或 1000 (Boojum) 的交易限额
— Gas 上限达到 8000 万
— zkEVM Prover 电路达到极限
值得注意的是,对于 L2 批次 x 用户操作,我们对 L1 Gas 进行了以下回归分析结果:
从Era数据的趋势推断,验证批次的成本随着用户操作数量的增加而降低。这个结果是令人惊讶的、违反直觉的,并且可能是批量大小选择偏差的结果。当x
无穷大时,每笔交易的 Gas 量为 -299.18。这是不可能的,所以我们必须得出结论,我们的模型缺少数据,这会将每笔交易的成本限制为 0 Gas。对于 Boojum 来说,情况更加荒谬。
Starknet用户操作压缩效率
在 Starknet 上,Merkle、FRI 和 Proof 验证与批量大小的关系几乎是恒定的。寄存器内存和更新状态操作都需要调用数据发布,因此随着批处理中的操作数量线性增长。
得注意的是,对于 L2 批次 x 用户操作,我们对 L1 Gas 进行了以下分析:
在 Starknet 上,验证批次的总成本随着 UOPS 数量的增加而增加。根据当前数据集,每个用户操作的平均 L1 成本为 2,425 个 Gas,每批固定成本约为 5100 万个 Gas。在中位批量大小为 30,700 个操作的情况下,评估上述回归结果会导致每个 L2 用户操作的每个操作成本约为 4,120 L1 Gas。
就背景而言,以太坊平均每天花费 1080 亿个 Gas,平均每天记录 100 万笔交易。这意味着每笔交易平均需要 108,000 Gas。因此,Starknet 使交易成本平均降低了 44 倍。
比较 Starknet 和 zkSync Era 每 L2 操作的成本
关于 Starknet,首先需要注意的是,它的批量大小明显大于 zkSync Era。zkSync Era 的交易限制为每批次 750 或 1,000,而 Starknet 则没有交易限制;相反,它填充了资源限制的证明。Starknet 批次差异很大,从包含超过 50,000 个操作的简单操作到包含少于 15,000 个操作的资源密集型操作。
?️ 从上面的观察来看,Starknet 在压缩海量简单操作方面表现出了优势。虽然 zkSync Era 批次将在 1000 个交易时填充,但 Starknet 批次将继续填充,直到满足资源限制。
考虑到每个网络的批量大小,zkSync Era 和 Starknet 花费非常相似的 Gas 量来验证相似数量的 L2 操作。下面的图 2.3 绘制了每次 L2 操作的每日 L1 成本,该成本是通过将 L1 验证Gas除以 L2 操作的数量来计算的。
从上图可以清楚地看出,zkSync Era 的 Plonky 证明器的每次操作成本与 Starknet 非常相似。不过,最近的Boojum升级带来了实质性的改进,将每次操作的成本降低了大约一半,从而使zkSync Era在用户操作压缩方面拥有了目前的优势。
zkSync Era 和 Starknet 之间的验证成本比较
由于 EIP-4844 预计会影响Rollup的动态,因此在没有 DA 的情况下分析证明验证的成本很有价值。就 zkSync Era 而言,proveBatches
成本保持不变。另一方面,对于 Starknet,verifyMerkle
每批操作的成本是固定的,而verifyFRI
和verifyProofAndRegister
操作的成本是多对数的。
— 虽然VerifyFRI具有多对数验证成本,但当前的证明者仅将证明填充到128个叶子,需要八次verifyFRI操作。如果填充了 256 个叶子,则需要九次 verifyFRI 操作。Starknet 的两层成本来自早期的证明,仅填充了 64 个叶子,只需要 7 个 verifyFRI 操作。
图 2.4 的底部子图以对数标度绘制了每次操作的固定成本,并评估了最小、中值和最大批量大小下的操作压缩。对于 zkSync Era,Boojum 后批次的中值包含 807 次操作,导致每个 UOP 的固定成本为 568.15 Gas。相比之下,Starknet 上的中位批量大小要高得多,为 30,700 个用户操作,导致每个用户操作的验证成本为 432.35 个 Gas。
从该图中可以看出,zkSync Era 具有压缩优势,因为与 Starknet 相比,每个 UOP 的成本向左移动了大约两个数量级。然而,在实践中,zkSync Era 批次要小得多,并且在考虑每个批次大小的每个 UOP 的有效成本时,如果忽略 DA 和消息传递成本,Starknet 目前仍保持压缩优势。
第 3 节 - 比较Rollup之间的计算
有效性Rollup的具体执行成本很难比较和对比。例如,在开罗重写某些内容意味着什么?与 Solidity 实施相比,在链上运行的成本有多高?对于一组操作码,两个 EVM 会消耗相同数量的 Gas 吗?这些问题引发了计算机科学中古老的争论:哪种编程语言最快?
尽管这个问题缺乏明确的答案,但通常有两种方法可以回答它。首先,可以对不同语言和运行时的各种算法及其实现进行基准测试,并编译数据以比较一类算法的性能,如基准游戏所示。或者,第二种方法涉及在各种环境中实现相关程序并直接测量这些实现的性能。
在本节中,我们不关注哪个网络“最快”。相反,我们的目标是根据网络跟踪的计算单位(gas)来比较程序。
以下分析围绕以下观察展开:尽管每个网络都具有新颖的程序、相同程序的不同实现以及不同的使用级别,但用户操作概况的整体模式仍然相当一致。
这使我们能够将它们的使用情况结合在一起并计算函数,平均将一个网络上的Gas单位转换为另一个网络上的Gas单位。我们将尝试近似一个公式,将每个网络上的 Gas 消耗量与以太坊的 Gas 指标进行比较。
我们的结果不太可能是一个好的公式,特别是当网络在用户行为上存在差异时。然而,我们相信它提供了一种比较网络计算能力的新颖方法,为开发人员提供了“风中指”技术来评估其下一次部署的潜在位置。我们希望这项技术能够激励其他人构建更好、更细致的方法。
交易资源消耗(本机单位)
为了比较每个网络之间的交易构成,我们回填了以太坊、zkSync Era 和 Starknet 一周的交易。收集的所有数据均在 9 月 16 日至 9 月 23 日之间,Unix 时间戳介于1694847600
和之间1695452400
。下面列出了每个网络的块范围。
下表显示了该期间交易的资源消耗数据。gas_used
在所有三个网络之间进行分析。重要的是要记住,不同网络之间的 Gas 构造方式根本不同,不能直接比较。
为了创建更准确的交易分配基准,我们排除了原生主网 ETH 转账(占交易量的 32.26%),因为 Starknet 和 zkSync Era 没有原生 ETH 转账,而此类转账仅占以太坊上智能合约流量的一小部分。大多数应用程序专门使用 ERC20 代币,并且 WETH 传输仍然记录在该数据中。
下表显示了未经过滤的以太坊 Gas 使用数据。但是,在后续部分中,我们将从所有以太坊发行版中排除本机传输。
Starknet 分布更加“尖刻”,因为在相同操作的所有执行中,gas 使用量保持一致。在 zkSync 时代,相同交易的 Gas 使用量根据 L1 Gas 价格而变化,从而导致分配更加平滑。对于以太坊来说,这种平滑可能是由于协议种类繁多以及每个 UOP 的实现不同而造成的。
每个网络的分布最集中于低端,这符合大多数交易涉及基本转账、ERC 操作和 DeFi 交易的预期。通过分析每个网络上的交易构成证实了这一点。
跨网络的交易类型的构成非常相似,主要涉及 DEX 上的转账和互换。尽管这些Rollup促进了新型应用程序的经济高效的链上部署,但观察到的大部分活动都是由于以太坊上现有应用程序的更经济实惠的部署而产生的。
这些图表并不表明应用程序使用比以前更多的计算的趋势。
关联Rollup之间的 Gas 使用情况
我们假设这些分布源自相同的“全局”用户意图分布。如果这个假设成立,我们预计柯尔莫哥洛夫-斯米尔诺夫 (KS) 检验为零。然而,网络的资源是以不同的单位来衡量的。我们通过定义资源使用直方图的函数并最小化 KS 测试的输出,使用 KS 应为 0 的期望来标准化单位。实际上,我们将 KS 检验视为要最小化的目标函数。附录 B 详细介绍了我们的方法。
结果是从 zkSync Gas 到以太坊 Gas 以及从 Starknet Gas 到以太坊 Gas 的近似映射。这使我们能够比较网络之间的交易成本,并为处理每秒计算量的比较奠定基础。
在最小化两个直方图之间的方差后,我们获得转换函数的系数输出。在以太坊 KDE 旁边绘制转换后的密度不仅揭示了分布之间的相似性,而且还突出了可以改进拟合的潜在领域。这是数据科学中非常有趣的练习,我们鼓励每个人探索这项研究的存储库并为改进我们的方法做出贡献。
第 4 节——Rollups收入
现在我们已经对第 1 层验证成本进行了分类和了解,计算盈利能力的下一步是检查Rollup收入。与 EIP-1559 之前的以太坊类似,rollups 通过交易费用来支付运营成本,交易费用通常以 ETH 计价。
以太坊上的 Gas 是阻止 DoS 攻击的主要机制。它通过根据操作码对网络的负载按比例分配操作码的成本来实现这一点。像这样的基本操作ADD()
很便宜,仅消耗 3 个 Gas,而数据库查找等昂贵的操作可能会消耗 20,000 个 Gas。精心设计的 Gas Schedule 还可以减少最大执行时间的变化。这是因为每个区块都有一个gas limit,并且消耗与执行复杂度密切相关。
这一原则也适用于第 2 层网络,其中证明者和排序者的资源有限。为交易支付的费用必须与执行交易、发送数据可用性承诺、生成证明、验证证明以及 L1 Gas 的未来价格的复杂性成正比。这导致了一个复杂的方程式,确保Rollup用户支付的费用能够覆盖基础设施成本,同时保持较低的费用以改善用户体验。
乐观Rollup通常采用与以太坊主网密切相关的 EVM 实现,从而产生几乎相同的Gas机制。这包括准确复制操作码价格,如Optimism和 Base所示。另一方面,ZK-rollups 必须调整额外的操作,因为所有指令都必须通过 zkProver 运行。特别是在ZK环境下计算常用的哈希算法是计算密集型的,操作码价格也会相应调整。
这些变化具有有趣的设计含义。一个值得注意的例子是映射,它使用哈希从键中检索值。ERC 代币广泛利用映射;然而,与乐观Rollup相比,散列成本的增加使得标准 ERC 令牌在 ZK Rollup上的实现效率较低。Starknet 还使用 ~252 位字(felts)代替 EVM 兼容链中的 256 位字,进一步降低了标准实现的效率。因此,ZK-rollups 和 Optimistic rollups/以太坊主网之间标准和协议的优化实现可能会有很大差异。
StarknetGas计算
Starknet 使用一种与 EVM 不兼容的新型虚拟机。然而,Gas的概念保持不变,费用与消耗的资源成比例分配。每个 Starknet 交易都利用不同的执行资源,例如“步骤”、“内置程序”和“内存”。执行资源有一个加权公式,确保 L2 Gas 对证明生成复杂性和 L1 验证成本进行建模。最后,序列器被输入 L1 Gas价格的加权平均值。
如图 4.1 所示,Starknet 价格与以太坊 Gas 价格高度相关。这种对 Gas 价格的密切跟踪使得 Starknet 交易对于最终用户来说是可预测和可理解的。Starknet 的路线图上包含费用市场,这将导致这些图表出现分歧。虽然费用市场将允许用户指定其优先费用,但 L2 Gas 价格很可能始终具有由 L1 Gas 价格的函数确定的下限。
zkSync Era Gas计算
在 zkSync Era 上,区块基本费用保持非常稳定,在 Plonk 证明者生命周期的大部分时间内设定为 0.25gwei,并每隔几天根据 Boojum 证明者进行调整(目前约为 0.10gwei)。为了抵消 L1 Gas 价格的波动,直接消耗 L1 Gas 的操作码会被赋予动态 Gas 成本。例如,SSTORE
zkSync Era 上的 Opcode 使用的 Gas 会更改每个区块,以反映以太坊上的 ETH 费用SSTORE
。
算术和逻辑运算仅影响证明生成,并且不会线性增加验证成本。由于这种压缩,这些操作码消耗固定数量的Gas。
图 6.2 显示了动态资源定价。它在左轴上显示了 zkSync Era ERC20 交易的每日 Gas 消耗中位数approve()
,并在右轴上绘制了 L1 Gas 价格。在以太坊主网上,approve()
交易消耗固定的约 46,000 Gas,而在 zkSync Era 上,每笔approve()
交易消耗数十万 Gas。值得注意的是,2023 年 5 月 5 日左右,zkSync Era 上的 ERC20 消耗的 Gas 量approve()
超过 300 万。
虽然对于熟悉以太坊 Gas 结构的用户来说,这似乎违反直觉,但这种机制允许 zkSync Era 准确地建模其 L1 验证成本。鉴于某些操作具有可预测的 L1 Gas 成本,Era 区块链可以根据 L1 价格为每个区块设置操作码价格。有关 zkSync 费用机制的更多信息,请阅读他们的文档。
Layer 2 费用如何花费
用户支付的费用代表Rollup净收入。在图 6.3 中,我们绘制了这些费用支出的百分比明细(不包括中心化的链外成本)。Starknet 费用偶尔会超过 100%,这不是错误,而是表明 Starknet 有一天无利可图。
比较 zkSync Era 和 Starknet,很明显 zkSync 从收取的净费用中产生的利润比例更高。然而,他们的费用分配也截然不同。在 Starknet 上,大约 10% 的费用用于证明成本,而 zkSync 大约 25% 的费用用于证明成本。
? 上述数据表明,数据可用性(DA)成本的下降将对 Starknet 和 zkSync Era 产生不成比例的影响。由于 Starknet 上花费在 DA 上的成本百分比远高于 zkSync Era,因此我们预计 EIP-4844 的费用削减对 Starknet 的影响将比 zkSync Era 的影响更大。
虽然 zkSync Era 目前拥有更好的整体压缩比,但上述数据和图 2.4 所示的固定成本让我们相信,在 EIP-4844 上线后,这种情况可能会发生变化。
Rollups盈利
现在我们对Rollup费用是如何产生的有了更好的了解,我们计划回填 Starknet 和 zkSync Era 的费用数据。我们可以通过产生的 L2 费用并减去每批的 L1 验证成本来估计Rollup利润(不考虑链外成本)。
Rollup的盈利能力仍然是一个悬而未决的问题。在接下来的部分中,我们将假设它们确实有利可图。此外,我们呼吁Rollup运营商发布有关其运营成本的数据。这些信息对于他们的社区至关重要,因为网络的寿命、去中心化程度以及设计优先级部分取决于运营盈利能力。请注意,计算证明的成本根据所选的证明系统的不同而有很大差异,并且包含此数据可能会从根本上改变下面的观察结果。考虑到这一点,我们敦促在其他情况下引用此数据时务必谨慎。
应用于利润数据的回归线说明了每日和累积盈利能力的趋势,这些回归的系数在图例中详细说明。Starknet 的日均盈利能力几乎保持不变,而 zkSync Era 的日盈利能力呈下降趋势。我们可以根据累积利润回归系数来估计每日收入:对于 Starknet,它为每天 11.94 ETH,对于 zkSync Era,为每天 36.79 ETH。
在右下角的子图中,我们绘制了每笔交易的利润。简单观察发现,Starknet 的利润差异明显较高,而 zkSync Era 则保持稳定的利润,平均每笔 L2 交易约 50,000 Gwei。我们假设 zkSync Era 的证明时间和 L2 费用结构可以更好地对 L1 成本进行建模,从而为用户带来更均匀的成本分配。然而,我们注意到这两个网络的费用设计都在不断发展,此时批评任何一个网络可能还为时过早。
验证者盈利能力
ZK-rollups 使用证明系统而不是 M of N 共识来保证完整性,通常需要 N 中的 1 诚实才能从有效性证明中受益。在撰写本文时,正在讨论和开发许多设计,以确保围绕Rollup的其他属性(例如活跃性和审查制度阻力)提供可接受的保证。无论使用何种机制,确定Rollup或任何网络的“足够”数量的验证器以确保所有属性得到保证仍然不清楚。尽管如此,我们可以尝试估计在现有Rollup盈利能力的情况下可以支持的验证器数量的上限。
⚠️ 这种分析应该谨慎对待。Rollup 的盈利能力受到质疑,空投狩猎季节(在撰写本文时)可能会增加交易量。鉴于这些网络仍处于早期阶段并正在经历显着增长,目前尚不清楚当前的利润率未来是否会保持、增长或收缩。
首先我们计算一下Starknet和zkSync的日收益,分别为11.94 ETH和36.79 ETH。然后,假设验证者按比例获得奖励,我们计算每个人的年度奖励。
做一些粗略的计算,假设 ETH 价格为 2000 美元,有 100 个验证者,每个 Starknet 验证者每月的收入约为 7,200 美元,而 zkSync Era 验证者每月的收入约为 22,000 美元。这足以通过 EC2 租用 2-3TB RAM 和 100 多个 CPU 核心。因此,对于 Starknet 和 zkSync 时代来说,至少 100 个验证器的网络规模可能是可持续的。
让我们从**(诚然是慷慨的)假设开始,即以太坊的每个验证者收入是验证者价格的良好指标。以太坊验证者每年预计获得约 1.4 ETH 的收入,不包括 MEV 利润。下表尝试量化每个网络可以拥有的验证器数量,如果它为每个验证器分配与以太坊相同的收入。值得注意的是,许多网络正在考虑运营数百个验证器,这可以显着提高每个验证器的盈利能力。
虽然这些数字并未考虑到 Layer 1 MEV 收入或运营 Rollup 验证器的较高硬件成本,但它们清楚地表明 Rollup 正在产生(在撰写本文时)足够的利润来吸引大量运营商,与当前的情况保持一致Rollups 的野心。随着验证者、用户和交易数量的变化,这种计算可能会发生变化。然而,可以合理地预期,在当前情况下拥有数百个验证者是可能且合适的。我们再次强调当前Rollup运营商公布其服务器和证明者成本将带来的巨大价值。这种透明度将有助于验证者了解操作要求并加快去中心化的步伐。
第 5 节 — 分析 ZK-rollups 之外的 DA 成本
在查看了 zkSync Era 和 Starknet 之间的验证成本细分后,很明显数据可用性是目前有效性Rollup的主要成本。呼叫数据的每个非零字节花费 16 个 Gas(零字节花费 4 个 Gas),每天的Rollup发布量从几十到数百兆字节不等。主要Rollup的每日通话数据消耗总量经常超过 600 MB,有时达到超过 1 GB 的峰值。这种广泛的数据发布会导致 L1 膨胀,并增加 L2 运营的成本。在下一节中,我们将分析 EIP-4844 对Rollup成本的影响。
EIP — 4844 blob 子定价
每个 blob 消耗固定数量的blob_gas,每个块的目标为 3 个 blob (0.375MB),最多 6 个 blob (0.75MB)。Blob Gas费使用以下公式计算blob_fee_wei = blob_gas * blob_gas_fee。
对于每个区块,都有以下费用机制。如果连续多个块消耗的数据超过目标 Blob 数量,则 Blob Gas 价格将呈指数级上涨。该UPDATE_FRACTION参数设置为blob_gas_price两个块之间的最大增量为 12.5%。这excess_blob_gas将是一个跟踪Gas价格的累加器。
目前,每 128KB 的通话数据Rollup会产生约 0.2 至 0.6 ETH 的成本。以每个区块 3 个 Blob 为目标,以太坊的 DA 容量将约为每天 2.7GB,几乎是 2024 年 1 月观察到的峰值 DA 负载的两倍。由于 Blob 供应是固定的,因此 Blob Gas 的价格由需求决定。在 Dencun 硬分叉后的最初几周内,blob Gas可以忽略不计,直到 EIP-4844 的使用加速并且 2.7GB 供应得到充分利用。在此期间,rollup DA 的成本将比当前值低 26 个数量级。
下图显示了每次Rollup的主网调用数据每日平均费用。Calldata 帖子被分成 128Kb 块(blob 的大小),以近似 blob Gas 价格的上限。鉴于目前每 128kb 的费用约为 0.075ETH,这相当于大约 60 gwei 的 Blob Gas 价格。我们假设,如果 Blob Gas 价格迅速达到这些水平,Rollup可能会决定继续发布调用数据而不是 Blob,特别是考虑到永久持久性而不是两周的生命周期。
图 5.2 中提供的数据中的一个意外观察结果是每 kB 费用的变化。即使是基于相同技术堆栈的 Base 和 Optimism 也有不同的费用。
有两个因素可能导致这种差异:0x00
字节数和波动的Gas价格。calldata 的非零字节使用 16 个 Gas,而零字节仅使用 4 个 Gas。由于零字节和非零字节都被考虑在内,如果网络 A 发送带有许多零的非常稀疏的 DA 承诺,而网络 B 发送带有很少零的非常密集的 DA 承诺,则与网络 B 相比,网络 A 的每 kB Gas 消耗量较低。
可能影响这种情况的另一个因素是需求定价。如果网络 A 制定了仅在前两个区块使用的 Gas 量少于目标之后才发送承诺的政策,那么它最终可能会避免高峰流量时间并平均支付较低的费用。这种策略会降低发展议程承诺的一致性,我们怀疑这是造成这种变化的根本原因。
虽然密集数据集和稀疏数据集之间的 Gas 成本差异可能是变异性背后的主要因素,但深入研究这一分析可能会很有趣。
结语
检查验证成本可以为Rollup操作提供有价值的见解。虽然压缩和扩展是经常讨论的话题,但评估已实现的成本和吞吐量可以切实洞察 Starknet 和 zkSync Era 的效率。应对所有Rollup执行此练习。
由于两个网络上的用户操作使用情况相似,我们的分析是有效的。只要这种情况持续存在,每秒 UOPS 就可以作为比较网络的可靠指标。然而,这引出了一个问题:将来Rollup会执行根本不同类型的计算吗?如果Rollup开始专业化,UOPS/秒将逐渐失去准确性。比较每秒的执行资源将提供更准确的指标。
此外,我们已经采取了初步步骤,通过创建一个在执行资源之间进行转换的函数来构建公平比较。我们希望我们的努力能够鼓励更多的调查使用类似的技术进行公平比较。我们相信,一旦建立了用于比较跨域执行资源的基线指标,它就可以取代每秒事务数(TPS)作为标准指标。
我们对当前 L1 支出和 L2 收入进行了高级分析,事实证明,这对于识别趋势和模式来说是一项有价值的练习。但是,它没有提供有关有效性Rollup的盈利能力的见解。我们再次强调公共数据的价值。如果 Rollups 公开其中心化基础设施成本和架构概述,将使研究人员、开发人员和运营商能够更清楚地了解不同 Rollups 的运营需求,从而加快去中心化的步伐。
在目前的状态下,EIP-4844 blob 将在信标链上仅保留两周。尽管这对于大多数情况来说可能已经足够,但我们怀疑某些Rollup可能旨在延长其数据可用性 (DA) 承诺的生命周期,从而切换到替代解决方案。而且,EIP-4844的供应量是固定的,随着blob需求的增加,其价格将持续上涨。相比之下,在专用 DA 网络上,供应可以根据不断增长的需求而扩大,从而提供具有长期价格优势的专用 DA 解决方案。EIP-4844 是否会成为Rollup DA 的标准,或者专用网络是否会随着时间的推移而盛行,还有待观察。
本站提醒:投资有风险,入市须谨慎,本内容不作为投资理财建议。