Create account

赵大磊
2035d
Bitcoin SV 区块重组事件始末
发表于 2019-04-19 | 分类于 技术 | 阅读次数: 541
北京时间 4月18日 20:20 ~ 22:06,BSV 从区块高度 578640 到 578645 发生区块重组,火币全球站随即宣布暂停 BSV 充提。

Imgur
今天上午,慢雾社区发声。

Imgur
这事跟我有点关系,写篇文章说明一下。

首先要澄清的是,慢雾社区的报道使用区块“回滚”一词并不准确,容易引起误解。区块延续(挖矿)过程中发生重组放弃孤块时有发生,下图是老刘的解释,这篇文章中有更多的技术细节。

Imgur
重组不会导致交易丢失和双花,无论这笔交易的状态是:

已到节点内存池,等待打包
已打包到孤块中
为了测试 BSV 的网络能力,我写了一个工具,能短时间产生大量合法交易送到节点的内存池。昨晚为了试一下工具的极限和稳定性,就火力全开的输出了约一小时。

因为持续的大流量(TPS稳定在至少400,峰值可能到了1000),一段时间(约半小时)后除了WhatsOnChain,几乎所有的区块浏览器都无法正常更新。全部一百多万笔交易引发了竞争挖矿时的区块重组,整个过程如下。

Imgur
我把当时的区块都画了出来,标注了出块时间和区块大小,方便你对照。



SVpool(上面那条链)和 Coingeek(下面那条链)同时打出了区块 578640
上下两条链均被延长,竞争开始
Imgur

Imgur

在 578640 出块半小时后(20:56),下链最先打出区块 578643,发生第一次区块重组,孤立了上链的 3 个块
随后下链连续出了两个块,一个 127M,一个 107M
Imgur

但上链一直都未放弃。同时注意到,下链在 21:18 打出 578645 后 43 分钟都未出块,直到 22:01 上链打出同样高度的区块赶上进度
上链在打出 578645 后 5 分钟,迅速打出下一个块,发生第二次区块重组,孤立了下链的 6 个区块
Imgur

下链放弃延长自己
从高度 578646(22:06)开始竞争结束,上链最终获胜
Imgur

整件事情细节如上,下面这则报道基本准确。

Imgur
经过一宿的发酵,区块重组的事带来了不少新闻和言论。

首先,BSV主网一切正常,并未受到任何危害也未暴露任何漏洞。这不是一次有预谋的攻击行为,也不是一次事故,不用担心。区块重组是矿工用真金白银博弈的结果,再正常不过。交易所在遇到区块深度重组时担心资金安全选择暂停充提,无可厚非。

Imgur
在做这次测试前,我没有通知任何人,算是一次“突袭”。结果表明:

矿工内部的竞争是充分有序的
这一有序竞争并不延及用户,不会影响用户的链上交易
算力节点在验证和广播大区块时会处于劣势,需要提升(讨论后我们更认同节点在验证交易时性能不够的观点)
基础服务的性能和可用性需要提升
测试时打坏了几乎所有的区块浏览器,可能是本次事件的唯一影响…
其他数据细节会更新到 GitHub。类似的测试随后仍会在主网进行,不过会控制 TPS。

据 bitcoinsv.io 的消息,Bitcoin SV 客户端会在近期发布更新,优化陈旧代码,提升性能。

Imgur

Imgur
Imgur
另外,北京时间4月24日23点,计划了主网的压力测试。

https://www.bitcoinfiles.org/96b881c872aa3cee11d5985d469bec4010f320603df48ed2b6b6f2645ff41108
Imgur

看到了一些有趣的文字。

Imgur
网络是正常的,转账也是正常的,否则工具生成的交易没法打到内存池,不知道“卡住”是什么意思
是的,集体挂掉,之后陆续恢复,WhatsOnChain 表现最佳
区块重组必然带来站错队的矿池损失奖励,这句话是废话,协议就是如此设计。BTC 和 BCH 区块重组一样会有矿工损失奖励
是的,目前只看到火币全球站暂停了充提
在写这篇文章的时候,慢雾社区追加了一则消息,谢谢。