Rollup终于完成部署了

时间:2023-09-29 06:51
开发者如何降低以太坊 Layer 2 的交易费用

自2020年以来,以太坊的扩张路线图一直围绕“Rollup”:使用证明(无论是零知识证明还是乐观欺诈证明)来继承以太坊安全性的独立执行环境。

经过多年的发展,Rollup 终于得到部署并得到广泛采用。 Arbitrum 的旗舰 Optimism Rollup 已上线近一年时间,在此期间跨链桥上已存入价值超过 27 亿美元的资产,Optimism 也不甘落后。 Loopring 和 dydX 等特定应用的零知识 Rollup 也得到了广泛使用,并且未来几个月还将推出一些具有竞争力的通用零知识 Rollup。

尽管 Rollup 如今发展迅速,但有些人仍担心其高昂的成本。

事实上,Arbitrum 和 Optimism 的交易费用仍然明显高于 Solana 和 Polygon 等“低费用”链。

那么,是什么阻碍了这些 Rollup 的发展呢?

汇总经济学

为了理解交易费用,我们首先需要区分区块链交易产生的各种成本:

·实施

这是网络中所有节点执行交易并验证结果是否有效(即您实际上拥有所转移代币的所有权)所需的成本。

・存储/状态

这是用新值更新区块链“数据库”的成本(例如:代币转移后,发送者的余额减少,接收者的余额增加)。

・数据可用性

为了使区块链保持不可信且每个人都可验证,区块链必须确保与所有网络参与者公开共享有关交易的所有相关数据。本质上,这是为了确保世界上的每个人都能看到您的交易。如果没有这种保证,各种攻击都是可能的(称为区块扣除攻击)。

正如我们所看到的,数据可用性是当今区块链的关键瓶颈之一。

Rollup:将执行转移到链外

Rollup 的主要进步在于它将区块链的执行和存储移至“链下”,即移至一组有限的节点。我们可以将此任务直接委托给 Rollup 操作员,而不是让网络中的每个以太坊节点执行所有交易或存储每个更新。

但这是否意味着我们需要信任这群运营商?这不是中心化吗?

Rollup将使用各种证明类型来继承以太坊的安全性。 Optimistic Rollup 允许单个诚实实体提交“欺诈证明”,并为行为不当的定序器赢得奖励,而 ZK Rollup 使用零知识证明来证明 Layer-2 链已正确更新。

数据可用性权衡

将执行移出主链可以显着降低执行和状态存储的成本,尽管 Rollups 仍然需要将其数据发布到 Layer-1 链以确保数据可用性。本质上,Rollup 支付了较低的 Layer-2 执行和存储成本,但仍然需要支付 Layer-1 费用才能发布其数据。

这可以在 ArbiScan 区块浏览器中任何交易的“高级 TxInfo”选项卡上看到。交易费用由发布到 L1 的调用数据的成本、L2 上使用的计算和 L2 存储的成本组成,并且在几乎所有交易中,L1 的调用数据是费用的主要来源。也就是说,Rollup上最需要解决的问题就是将数据发布到Layer-1的成本。

数据可用性的未来

虽然数据可用性仍然是 Rollup 的瓶颈,但随着时间的推移,这一问题将会得到缓解。

以太坊升级(例如原始 Danksharding 和最终完整的 Danksharding)将显着降低向以太坊发布数据的成本。此外,像 Celestia 这样的项目旨在提供专门为提供廉价数据可用性而构建的独立链。

从长远来看,像 Danksharding 和 Celestia 这样的系统将降低数据可用性的成本并增加其丰富性,同时将问题抛回到执行层面。然而,这些解决方案需要时间才能完全成熟:Celestia 距离启动其主网还有几个月的时间,而以太坊可能需要一年多的时间才能添加像 Proto-Danksharding 时间这样的数据可用性升级。

通话数据压缩

数据压缩是一个比计算机本身更古老的领域。摩尔斯电码发明于 1838 年,是已知最早的数据压缩应用示例。随后,计算机的使用加速了人们对数据压缩的研究,因此哈夫曼编码等算法在20世纪50年代被发明。

鉴于 Rollup 的执行成本较低,但提供数据的成本较高,这些团队一直在将数据压缩算法集成到他们的协议中。 Optimism 已将 Zlib 压缩算法集成到他们的 Rollup 中,而 Arbitrum 即将推出的 Nitro 升级则使用 brotli 压缩算法。

注意:这个实验可能是在 Nitro 发布之前仓促完成的,以便对未压缩的 Arbitrum 调用数据进行实验。

数据压缩算法当然是有用的工具,可以帮助降低这些数据调用的成本。然而,压缩区块链交易是一项艰巨的任务:数据压缩的工作原理是找到相同的模式并缩短它们。然而,交易中充满了地址、哈希值和签名,这些本质上是“随机数据”,与这些压缩算法没有相似之处。

只有当开发人员开始关心减少应用程序中的调用数据时,这些数据的成本才能真正下降。 2020-2021 年高昂的 Gas 价格迫使开发人员优化代码,以最大限度地减少执行和状态存储。

