伦敦升级 Ropsten 测试网事故回顾

概述

2021年 7 月 21 日,OpenEthereum 团队注意到他们在 Ropsten 上的节点卡在了区块 10679538 处。人们原以为这是 OpenEthereum 的问题。其实,问题真正出在 go-ethereum 实现检查 1559 交易发送方余额的方式上。一个无效交易(发送方余额只够支付交易实际使用的 gas,而非交易指定的 maxFeePerGas 总额)被打包进了区块。由于 Ropsten 矿工运行的都是 go-ethereum,这个区块随后又被其它 go-ethereum 矿工接受,但是被网络中的其它一些客户端拒绝了。具体来说,OpenEthereum 和 Besu 拒绝了这个交易/区块,Nethermind、go-ethereum 和 Erigon(这些客户端实现的部分代码来自 go-ethereum 代码)接受了它。问题的根源已经找到,相关客户端已经在新的版本中修复了该问题:

go-ethereum: v1.10.6, fix PR;

Erigon: v2021.07.04-alpha, fix PR;

Nethermind: v1.10.79, fix PR。

问题区块的信息

网络:Ropsten

区块编号:10679538

哈希值:0x1252a34c4f2b061adc609e909d958c02e1ac39043e2e60c0ec47e565e3f625f1

深圳龙华区:牵头编制国际、国家、行业区块链技术及应用标准(规范)的企业或机构最高给予200万元奖励:8月27日消息,据深圳人民政府官方网站消息,昨日下午,龙华区委常委会会议召开,审议并通过了“1+N+S”数字经济政策体系,数字经济政策大礼包正式出台。“1+N+S”数字经济政策体系包含10项专项性政策,其中支持区块链产业发展政策是:通过鼓励从事以区块链企业开展技术研究(对牵头编制国际、国家、行业区块链技术及应用标准(规范)的企业或机构,分别一次性给予200万元、150万元、50万元奖励)、产品开发、场景应用、平台运营、检测认证等措施,促进区块链各要素资源在龙华集聚,加速打造区块链产业发展生态。[2021/8/27 22:42:04]

OpenEthereum debug 日志

eth_getBlock 输出 (go-ethereum)

(注:所有时间已转换成北京时间)。

2021 年 7月 21日

18 : 39:Ropsten 测试网上挖出区块 10679537。

21 : 53:OpenEthereum 开发者在 Ethereum R&D discord 的 #1559-dev 频道发帖称他们的节点卡在了区块 10679538 处。

21 : 58:@smixx 称他们的在 Ropsten 节点位于区块 10680453。

历史上的今天丨Xpring计划通过收购Logos Network构建XRP DeFi产品:2019年9月25日,Ripple已迈出了构建基于XRP的去中心化金融(DeFi)产品的第一步。Ripple的投资部门Xpring收购了去中心化支付平台Logos Network,并将增加9名驻纽约的工程师。 Logos创始人兼首席执行官Michael Zochowski将成为Xpring的“ DeFi产品负责人”。

2019年9月25日,欧洲央行行长Mario Draghi在致欧洲议会议员Eva Kaili的信中指出,欧洲中央银行系统(ESCB)正在密切监视加密货币行业的发展。Draghi表示,ESCB正在分析加密资产和稳定币,以了解其对货币政策、支付和市场基础设施的安全性和效率以及金融系统稳定性的潜在影响。然而目前为止,稳定币和加密资产在这些领域的影响有限,并且其设计方式无法使其成为货币的合适替代品。[2020/9/25]

22 : 36:Besu 确认他们的节点也拒绝了区块 10679538。

22 : 51:确认挖出区块 10679538 的矿工是 go-ethereum节点。

22 : 55:确认 go-ethereum 矿工仍继续在区块 10679538 上面挖矿。

22: 56:确认 Nethermind 也接受了区块10679538。

23 : 08:go-ethereum 已确认问题的根本原因。

23 : 43:go-ethereum 开启 pull request,提供候选修复方案。

23 : 46:Erigon 开启 pull request,提供候选修复方案。

2021年 7月22 日

