区块见闻 区块见闻
Ctrl+D收藏区块见闻

GAS:躲避子弹:以太坊状态问题_uGAS-JUN21 Token Expiring 30 Jun 2021

作者:

时间:

这篇文章的目的是正式公开一个对以太坊平台的严重威胁,其危险性清晰而明确,直到“柏林”硬分叉才解除。

状态

我们先来了解一些以太坊和“状态”的背景知识。

以太坊状态是一棵帕特里夏-默克尔树。本文不会深入过多细节,你只要知道,随着状态数量的增长,这个树结构的分支会变得越来越密。以太坊区块链上每多一个账户,这棵树就多一个叶子节点。在树的根节点与叶子节点,是许多所谓的“中间”节点。

为了查找某个账户,或者说在这棵庞大的树上找到某片“叶子”,需要解析6~9个哈希值,从根节点开始,经由中间节点,最终解析到一个能够给予我们所需数据的哈希值。

用大白话来说:无论什么时候要在这棵树上查找某个账户,都要经过8~9次解析操作。每次解析操作都是一次数据库查询,而每一次数据库查询都意味着不确定数量的多次硬盘操作。硬盘操作的次数很难估计,但是因为状态树的“键”是密码学哈希值,所以这些键都是随机的,这对所有数据库来说都属于最坏的情况。

随着以太坊状态的增加,就有必要提高访问状态树的操作的Gas消耗量。早在2016年10月,我们就曾用“橘子口哨”分叉做过这样的事。EIP150大幅提高了特定操作的Gas消耗量,并引入了一系列的措施来保护网络免于DoS攻击;这是在所谓的“上海攻击”之后推出的。

津巴布韦央行的数字货币计划需要1亿美元的黄金,日期等细节仍在敲定:4月25日消息,津巴布韦央行货币政策委员会成员Persistence Gwanyanya表示,津巴布韦需要1亿美元的黄金来启动其拟议的基于黄金的数字货币,以稳定当地货币并提振需求,央行将依靠一直积累的黄金储备来支持这一举措并遏制当地货币的波动。津巴布韦央行副行长Innocent Matshe透露,津巴布韦储备银行正在敲定启动黄金支持的数字货币的日期。他表示:“这是一个非常简单的概念,我们将黄金代币化,我们拥有黄金。每次我们发行一枚代币,它都有真金支持。我们仍在敲定细节。”Matshe拒绝评论将用于支持数字货币的黄金的价值。(彭博社)[2023/4/25 14:25:17]

另一次这样的Gas消耗量提升是在“伊斯坦布尔”分叉的时候,在区块高度?9069000?激活,引入了EIP1884。1884的内容包括:

SLOAD?操作码的Gas消耗量从?200?提高到?800?gas

BALANCE?消耗量从?400?提高到?700?gas

EXTCODEHASH?消耗量从?400?提升到?700?gas

问题

在2019年3月,MartinSwende测量了EVM操作码的性能。这一研究后来导致了EIP-1884的创建。在1884激活的几个月前,这篇以“BrokenMetre”为名的论文发表。

币安将于3月22日恢复部分BTC手续费和BUSD挂单手续费:3月15日消息,币安宣布将于2023年3月22日8:00起,用户仅在BTC/TUSD现货交易对交易BTC时,可继续享受零挂单和吃单手续费,BUSD零挂单(Maker)手续费活动将不再包括BNB/BUSD、BTC/BUSD和ETH/BUSD现货和杠杆交易对,还将恢复用户对应的VIP等级费率于BTC/AUD、BTC/BIDR、BTC/BRL、BTC/BUSD、BTC/EUR、BTC/GBP、BTC/RUB、BTC/TRY、BTC/UAH和BTC/USDT现货和杠杆交易对,以及BNB/BUSD和ETH/BUSD现货和杠杆交易对。[2023/3/15 13:05:20]

两位以太坊安全研究员——HubertRitzdorf和MatthiasEgli——与这篇论文的作者之一DanielPerez展开了合作,并“武器化”了一个漏洞,并提交给了以太坊的bug悬赏项目。那是在2019年10月4日。

我们建议你完整地阅读他们提交的报告,写得非常好。

在一个专门讨论跨客户端安全性的频道里,来自Geth客户端、Parity客户端和Aleth客户端的开发者被告知了这份报告,就在同一天。

该漏洞的本质是触发随机的树查找。一个非常简单的变体是:

NFT科幻卡牌游戏Parallel将于2月推出商店:1月20日消息,NFT科幻卡牌游戏Parallel将于2月推出商店,用户可以花费PRIME、ETH和美元购买数字商品、NFT商品、实物商品与Coinbase NFT。该商店将支持漫画、收藏品、入门套卡、paragon皮肤/表情NFT等[2023/1/20 11:22:44]

在他们的报告里,研究员通过?eth_call?RPC端点对同步到主网的节点执行了这一负载,下面是它们消耗1000万gas所需的时间。

使用?EXTCOEHASH?耗尽1000万gas

