Vitalik:为什么我不担心EIP-1559中的松弛区块容量

EIP-1559 对客户端产生的风险并不会比固定 gas limit 的机制更高

作者 | Vitalik Buterin

对 EIP-1559 的一种批评是:区块大小是可变的,在 [0,25M] 的范围内浮动而不再是固定的 12.5M gas limit,这使得客户端需要处理加倍的负载。这个论点进一步演绎为,如果我们认为客户端是可以处理这么高的负载,那么他们应该可以任何时候都处理这么高的负荷,这样我们倒不如放弃 EIP-1559 而直接做更有用的事——把区块大小限制提升一倍。

这个想法背后的核心观点是,大区块的首要危害来自经由客户端的那些最大区块,而不是平均区块大小。我认为这个想法是错的 (因此 EIP-1559 对客户端产生的风险并不会比固定 gas limit 的机制更高),以下是我的理由。

 重温:不马上把 gas limit 提高到 100M 的理由有哪些?

三个理由:

1. 正常情况下的区块处理时间会增加

从当前大约 400 ms 增加到约 3.2s,这会带来很多负面后果:

  • 非常高的叔块率,导致中心化
  • 除了电力最强的节点外,其他所有节点都难以保持同步
  • 即使是电力最强的节点也需要更大量的资源消耗
  • 短暂断电 (比如你在手提电脑上运行一个节点,你需要把电脑从家里移动到咖啡厅)后的重新同步前会有更长时间的延迟

2. 由于 DoS 攻击,最坏情况下区块处理时间会延长,从现在的 20~80 秒延长到可能 160~640 秒。

3. 存储增长率会升高

从现在大约 50 GB/月上升到大约 400 GB/月,这会导致

  • 同步速度慢很多
  • 存储要求高很多
  • 更慢的磁盘处理速度,因为大型数据库的访问速度会慢于小型数据库

请注意:理由1和理由3下的所有内容都只适用于长期正常使用情况,而不是受高峰影响。因此,如果要考虑高峰期的影响,关注理由2就够了。

论据1:EIP-2929 已经弥补了 EIP-1559 的不足

EIP-2929 对存储访问操作的 gas 成本进行了提升,已经把最坏情况 DoS 攻击所需的 gas 消耗增加了 3 倍。这意味着 EIP-2929 与 EIP-1559 配合起来实际上是比现在在最坏情况下处理区块所需消耗净减少了 1.5 倍。

这里很自然会问一个问题:“如果 EIP-2929 那么好,为什么不直接把 gas limit 调高到 25M 或 37.5M”?这个回答很简单:理由2不是避免 gas 消耗提高的唯一原因。即使 DoS 问题可以被完全解决,理由1和理由3下的问题在可见的未来还会存在。因此,EIP-2929 给的额外松弛部分是不可以用以对区块容量进行大幅提升。

论据2:对于相同程度的 DoS 攻击,短时间攻击引起的峰值带来的弊端远比长时间攻击带来的要少

如果攻击者对链发起攻击,用区块容量最大值(目标容量的2倍)的垃圾数据填充区块,每个区块的 gas 价格上涨 1.125 倍。这个涨幅是呈指数上升的:持续生成 5 个满区块(大约65秒)会使得gas价格上升 1.8 倍,而在 5 分钟之后,gas 价格会上升 15 倍 (10 分钟后是 225 倍)。为了维持攻击,攻击者必须按照这些疯狂上涨的价格支付所有的交易费。因此,一次现实的攻击可持续的时间大概是 5 分钟。

如果客户端收到这 5 分钟内生成的区块(每个需要 20~60 秒的处理时间)会发生什么呢?很明显,在这段时间链的处理速度会变得非常慢。会出现非常多短程分叉。事实上,分叉意味着攻击者在攻击后仍然可以以少量哈希算力(例如大约20%)回滚链上交易。这是非常糟糕的情况。

但是,这比攻击者可以维持一个小时甚至一天的攻击要好得多。大多数的交易和其他服务现在等待确认的时间已经超过 5 分钟,只有极其脆弱的服务才会被破坏,因为对它们来说需要 5 分钟发送一笔交易太难了,而回滚或拒绝服务需要持续数小时甚至数天,就像 2016 年的上海攻击事件一样,会造成非常严重的后果。

因此,持续 5 分钟达到 2500 万 gas 的峰值比 2500 万的 gas limit 风险低得多。

论据3:短期峰值已经出现

工作量证明挖矿固有的泊松过程 (Poisson process) 就意味着区块在发布时会存在随机性。事实上,光是随机性每周就会导致一次两倍链容量的峰值,峰值持续五分钟。

(注意:这是由大量相同容量的区块而不是相同数量的大容量区块导致的,但据我所知,没有证据或理由相信单个区块的处理所消耗的 gas 是超线性增长的)

因此,某种程度上使用峰值是一个已知数量,生态到目前为止还能忽略其影响。

来源 | notes.ethereum.org/@vbuterin

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2021年2月25日 上午10:50
下一篇 2021年2月25日 上午10:50

