Bitcoin SV 区块重组事件始末

北京时间 4 月 18 日 20:20 ~ 22:06,BSV 从区块高度 578640 到 578645 发生区块重组,火币全球站随即宣布暂停 BSV 充提。

Imgur

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

Imgur

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

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

Imgur

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

  1. 已到节点内存池,等待打包
  2. 已打包到孤块中

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

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

Imgur

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

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

Imgur

Imgur

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

Imgur

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

Imgur

  1. 下链放弃延长自己
  2. 从高度 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
  1. 网络是正常的,转账也是正常的,否则工具生成的交易没法打到内存池,不知道“卡住”是什么意思
  2. 是的,集体挂掉,之后陆续恢复,WhatsOnChain 表现最佳
  3. 区块重组必然带来站错队的矿池损失奖励,这句话是废话,协议就是如此设计。BTC 和 BCH 区块重组一样会有矿工损失奖励
  4. 是的,目前只看到火币全球站暂停了充提

在写这篇文章的时候,慢雾社区追加了一则消息,谢谢。

Imgur

追加一则 BitMEX 的消息,那些在纠结重组导致双花的,可以放心了。

Imgur