Parity:约90秒

Geth:约70秒

使用?EXTCODESIZE?消耗1000万gas

Parity:约50秒

Geth:约38秒

显而易见的是,EIP-1884确实减少了攻击的效果,但还是远远不够的。

那时候离大阪Devcon已经很近了。在Devcon期间,关于这一问题的知识在主网的客户端开发者之间传开来。我们也会晤了Hubert和Mathias,还有GregMarkou。ETC区块链的开发者们也收到了这份报告。

AAC上线交易平台Coinup:据官方消息,交易平台Coinup今天18:00(UTC+8)开放AAC充值。9月6日17:00(UTC+8)将开放AAC交易及提币,正式宣告AAC上线Coinup。

此外,9月6日11:00(UTC+8)AAC联合Coinup将开启有奖充值活动,除此之外还将开展持续7天的交易竞赛有奖活动。活动期间内对满足充值额及AAC/USDT交易额的用户,空投价值10000USDT的AAC奖励。

据悉,AAC近期推出了AAC PASS“加密星球”的创新项目,受到社区关注。[2022/9/5 13:10:07]

随着2019年接近尾声,我们发现,这问题比我们之前以为的还要棘手,恶意的事务可能导致出块时间延长到以分钟计。更难办的是,开发者社区已经对EIP-1884感到不满,它打破了一些合约,而且用户和矿工都希望提高区块的GasLimit。

此外,仅仅两个月之后,到了2019年12月,PartiyEthereum就宣布要退出了,OpenEthereum项目接管了Parity客户端的代码维护工作。

于是大家创建了一个新的客户端协作频道,Geth、Netheremind、OpenEthereum和Besu的开发者继续合作。

解决方案

芯片制造商英伟达的加密采矿芯片收入继续下降:金色财经报道,芯片巨头英伟达(Nvidia)表示,截至7月31日的2023财年第二季度,其加密货币采矿处理器(CMP)的销售额“很少”,低于一年前的2.66亿美元。英伟达曾用同样的术语来描述上一季度的CMP销售额,它当时指出CMP拖累了其“OEM和其他”业务部门的收入。

英伟达首席财务官称,“OEM和其他”业务部门第二季度的整体收入比去年同期下降了66%,至1.4亿美元,主要是受笔记本OEM销售下降的影响。“OEM和其他”业务部门只贡献了第二季度总收入的约2%。

根据FactSet的数据,Nvidia第二季度总收入为67亿美元,符合市场平均预期。8月初,Nvidia称其预计收入为67亿美元,远低于之前81亿美元的预期,主要原因是游戏收入减少。(CoinDesk)[2022/8/25 12:46:48]

我们意识到,只有双管齐下才能解决这个问题。一方面,我们要改进以太坊协议,也就是在协议层解决这个问题;最好是不要打破合约,也不要惩罚“善意”的行为,但又能防止攻击。

另一方面,我们可以依靠软件工程,改变客户端内的数据模式和结构。

协议层工作

处理此类攻击的第一个思路是这个。在2020年2月,其正式版本作为EIP2583发布。该提案背后的观念是增加一个惩罚措施,每次树查找导致miss时就触发。

不过,Peter找出了一个绕过它的办法——“shieldedrelay”攻击——使得本质上惩罚有了一个上限。

惩罚miss?方法的问题在于,必须先有查找的过程,然后才能确定要不要实施惩罚。但如果剩余的gas已不足于实施惩罚,则一个没有得到充分支付的消耗流程又已经执行了。即使这会导致抛出错误,这些状态读取也可以封装到嵌套调用中,使得外部调用者可以重复执行攻击而不必支付惩罚。

因此,这个EIP也被抛弃了,我们要寻找更好的替代方案。

AlexeyAkhunov研究了Oil的概念——一种次级的“Gas”,但与Gas完全不同的是,它对执行层是不可见的,而且可能导致事务全局回滚。

Martin提了一个类似的提案,称为“Karma”,在2020年5月。

虽然这许多方案都有进展,VitalikButerin提议仅仅提高Gas消耗量,并维护一个“访问清单”。在2020年8月,Martin和Vitalik开始迭代后来成为EIP-2929及其同伴EIP-2930?的想法。

EIP-2929在根本上解决了许多上面提到的问题。

与EIP-1884相反;1884是无条件提高Gas消耗量,但2929仅提高访问新对象的Gas消耗量。这使得净成本仅增加了不到一个百分点。

同样地,与EIP-2930配合后,就不会打破任何合约。

它还可以通过提高Gas消耗量来进一步调整

在2021年4月14日,这两个EIP都在“柏林”分叉时激活。

开发工作

Peter尝试用动态的状态快照解决这个问题,时值2019年10月。

快照是一个次级的数据结构,用来以扁平格式存储以太坊状态。快照可在Geth节点正常运行期间创建,无需下线专门执行。快照的好处是,它可以作为状态访问的一种加速结构:

不再是执行?O(logN)?次硬盘读取来访问一个账户/存储项,快照可以提供直接的,O(1)?级别的访问时间。

