天价手续费事件,deversifi 官方尸检报告来了,原文链接:https://blog.deversifi.com/23-7-million-dollar-ethereum-transaction-fee-post-mortem/
太长了,我根据文章结构简单说一下
简单回顾:包括事情经过,时间线以及资金回复情况,如何防止类似事件发生的保证
背景知识:主要是EIP-1559这块,特别指出没有一个保护机制可以预防小费给太多了
调查:主要是做一些复现工作
原因分析:ethereumjs库没做好,ledger钱包提示给16进制,蒙蔽了我的双眼[污]
要点总结:
对所有人来说:
Ethereumjs 库不支持十进制请注意,请注意,请注意;
大家做DAPP的应该要做最大手续费的检测,免得用户搞出大事,什么?你没有几千万可以用作gas,哦,那没事了;[二哈]
强烈建议平台强制最高gas fee
EIP-1559不能防止意外高额费用
对于DeversiFI来说:
与外部库交互时更强的防御措施
将所有失败的交易视为潜在的缺陷,并进行调查,而不是认为只是简单的用户错误
对任何最高交易费用执行一个上限,作为额外的保护
资金返还:
矿工把钱打回来了,感谢币安爸爸,币安爷爷,币安祖宗[泪]
获奖感言:
总的来说,虽然过程很糟糕,幸好结果是happy ending,感谢CCTV,感谢MTV,感谢KTV。[求饶]
咱们做公司的不容易,但是要时刻铭记科学发展观,发现问题,分析问题,解决问题。不能说,直接第一步咱们就切断传染源,直接不发现问题,就不用解决了,你看看疫情现在都什么样了!!!(这段掐掉,串场了)[doge]
大家要一起努力啊,为社会主义DEFI添砖加瓦,有困难咱们要上,没有困难制造困难也要上啊,啥?这么多项目就我搞大新闻?这话不能这么说啊!这次的问题朕有1%的错误,你们就没有99%么?![哼]
@DeFi_Panda
https://weibo.com/6886470115/KApfRE3t5
那天上千万刀 gas 费的瓜有结果了,不是黑客,也不是土豪傻。
最后原因是 EthereumJS 库的一个 bug 导致在特殊情况下会计算出天价的 gas 费。一般情况下,钱包预执行的时候,用户就会看到余额不足的错误,但这次恰好遇到了土豪[允悲]。
而土豪用硬件确认的时候,硬件钱包 Ledger 展示费用的时候不是以人类可读的方式展现(估计是数字溢出所以展示成二进制了?),没注意就给确认了。
最后矿工全额退款,DeversiFi 给了矿工 50 ETH 作为感谢,也算皆大欢喜。
问:Ethereum 不是有 gas limit 吗?
答:gas limit 限制的是 gas 的数量,并没限制 gas price(单价)。单价过高,也会导致天价的 gas fee。链这一层也应该考虑支持 gas price 的限制。
@jolestar
https://weibo.com/1648815335/KAns2BOf6