自 2020 年以来,Ethereum 的扩张路线图一直围绕「Rollup」展开: 使用证明(无论是零知识证明还是 optimistic 欺诈证明)来继承 Ethereum 安全性的独立执行环境。
经过多年的发展,Rollup 终于完成了部署,并正在获得采用。Arbitrum 的王牌 optimistic Rollup 已经上线近一年,期间有价值超过 27 亿美元的资产存入跨链桥,而 Optimism 则紧随其后。Loopring 和 dydX 等针对于特定应用程序的零知识 Rollup 也得到了广泛使用,许多竞争性的通用零知识 Rollup 将在未来几个月内推出。
尽管 Rollup 如今正在快速迅速,但一些人还是担心其费用居高难下。
事实上,Arbitrum 和 Optimism 的交易费用仍然显著高于 Solana 和 Polygon 等「低费用」链。
那么,是什么阻碍了这些 Rollup 的发展?
为了理解交易费用,我们首先需要分清区块链交易所产生的各种成本:
?执行
这是一个网络中所有节点执行交易并验证结果是否有效所需的成本(例如:你实际拥有你所转移 Token 的所有权)。
?存储/状态
这是用新值更新区块链「数据库」的成本(例如:在 Token 转移后,发送方的余额减少,接收方的余额增加)。
以太坊核心开发者会议:2月初为上海升级启动公测网,3月启动主网升级:1月8日消息,以太坊开发人员在1月5日召开2023年首次全核心开发人员(ACD)会议,目前以太坊开发者的目标是在2月初为上海升级启动公共测试网,并暂定于2023年3月的某个时间启动上海升级主网。
开发人员同意从上海升级中移除与EOF实施相关的代码更改,还同意拒绝来自上海升级的任何其他以太坊改进提案(EIP)来代替EOF EIP,主要是为了确保质押ETH提款的时间表不会延迟。作为上海升级唯一的主要代码更改,抵押的ETH提款正在以开发人员为中心的测试网络上进行测试。此外,开发者同意将上海升级之后的Cancun升级专注于EIP-4844。
据金色财经此前报道,以太坊新闻周刊创始人Evan Van Ness发推称,以太坊质押提款Devnet测试网已于近日启动。相关提款功能即将推出,可能在明年第一季度末。以太坊基金会成员parithosh评论称,“我们很快就会有一个更公开的测试网供大家提款。”[2023/1/8 11:00:57]
?数据可用性
为了让区块链保持去信任化并可被所有人验证,区块链必须确保所有关于交易的相关数据与所有网络参与者公开共享。从本质上讲,这就是要保证世界上每个人都能看到你的交易。如果没有这种保证,各种攻击就都有可能发生(被称为扣块攻击)。
正如我们所见,数据可用性是当今区块链的关键瓶颈之一。
Rollup 的主要进步在于,它将区块链的执行和存储转移到了「链外」,即一组有限的节点上进行。与其让网络中的每个 Ethereum 节点执行所有交易或存储每条更新,我们可以直接把这个任务委托给 Rollup 运营商。
期权协议Lyra开发者发布提案建议分配300万枚OP用于推动Lyra发展:5月4日消息,期权协议Lyra开发者Mike在Optimism社区发布治理提案,该提案建议Optimism分配300万枚OP给Lyra以进一步推动Lyra发展。其中100万枚OP分配给基于Lyra开发生态项目的建设者;150万枚OP分配给Lyra的流动性提供者;50万枚OP分配给Lyra上的交易者。[2022/5/4 2:49:04]
不过,这是否意味着我们需要信任这群操作员?难道这不是中心化吗?
Rollup 会使用各种证明类型来继承 Ethereum 的安全性。Optimistic Rollup 允许单一诚实的实体提交一个「欺诈证明」,并为一个行为不端的序列器赢得奖励,而 ZK Rollup 使用零知识证明来证明 Layer-2 链已经正确更新。
将执行从主链转移可以大大降低执行和状态存储的成本,不过 Rollup 仍需要将他们的数据发布到 Layer-1 链上以确保数据的可用性。从本质上讲,Rollup 支付低廉的 Layer-2 执行和存储成本,但仍需要支付 Layer-1 的费用来发布他们的数据。
这可以在 ArbiScan 区块浏览器中任何交易的「Advanced TxInfo」标签上看到。交易费用由发布到 L1 的调用数据成本、L2 上使用的计算和 L2 存储构成,而在几乎所有的交易中,L1 的调用数据都是费用的主要来源。也就是说,Rollup 上最需要解决的问题便是将数据发布到 Layer-1 的费用问题。
虽然数据可用性对于 Rollup 来说仍是一大瓶颈,但随着时间推移这种情况也会得到缓解。
BitMEX母公司向比特币核心开发者Michael Ford提供10万美元资助:2月25日,加密货币衍生品交易所BitMEX的母公司100x Group宣布,将继续为比特币核心(Bitcoin Core)开发者Michael Ford提供资金支持,向其提供第三笔捐赠,金额为10万美元。至此,100x Group在三年内为Michael Ford总共提供了25万美元的资金支持。
此外,该笔捐赠将与Independent Reserve一起进行,Independent Reserve宣布将为Michael Ford提供额外的1.85万美元资助,即Michael Ford将获得的资助总金额为11.85万美元资助。[2021/2/25 17:51:51]
Ethereum 的升级,如 Proto-Danksharding 和最终的完全 Danksharding 将大大降低向 Ethereum 发布数据的成本。此外,Celestia 这样的项目旨在提供独立的链,而这些链是专门为提供廉价的数据可用性而建立的。
从长远来看,Danksharding 和 Celestia 这样的系统将降低数据可用性成本并增加其丰富性,同时将问题抛回到执行层面。然而,这些解决方案还需要时间才能完全成熟:Celestia 还有几个月的时间才会发布其主网,而在 Ethereum 能够增加像 Proto-Danksharding 这样的数据可用性升级之前,可能还需要一年多的时间。
数据压缩是一个比计算机本身还要古老的领域。莫尔斯电码发明于 1838 年,是已知最早应用数据压缩的实例。然后,计算机的使用加速了人们对于数据压缩的研究,于是上世纪 50 年代哈夫曼编码这样的算法就发明了出来。
声音 | 比特币核心开发者:能源消耗是将比特币限制在2100万的力量:比特币核心开发者Jimmy?Song发推称:“能源消耗是将比特币限制在2100万的力量。缺乏实际成本使得法定货币能够无限扩张。你可以有难以获得的、稀缺的货币,也可以有容易获得的货币; 容易获得的稀缺货币并不存在。”[2019/10/17]
鉴于 Rollup 的执行成本低廉,但数据可用性成本昂贵,这些团队一直在将数据压缩算法整合到他们的协议当中。Optimism 已经将 Zlib 压缩算法整合到他们的 Rollup 中,而 Arbitrum 即将推出的 Nitro 升级版则使用了 brotli 压缩算法。
数据压缩算法肯定是有用的工具,有助于降低这些调用数据的成本。然而,压缩区块链交易是一项艰巨的任务:数据压缩的作用是寻找相同的模式并缩短它们。然而,交易中充满了地址、哈希值和签名,对于这些压缩算法来说,它们本质上是「随机数据」,不具有相似性。
只有当开发者开始关心如何减少他们应用程序中的调用数据,该类数据的成本才能真正降低。2020-2021 年的天价 Gas 价格迫使开发者优化他们的代码,以尽量减少执行和状态存储。
当我们过渡到 L2 世界时,调用数据将从最便宜的资源变成最昂贵的资源,因此开发者必须再次学习这些新的优化方案。
现在让我们在 Arbitrum 上做一个实验:我们可以将一个简单的 Token 传输所需的调用数据压缩到什么程度?这些优化能在多大程度上降低交易费用?
动态 | 以太坊社区核心开发者发起提高透明度的行动 纷纷列明收入来源和持币情况:据reddit消息,以太坊核心开发者 Afri Schoedon 因参与以太坊且就职波卡开发公司 Parity Technologies 而被质疑存在利益冲突,进而愤然宣布退出社交网络之后,以太坊社区核心开发者发起提高透明度的行动,希望通过澄清自己和多个项目的关系,以更高的透明度减少猜疑,增加以太坊社区的凝聚力。以太坊创始人 Vitalik Buterin 通过 reddit 表明了自己和各项目的关系:除了 ETH 之外,他还持有 BCH、BTC、DOGE、ZEC 等非以太坊生态的密码货币,这些密码货币的价值不足其持有 ETH 价值的 10%;他还持有以太坊生态内 KNC、MKR、OMG、REP 的代币, 这些代币的价值也不足其持有 ETH 价值的 10%;他个人还投资了 Clearmatics 和 Starkware 两个初创公司;此外,他除了从以太坊基金会获得工资收入之外,因个别项目的顾问角色获得一些收入。除了 Vitalik Buterin 之外,Justin Drake、Martin Swende 等以太坊核心开发者也纷纷仔细列明了自己的收入来源、持币状况等信息,借此提高透明度,减少利益冲突。[2019/2/20]
为了进行我们的实验,我们将建立一个简单的智能合约,将一个 Token 从交易发送方转移到任何给定的地址。
这个智能合约确实需要用户在发送我们的实际测试交易之前,先发送一个 approve() 交易。由于这个限制,用户可能不会想用这个系统进行 Token 转移。然而,本实验中用到的节约成本方法也可以应用于其他合约(例如,优化的 Uniswap 路由器)。
在实验开始时,我们将发送一个「控制」交易以获得基准成本,它会调用一个简单的 Solidity 函数,用于传递 Token 地址、接收者地址和要转移的 Token 数量。
我们的测试交易使用了 576,051 个 ArbiGas,总费用为 0.43 美元。
用于对照组的调用数据有很多我们可以剥离出来的不必要数据。首先,我们需要删除所有的零,这些零只是用于数据填充。虽然它们非零字节更便宜,但仍会产生成本,所以我们需要将其删除。
开头还有一个 4 字节的函数签名,它是我们试图调用哪个 Solidity 函数的标识符。我们可以删除这个数据,让我们的代码推断出我们所要采取的行动。
经过这两步优化之后我们已经将字节码从 100 减少到 43 了。这样一来,我们的测试交易使用了 494,485 ArbiGas(减少了 14%),花费 0.37 美元。
现在我们的大部分数据是由调用数据中的两个地址组成的:一个是我们要转移的 Token 地址,另一个是转移的接收地址。
然而,我们可以假设大多数用户都在转移同样的几种 Token(WETH,Dai,USDC)。所以,从调用数据中删除整个 Token 地址的其中一个方法是为该 Token 部署一个特殊的「助手」合约。如果我们可以把交易发送给这个助手,就完全避免了发送 Token 地址的必要。
这样我们就把数据字节码减少到了 23 字节,测试交易使用了 457,546 ArbiGas(比对照组减少了 21%),成本为 0.34 美元。
上一阶段我们用「助手合约」从调用数据中删除了一个地址,但是我们的调用数据中仍包含有另一个地址。
我们是否可以可以找到另一种更可靠的「压缩」地址方法呢?
值得庆幸的是,Arbitrum 有一个名叫「地址表注册」的内置合约,我们可以用它来缩短我们的调用数据。
这个合约本质上是一个「电话簿」,可以将 20 字节的 Ethereum 地址转换为简单的整数。想象一下,你的朋友有一本传统的电话簿:与其把你的整个电话号码读给他们听,不如直接说「我是电话簿第 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 日。
总之,调用数据已经从 Ethereum L1 上最便宜的资源,变成了 Ethereum Rollup 上最昂贵的资源。Proto-Danksharding 和 Celestia 这样的数据可用性技术最终会解决这一问题,但二者都还没有上线,而且数据可用性变得廉价且普遍可能还需要几年时间。
因此,区块链开发者需要非常注意他们交易所需的调用数据数量,因为这对终端用户的交易费用会产生重大影响。
这篇文章概述了一些可用于减少调用数据的技术方法,我相信随着越来越多的「优化大军」将注意力转向 Layer 2,此类方法将变得愈发丰富。
原文标题:《Crunching the Calldata》
原文作者:David Mihal
原文编译:Kxp,BlockBeats
来源:区块律动
区块律动BlockBeats
媒体专栏
阅读更多
金色财经 子木
金色早8点
去中心化金融社区
虎嗅科技
CertiK中文社区
深潮TechFlow
念青
Odaily星球日报
腾讯研究院
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。