来源|?notes.ethereum.org/@vbuterin
作者|?Vitalik?Buterin
对EIP-1559的一种批评是:区块大小是可变的,在的范围内浮动而不再是固定的12.5Mgaslimit,这使得客户端需要处理加倍的负载。这个论点进一步演绎为,如果我们认为客户端是可以处理这么高的负载,那么他们应该可以任何时候都处理这么高的负荷,这样我们倒不如放弃EIP-1559而直接做更有用的事——把区块大小限制提升一倍。
这个想法背后的核心观点是,大区块的首要危害来自经由客户端的那些最大区块,而不是平均区块大小。我认为这个想法是错的(因此EIP-1559对客户端产生的风险并不会比固定gaslimit的机制更高),以下是我的理由。
??重温:不马上把gaslimit提高到100M的理由有哪些?
三个理由:
1.正常情况下的区块处理时间会增加
从当前大约400ms增加到约3.2s,这会带来很多负面后果:
非常高的叔块率,导致中心化
除了电力最强的节点外,其他所有节点都难以保持同步
即使是电力最强的节点也需要更大量的资源消耗
短暂断电后的重新同步前会有更长时间的延迟
2.由于DoS攻击,最坏情况下区块处理时间会延长,从现在的20~80秒延长到可能160~640秒。
3.存储增长率会升高
从现在大约50GB/月上升到大约400GB/月,这会导致
同步速度慢很多
存储要求高很多
更慢的磁盘处理速度,因为大型数据库的访问速度会慢于小型数据库
请注意:理由1和理由3下的所有内容都只适用于长期正常使用情况,而不是受高峰影响。因此,如果要考虑高峰期的影响,关注理由2就够了。
??论据1:EIP-2929已经弥补了EIP-1559的不足
EIP-2929对存储访问操作的gas成本进行了提升,已经把最坏情况DoS攻击所需的gas消耗增加了3倍。这意味着EIP-2929与EIP-1559配合起来实际上是比现在在最坏情况下处理区块所需消耗净减少了1.5倍。
这里很自然会问一个问题:“如果EIP-2929那么好,为什么不直接把gaslimit调高到25M或37.5M”?这个回答很简单:理由2不是避免gas消耗提高的唯一原因。即使DoS问题可以被完全解决,理由1和理由3下的问题在可见的未来还会存在。因此,EIP-2929给的额外松弛部分是不可以用以对区块容量进行大幅提升。
??论据2:对于相同程度的DoS攻击,短时间攻击引起的峰值带来的弊端远比长时间攻击带来的要少
如果攻击者对链发起攻击,用区块容量最大值的垃圾数据填充区块,每个区块的gas价格上涨1.125倍。这个涨幅是呈指数上升的:持续生成5个满区块会使得gas价格上升1.8倍,而在5分钟之后,gas价格会上升15倍。为了维持攻击,攻击者必须按照这些疯狂上涨的价格支付所有的交易费。因此,一次现实的攻击可持续的时间大概是5分钟。
如果客户端收到这5分钟内生成的区块会发生什么呢?很明显,在这段时间链的处理速度会变得非常慢。会出现非常多短程分叉。事实上,分叉意味着攻击者在攻击后仍然可以以少量哈希算力回滚链上交易。这是非常糟糕的情况。
但是,这比攻击者可以维持一个小时甚至一天的攻击要好得多。大多数的交易和其他服务现在等待确认的时间已经超过5分钟,只有极其脆弱的服务才会被破坏,因为对它们来说需要5分钟发送一笔交易太难了,而回滚或拒绝服务需要持续数小时甚至数天,就像2016年的上海攻击事件一样,会造成非常严重的后果。
因此,持续5分钟达到2500万gas的峰值比2500万的gaslimit风险低得多。
??论据3:短期峰值已经出现
工作量证明挖矿固有的泊松过程(Poissonprocess)就意味着区块在发布时会存在随机性。事实上,光是随机性每周就会导致一次两倍链容量的峰值,峰值持续五分钟。
因此,某种程度上使用峰值是一个已知数量,生态到目前为止还能忽略其影响。
原文链接:https://notes.ethereum.org/@vbuterin/eip_1559_spikes
ECN的翻译工作旨在为中国以太坊社区传递优质资讯和学习资源,文章版权归原作者所有,转载须注明原文出处以及ETH中文站。若需长期转载,请联系进行授权。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。