织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币

躲避子弹:以太坊状态问题

时间:2021-05-21 16:48来源:未知 作者:admin 点击:
这篇文章的目的是正式公开一个对以太坊平台的严重威胁,其危险性清晰而明确,直到“柏林”硬分叉才解除。 状态 我们先来了解一些以太坊和“状态”的背景知识。 以太坊状态是一

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

状态

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

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

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

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

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

另一次这样的Gas消耗量提升是在“伊斯坦布尔”分叉的时候,在区块高度906 9000(2019年12月)激活,引入了EIP 1884。1884的内容包括:

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

BALANCE消耗量从400提高到700 gas(还加入了一个更便宜的SELFBALANCE操作码)

EXTCODEHASH消耗量从400提升到700 gas

问题(们)

在2019年3月,Martin Swende测量了EVM操作码的性能。这一研究后来导致了EIP-1884的创建。在1884激活的几个月前,这篇以“Broken Metre”为名的论文发表(2019年9月)。两位以太坊安全研究员——Hubert Ritzdorf和Matthias Egli——与这篇论文的作者之一Daniel Perez展开了合作,并“武器化”了一个漏洞,并提交给了以太坊的bug悬赏项目。那是在2019年10月4日。我们建议你完整地阅读他们提交的报告,写得非常好。在一个专门讨论跨客户端安全性的频道里,来自Geth客户端、Parity客户端和Aleth客户端的开发者被告知了这份报告,就在同一天。该漏洞的本质是触发随机的树查找。

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

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容