当我们过渡到 L2 世界时,呼叫数据将从最便宜的资源变成最昂贵的资源,因此开发人员将不得不再次学习这些新的优化。

实验:我们可以将简单的代币传输压缩到什么程度?

现在我们在 Arbitrum 上做一个实验:简单的代币转账所需的调用数据可以压缩到什么程度?这些优化可以在多大程度上降低交易费用?

实验设计和控制组事务

为了进行实验,我们将构建一个简单的智能合约,将代币从交易发送者转移到任何给定的地址。

该智能合约确实要求用户在发送我们的实际测试交易之前发送一个approve()交易。由于此限制,用户可能不想使用该系统进行代币转账。然而,本实验中使用的节省成本的方法也可以应用于其他合约(例如优化的 Uniswap 路由器)。

在实验开始时,我们将发送一个“控制”交易来获取基线成本,该交易调用一个简单的 Solidity 函数,传递代币地址、接收者地址和要转移的代币数量。

我们的测试交易使用了 576,051 ArbiGas,总费用为 0.43 美元。

数据删除

用于对照组的通话数据有很多不必要的数据,我们可以将其剔除。首先,我们需要删除所有零,这些零仅用于数据填充。尽管它们比非零字节便宜,但它们仍然会产生成本,因此我们需要删除它们。

开头还有一个 4 字节的函数签名,它是我们尝试调用哪个 Solidity 函数的标识符。我们可以删除这些数据,并让我们的代码推断出我们想要采取的操作。

经过这两步优化后,我们将字节码从 100 个减少到 43 个。这导致我们的测试交易使用了 494,485 个 ArbiGas(减少了 14%),成本为 0.37 美元。

“助理”合同

现在我们的大部分数据都是由调用数据中的两个地址组成:一个是我们要转账的Token地址,另一个是转账的接收地址。

然而,我们可以假设大多数用户正在转移相同的少数代币(WETH、Dai、USDC)。因此,从调用数据中删除整个代币地址的一种方法是为代币部署一个特殊的“帮助程序”合约。如果我们可以将交易发送给这个助手,我们就完全不需要发送代币地址了。

这将数据字节码减少到 23 字节,测试交易使用了 457,546 ArbiGas(比对照少 21%),成本为 0.34 美元。

地址查询表

在上一阶段,我们使用“助手合约”从调用数据中删除了一个地址,但是我们的调用数据仍然包含另一个地址。

我们能否找到另一种更可靠的“压缩”地址的方法?

值得庆幸的是,Arbitrum 有一个名为“地址表注册”的内置合约,我们可以用它来缩短我们的呼叫数据。

该合约本质上是一本“电话簿”,它将 20 字节的以太坊地址转换为简单的整数。想象一下,您的朋友有一本传统的电话簿:您不必向他们读出您的整个电话号码,您只需说“我是电话簿第 200 页上的第 4 号”,然后让他们查找。你的号码。

因此,我们可以制定一个合约,将完整地址替换为“地址索引”,并在内部进行查询。

这样我们就省略了Token地址和接收地址,从而将调用数据减少到9个字节。结果,我们的测试交易使用了 428,347 ArbiGas(比对照少 26%),成本为 0.32 美元。

方法合并

最后,让我们将所有方法放在一起:

・删除数据填充和功能选择器

・使用辅助合约删除常用地址

・使用Arbitrum地址表来缩短其他地址

全部加起来,我们的调用数据大小现在只有 6 个字节。最终的测试交易使用了 426,529 ArbiGas(也比对照组少了 26%,并且略低于之前的测试组),成本为 0.32 美元。

有损压缩

我们刚才谈到的所有压缩方法都是“无损压缩”,即压缩后的输出包含与原始输入所有相同的数据。

但就像照片和视频文件经常使用“有损压缩”算法来删除不必要的信息一样,大多数情况下我们也可以删除不必要的数据。

我们可以通过缩短数字来消除不必要的精度。例如,ERC-20 Token 往往具有 18 位小数的精度,但大多数用户通常只关心 4 位小数。为此,我们可以构建一个默认接受小数点后 8 位数字并乘以 10 的 10 次方的合约,并为需要更精确的用户提供相应的辅助功能。

同样,日期通常表示为自 1970 年 1 月 1 日(也称为 Unix 时间)以来的秒数。合约可以通过设置不同的时间单位(例如分钟、小时或天)来减小这个整数的大小,并且可以设置自己的“纪元”,例如 2015 年 1 月 1 日。

经验总结

简而言之,通话数据已经从以太坊 L1 上最便宜的资源变成了以太坊 Rollup 上最昂贵的资源。像 Proto-Danksharding 和 Celestia 这样的数据可用性技术最终将解决这个问题,但它们都还没有上线,并且可能需要几年的时间数据可用性才能变得廉价且无处不在。

因此,区块链开发人员需要非常小心其交易所需的调用数据量,因为这可能会对最终用户的交易费用产生重大影响。

本文概述了一些可用于减少通话数据的技术方法,相信随着越来越多的“优化大军”将注意力转向 Layer 2,这些技术方法将会变得更加丰富。

Copyright© 置业信息网

皖ICP备2023014685号