快照还支持以每个条目?O(1)?的复杂度迭代账户和存储项,这使得远程节点可以检索连续的状态数据,比以往便宜非常多。

快照的存在还支持其它更奇怪的用途,比如离线修剪状态树,以及迁移到另一种数据格式。

弊端是,快照等于是完全复制了账户和存储项的未经处理的数据。若在主网环境中使用,这意味着需要额外25GB的固态硬盘空间。

动态快照的想法从2019年中就有了,当时的主要目标是启用“快照同步”。那时候Geth团队还在开发许多“大项目”:

离线的状态修剪

同态快照+快照同步

通过共享状态实现LES状态分散

不过,后来他们决定一心一意做快照功能,推迟了其他项目。这些工作为后来的?snap/1?同步算法打下了基础。这一算法已在2020年3月合并到了代码库中。

有了“动态快照”功能,我们就能喘口气了。如果以太坊网络遭到攻击,那会是很痛苦的,但至少,我们能通知用户打开快照功能。生成快照需要花一些时间,而且还没有办法同步快照,但网络至少能继续运行了。

结合

在2021年3月/4月,?snap/1?协议已经在geth客户端推出,节点能够使用新的、基于快照的算法来同步区块链了。虽然还不是默认的同步模式,这是使快照能不仅作为攻击保护措施,也能显著提高用户体验的一部。

在协议层,“柏林”升级已于2021年4月激活。

在我们的AWS监控环境中,我们的基准测试结果如下:

“柏林”前,没有快照,处理2500万gas:14.3秒

“柏林”前,有快照,处理2500万gas:1.5秒

“柏林”后,没有快照,处理2500万gas:约3.1秒

“柏林”后,有快照,处理2500万gas:约0.3秒

这个的数字表明,“柏林”升级使攻击的效率降低了5倍,而快照使之降低了10倍,最终使其影响降低了50倍。

我们估计,在当前的主网上,不使用?快照的geth节点可能可以做到只需2.5~3秒就能执行一个区块。随着状态的增长,这个数字会继续恶化。

如果gas返还机制被用来造成单个区块的实际gas使用量提升,这个恶化的倍数是2倍。在EIP-1559实施后,区块的GasLimit会有更高的弹性,在短时间内可爆发出最大2倍的恶化乘数。

至于实施这种攻击的可行性,攻击者买断一个区块的成本大概在几个ETH这样的级别。

为何要在此时公开

这一威胁在很长时间里都是“公开的秘密”——因为疏忽,它至少被公开披露过一次;而且在核心开发者会议中也多次提到它,虽然没有公开细节。

因为我们已经激活了“柏林”升级,也因为geth客户端已经默认使用快照功能,我们认为,威胁已经足够低,而透明化才是更重要的了。所以是时候把幕后的工作都公开了。

重要的是,社区得到了一次理解和思考这些影响用户体验的变更的机会。

标签:GASETHBTCUSDuGAS-JUN21 Token Expiring 30 Jun 2021ethereal词源ubtc币为什么暴跌wstUSDT币

芝麻开门交易所下载热门资讯
比特币:为什么一串代码能在艺术圈掀起巨浪?_加密货币

过去一段时间里,NFT已经成为加密货币世界里的“新宠”。加密货币近期暴跌。北京时间5月20日凌晨,比特币一度暴跌30%,相比四月的价格高点则下挫超过50%。同一日以太坊跌幅最高也超过40%.

PLE:4个维度探讨NFT如何将品牌内容营销提升至新高度_APPLE PROTOCOL TOKEN

NFT也非常擅于为客户创造各种难忘的体验。品牌方应考虑将NFT营销与品牌内容策略结合起来,找到从中受益的方法.

马斯克:比特币跌破34000美元关口:马斯克身家已蒸发近800亿_马斯克x改名受挫

近期,因为马斯克反复横跳,以及国家针对打击比特币挖矿和交易的声明出台,目前比特币已经沦落为“人人喊打”的状态,价格也一路暴跌,截止发稿前,比特币价格已下跌12%,报33583.97美元.

BTC:专访TUSD市场BD总监Annabel:TUSD市值突破12亿美金 合规稳定币正在逐步雄起_eth交易所排名

随着加密经济的繁荣,稳定币的地位不断提升,如今已拥有超过600亿美元的市场总值,不少稳定币的市值在过去的几个月内有着显著的增长.

OST:美联储会议纪要:争议不断 货币政策将继续宽松还是收紧?_Turtle Racing

原文标题:《美联储会议纪要暗示将讨论缩减购债萨默斯指责美联储在通胀上制造“自满情绪”》美东时间周三下午,美联储公布4月货币政策会议纪要.

加密货币:国际货币基金组织官员:多种储备货币将为世界带来更高的稳定度_BOS

国际货币基金组织的货币政策及资本市场部门主管TommasoMancini-Griffoli5月24日在区块链峰会Consensus2021上探讨了加密货币在全球金融体系中的定位.