Ropsten共识问题
概述
2021年7月21日,OpenEthereum团队注意到他们在Ropsten上的节点卡在了区块?10679538?处。人们原以为这是OpenEthereum的问题。其实,问题真正出在go-ethereum实现检查1559交易发送方余额的方式上。一个无效交易被打包进了区块。由于Ropsten矿工运行的都是go-ethereum,这个区块随后又被其它go-ethereum矿工接受,但是被网络中的其它一些客户端拒绝了。具体来说,OpenEthereum和Besu拒绝了这个交易/区块,Nethermind、go-ethereum和Erigon接受了它。问题的根源已经找到,相关客户端已经在新的版本中修复了该问题:
go-ethereum:?v1.10.6,?fixPR;
福克斯新闻主持人:当货币作为控制社会手段时,我理解了比特币:金色财经报道,据Bitcoin Magazine消息,福克斯新闻主持人Tucker Carlson表示,当中央银行使用货币作为控制社会的手段时,我理解了比特币。比特币是“一条可用的逃生路线”。[2022/12/18 21:51:49]
Erigon:?v2021.07.04-alpha,?fixPR;
Nethermind:?v1.10.79,?fixPR。
问题区块的信息
网络:Ropsten
区块编号:10679538
哈希值:0x1252a34c4f2b061adc609e909d958c02e1ac39043e2e60c0ec47e565e3f625f1
白宫新闻秘书:已呼吁相关部门解决加密货币方面的监管漏洞:12月14日消息,美国白宫新闻秘书让·皮埃尔表示,已呼吁相关部门解决加密货币方面的监管漏洞。[2022/12/14 21:42:46]
OpenEthereumdebug日志
eth_getBlock输出(go-ethereum)
测试网事故的时间线
。
2021年7月21日
18:39:Ropsten测试网上挖出区块10679537。
21:53:OpenEthereum开发者在EthereumR&Ddiscord的#1559-dev频道发帖称他们的节点卡在了区块10679538处。
包括彭博社在内的多家新闻媒体申请公布FTX的债权人名单:金色财经报道,《金融时报》、《华尔街日报》、《纽约时报》和彭博社已提起诉讼,寻求解封倒闭的加密货币交易所 FTX 的债权人是谁。诉讼称,新闻媒体充当公众的眼睛和耳朵,向公众通报当今的问题,司法记录的密封阻碍了这一宝贵的社会功能。新闻机构辩称,虽然出于安全原因可能有必要对债权人的联系信息进行编辑,但这些债权人的姓名不会构成身份盗用或人身危险的风险。
11 月 22 日,一名联邦法官要求 FTX 债权人在破产案中保持匿名。该诉讼旨在揭露超过100,000 名债权人,以及前 50 名债权人中可能有哪些人欠FTX??31 亿美元。[2022/12/10 21:35:36]
21:58:@smixx?称他们的在Ropsten节点位于区块10680453。
iBox官方:网传融资为虚假新闻:5月15日消息,昨日,有媒体发文称iBox链盒完成数千万美元Pre-A轮融资,由银时集团领投,地方创业投资基金和某些上市公司跟投等信息。对于该报道,iBox官方于5月14日晚已发布公告,证明为虚假信息。iBox方面表示:公司目前没有融资计划”该媒体从未接触过海南链盒,所有信息均为虚假内容。对于这种为博眼球进行虚假宣传的媒体,iBox表示将保留追究法律责任的权利。[2022/5/15 3:16:52]
22:36:Besu确认他们的节点也拒绝了区块10679538。
22:51:确认挖出区块10679538的矿工是go-ethereum节点。
22:55:确认go-ethereum矿工仍继续在区块10679538上面挖矿。
22:56:确认Nethermind也接受了区块10679538。
动态 | 报告显示:2019年上半年腾讯新闻的用户最关注的技术10大名词汇中包括区块链:8月27日,腾讯ConTech论坛·新经济专场在北京召开,腾讯网编委龙兵华在会上发布了《新经济领域传播报告》,对2019年上半年新经济领域话题在腾讯新闻客户端的数据表现进行了分享。在用户最关注的热门技术名词TOP10里,5G的关注度遥遥领先。此外,云计算、区块链、无人驾驶、边缘计算、刷脸支付、脑机一体等等非常前沿的科技名词,也频繁出现在用用户面前。(腾讯科技)[2019/8/30]
23:08:go-ethereum已确认问题的根本原因。
23:43:go-ethereum开启?pull?request,提供候选修复方案。
23:46:Erigon开启pull?request,提供候选修复方案。
2021年7月22日
00:01:更新后的go-ethereum和Besu矿工在Ropsten上重启。
00:43:EthereumJS确认与go-ethereum、Erigon和Nethermind存在同样的问题。
01:57:Nethermind开启pull?request,提供候选修复方案。
10:22:修复后的版本挖出了区块?10680804。
22:54:go-ethereum发布了修复后版本?v1.10.6。
~23:00:Nethermind发布了修复后版本?v1.10.79。
2021年7月23日
~00:00:Erigon发布了修复后版本?v2021.07.04-alpha。
纠正措施建议
提高规范中断言的清晰度
该提交新增了关于EIP1559类型交易有效性的断言。具体来说,在第217行代码新增了以下断言:
另外还要注意的是,在前几行代码中,sender.balance?被修改成了减去交易量之后的部分。这个参数引发了混乱,因为一些客户端团队在检查第217行定义的断言时使用的是全部?sender.balance,而非更新后的值。
Go-Ethereum恢复
@holiman?关于go-ethereum恢复的说明:
节点同步时跟随错误的链
假设你正在运行?geth,并处于同步中。区块?X?上发生了分叉。你的节点跟随了总难度较高的错误的链。在区块?Z,你停止了节点并将其更新至修复后版本。
问题描述:节点依然在“错误”的链上。
解决方案:执行?debug.setHead{X-1)?回到分叉发生之前。这会将节点倒回区块?X?之前的某个状态,不一定是区块?X-1?的状态,因为?geth?不一定有区块?X-1?的完整状态,但是会有其它某个区块的完整状态。通常情况下,geth大约每隔1万个区块和/或宕机时会将状态刷到磁盘。如果geth在?gcmode=archive?下运行,就会将每个区块都刷到磁盘。
当错误的链总难度较高时进行同步
假设你正在同步一个?geth?节点,区块?X?上发生了分叉。由于分叉已经发生了,再加上错误的链总难度更高,你很可能会同步错误的链,pivot区块是?X+M。在这种情况下,由于你没有区块?X+M?之前的状态,无法执行?debug.setHead?来解决这个问题。
这种情况需要重新同步。但是,你需要防止geth同步错误的那条分叉链。这可以通过?whitelist?命令行参数实现。
因此,你需要执行?geth--whitelist123123=0x2342fafa9af9af9af9af9af9。
所谓的白名单,就是一个geth节点在与另一个对等节点连接时会向对方请求区块?123123?的数据。如果该geth节点收到的区块头中的哈希与白名单中的不符,就会与之断开连接。这就意味着,节点将排斥错误的链上的对等节点,只与较短链上的对等节点连接。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。