00 : 01:更新后的 go-ethereum 和 Besu 矿工在 Ropsten 上重启(此时,错误的链已经挖到了区块 10680803)。

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。

提高规范中断言(assertion)的清晰度

该提交新增了关于 EIP 1559 类型交易有效性的断言。具体来说,在第 217 行代码新增了以下断言:

另外还要注意的是,在前几行代码(第 207 行)中,sender.balance 被修改成了减去交易量之后的部分(sender.balance -= transaction.amount)。这个参数引发了混乱,因为一些客户端团队在检查第 217 行定义的断言时使用的是全部 sender.balance(即,没有减去transactiion.amount 的发送者地址余额),而非更新后的值。

@holiman 关于 go-ethereum 恢复的说明:

节点同步时跟随错误的链

假设你正在运行 geth,并处于同步中。区块 X 上发生了分叉。你的节点跟随了总难度较高的错误的链。在区块 Z,你停止了节点并将其更新至修复后版本。

问题描述:节点依然在 “错误” 的链上。

解决方案:执行 debug.setHead{X-1) 回到分叉发生之前。这会将节点倒回区块 X 之前的某个状态,不一定是区块 X-1 的状态,因为 geth 不一定有区块 X-1 的完整状态,但是会有其它某个区块的完整状态。通常情况下,geth 大约每隔 1 万个区块(1 小时)和/或宕机时会将状态刷到磁盘。如果 geth 在 gcmode=archive 下运行,就会将每个区块都刷到磁盘。

当错误的链总难度较高时进行同步

假设你正在同步一个 geth 节点,区块 X 上发生了分叉。由于分叉已经发生了,再加上错误的链总难度更高,你很可能会同步错误的链,pivot 区块是 X+M。在这种情况下,由于你没有区块 X+M 之前的状态,无法执行 debug.setHead 来解决这个问题。

这种情况需要重新同步。但是,你需要防止 geth 同步错误的那条分叉链。这可以通过 whitelist 命令行参数实现。

因此,你需要执行 geth --whitelist 123123=0x2342fafa9af9af9af9af9af9。

所谓的白名单,就是一个 geth 节点在与另一个对等节点连接时会向对方请求区块 123123 的数据。如果该 geth 节点收到的区块头中的哈希与白名单中的不符,就会与之断开连接。这就意味着,节点将排斥错误的链上的对等节点,只与较短(但是正确的)链上的对等节点连接。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

屎币海南省打造区块链财政电子票据应用管理平台

网上申办,链上开票。海南日报记者近日从省财政厅获悉,我省正积极探索把区块链应用融入财政电子票据管理中,着力在全国率先打造区块链财政电子票据应用管理平台,今年1月上线至6月30日,该平台共开具区块链财政电子票据1919万张,涉及金额312亿元。

BNB金色观察|时间加权自动做市商与AMM有什么区别?

金色财经消息,Uniswap创始人正在与Paradigm两名研究院研究新的AMM模型,其研究为在以太坊上处理大额交易,可以将大额交易分成碎片在一定时间内消解。 笔者查阅了Paradigm官网显示文档,将其中关于AMM和时间加权自动做市商TWAMM的区别整理如下: 自动做市商(AMM) AMM将大部分uniswap上的做市过程实现了自动化。

DYDX河南大雨 行业内的我们在行动(附捐款渠道)

7月20日,河南多地出现极为罕见的特大暴雨引发全国关注,多地发生区域性严重洪涝灾害,特别是“重灾区”郑州。 面对被暴雨困住的城市,社会各界纷纷伸出援手。 据不完全统计,这些行业内的朋友已经行动起来了: 比特大陆向郑州慈善总会捐款1000万元人民币。同时将上线员工捐款通道。 FTX基金会捐款100万人民币持驰援河南。

SAND波卡生态起步在即 哪五大发展方向值得关注?

背景 距离Kusama插槽结束已经过去了一周多,5次拍卖锁仓的KSM超过了114万枚,占了KSM发行量的9.8%,而目前随着第一轮插槽拍卖的结束,Kusama网络已经暂停了Crowdloan功能,等待网络稳定运行,随后大概率会开启第二轮拍卖。

[0:15ms0-6:624ms