相关推荐

Vitalik:为什么我不担心EIP-1559中的松弛区块容量

星期四 2021-02-25 10:50:50

作者 | Vitalik Buterin

对 EIP-1559 的一种批评是:区块大小是可变的,在 [0,25M] 的范围内浮动而不再是固定的 12.5M gas limit,这使得客户端需要处理加倍的负载。这个论点进一步演绎为,如果我们认为客户端是可以处理这么高的负载,那么他们应该可以任何时候都处理这么高的负荷,这样我们倒不如放弃 EIP-1559 而直接做更有用的事——把区块大小限制提升一倍。

这个想法背后的核心观点是,大区块的首要危害来自经由客户端的那些最大区块,而不是平均区块大小。我认为这个想法是错的 (因此 EIP-1559 对客户端产生的风险并不会比固定 gas limit 的机制更高),以下是我的理由。

 重温:不马上把 gas limit 提高到 100M 的理由有哪些?

三个理由:

1. 正常情况下的区块处理时间会增加

从当前大约 400 ms 增加到约 3.2s,这会带来很多负面后果:

  • 非常高的叔块率,导致中心化
  • 除了电力最强的节点外,其他所有节点都难以保持同步
  • 即使是电力最强的节点也需要更大量的资源消耗
  • 短暂断电 (比如你在手提电脑上运行一个节点,你需要把电脑从家里移动到咖啡厅)后的重新同步前会有更长时间的延迟

2. 由于 DoS 攻击,最坏情况下区块处理时间会延长,从现在的 20~80 秒延长到可能 160~640 秒。

3. 存储增长率会升高

从现在大约 50 GB/月上升到大约 400 GB/月,这会导致

  • 同步速度慢很多
  • 存储要求高很多
  • 更慢的磁盘处理速度,因为大型数据库的访问速度会慢于小型数据库

请注意:理由1和理由3下的所有内容都只适用于长期正常使用情况,而不是受高峰影响。因此,如果要考虑高峰期的影响,关注理由2就够了。

论据1:EIP-2929 已经弥补了 EIP-1559 的不足

EIP-2929 对存储访问操作的 gas 成本进行了提升,已经把最坏情况 DoS 攻击所需的 gas 消耗增加了 3 倍。这意味着 EIP-2929 与 EIP-1559 配合起来实际上是比现在在最坏情况下处理区块所需消耗净减少了 1.5 倍。

这里很自然会问一个问题:“如果 EIP-2929 那么好,为什么不直接把 gas limit 调高到 25M 或 37.5M”?这个回答很简单:理由2不是避免 gas 消耗提高的唯一原因。即使 DoS 问题可以被完全解决,理由1和理由3下的问题在可见的未来还会存在。因此,EIP-2929 给的额外松弛部分是不可以用以对区块容量进行大幅提升。

论据2:对于相同程度的 DoS 攻击,短时间攻击引起的峰值带来的弊端远比长时间攻击带来的要少

如果攻击者对链发起攻击,用区块容量最大值(目标容量的2倍)的垃圾数据填充区块,每个区块的 gas 价格上涨 1.125 倍。这个涨幅是呈指数上升的:持续生成 5 个满区块(大约65秒)会使得gas价格上升 1.8 倍,而在 5 分钟之后,gas 价格会上升 15 倍 (10 分钟后是 225 倍)。为了维持攻击,攻击者必须按照这些疯狂上涨的价格支付所有的交易费。因此,一次现实的攻击可持续的时间大概是 5 分钟。

如果客户端收到这 5 分钟内生成的区块(每个需要 20~60 秒的处理时间)会发生什么呢?很明显,在这段时间链的处理速度会变得非常慢。会出现非常多短程分叉。事实上,分叉意味着攻击者在攻击后仍然可以以少量哈希算力(例如大约20%)回滚链上交易。这是非常糟糕的情况。

但是,这比攻击者可以维持一个小时甚至一天的攻击要好得多。大多数的交易和其他服务现在等待确认的时间已经超过 5 分钟,只有极其脆弱的服务才会被破坏,因为对它们来说需要 5 分钟发送一笔交易太难了,而回滚或拒绝服务需要持续数小时甚至数天,就像 2016 年的上海攻击事件一样,会造成非常严重的后果。

因此,持续 5 分钟达到 2500 万 gas 的峰值比 2500 万的 gas limit 风险低得多。

论据3:短期峰值已经出现

工作量证明挖矿固有的泊松过程 (Poisson process) 就意味着区块在发布时会存在随机性。事实上,光是随机性每周就会导致一次两倍链容量的峰值,峰值持续五分钟。

(注意:这是由大量相同容量的区块而不是相同数量的大容量区块导致的,但据我所知,没有证据或理由相信单个区块的处理所消耗的 gas 是超线性增长的)

因此,某种程度上使用峰值是一个已知数量,生态到目前为止还能忽略其影响。

来源 | notes.ethereum.org/@vbuterin