9月11日,比特币网络在区块高度 966,500 短暂出现两个有效候选区块:SpiderPool与AntPool都在同一父区块基础上独立挖出了新区块。这形成了一个持续时间很短的单区块分叉。最终,网络沿AntPool版本继续出块,SpiderPool的区块虽然有效,却未能留在活跃链上,成为陈旧区块(stale block)。
18
20
当时发生了什么?
据援引Galaxy Research的报道,监测节点最先收到的是SpiderPool的区块,因此该节点一度将SpiderPool分支视为链尖。与此同时,AntPool也产出了同一高度的另一有效区块。
这并不罕见:区块无法在同一瞬间传遍全球所有节点。网络中不同节点可能会在短时间内看到不同的“最新区块”。
18
35
留在主链上的AntPool区块,报送的区块时间戳为 11:30:30 UTC,包含 4,359笔交易。分叉监测数据则显示,竞争的SpiderPool区块头时间戳为 11:35:19 UTC;但该监测站的bcoin节点在11:30:42就先看到了SpiderPool区块,AntPool区块反而更晚才被该节点观测到。
17
40
这里要区分两个概念:区块头时间戳由矿工写入,是协议允许范围内的元数据;它并不能准确代表每个节点实际收到该区块的时间。因此,“时间戳更早”与“某个节点更晚看到”并不矛盾。
现有材料没有给出可同等确认的SpiderPool陈旧区块交易笔数,因此不宜把具体交易数量视为已证实事实。
AntPool为什么赢了?关键不在谁先被看到
比特币不会因为某个区块先到达某一台节点,就永久认定它为主链。节点遵循的是:在有效链中选择累计工作量最大的链。
起初,两个矿池在966,500高度各有一条仅含一个区块的有效分支。随后,高度 966,501 的新区块建立在AntPool的966,500区块之上。这样一来,AntPool分支拥有更多累计工作量,网络节点便逐步收敛到这一分支;SpiderPool的同高度区块则从活跃链中脱离,成为陈旧区块。
22
35
这正是工作量证明网络处理偶发分叉竞争的常规方式:哪条有效分支先获得工作量优势,矿工就会转而在那条链上继续构建。
两个966,500区块与区块奖励,最后如何处理?
链上监测显示,高度966,500确实曾存在两个版本:AntPool的区块保留在主链,SpiderPool的区块则被标记为陈旧区块。它们并不是两套永久并存的比特币账本。
22
40
报道显示,AntPool被接受的区块总奖励为 3.14112795 BTC。此前研究草稿曾提到SpiderPool陈旧区块的奖励约为 3.1389 BTC,但所提供的主要风格材料并未独立证实这一精确数值。可以确认的是:陈旧区块不属于活跃主链,其coinbase奖励不能作为已确认的主链奖励花费。
22
为什么时间数据看起来“反常”?
分叉监测记录中,AntPool区块的区块头时间早于SpiderPool区块,但同一个观测节点却先收到SpiderPool区块。
40
这不是共识冲突。矿工设置时间戳时有协议约束,但区块在网络中的传播仍需要时间;一台节点的接收先后,可能与区块头时间不同,也可能与其他节点的观察结果不同。决定胜负的不是时间戳,也不是单一节点的“先见记录”,而是分支背后的累计工作量。
一个月内第三次单区块重组
Galaxy Research将这起9月11日事件称为四周内报告的第三次单区块重组。此前两次发生在 8月16日的962,722高度 和 8月24日的963,853高度。三次事件的模式相同:有效分支短暂竞争,随后其中一条因获得更多累计工作量而被网络自动采纳。
26
35
小规模重组集中出现,本身并不意味着比特币共识机制存在缺陷。工作量证明挖矿中,不同矿工偶尔会在非常接近的时间找到有效区块;传播延迟会令网络暂时出现竞争链尖,而后共识规则会自动完成收敛。
23
25
对普通用户意味着什么?
这类一层重组最实际的提醒是:第一次确认不等于最终确定性。如果一笔交易只被收录在后来被替换的陈旧区块中,它的确认记录可能消失;交易随后可被重新广播,或被打包进之后的主链区块。
23
31
现有报道将9月11日事件描述为正常的传播与共识结果,并无证据表明它是双花、协议漏洞或攻击。商户、交易所及处理较大金额的收款方,仍应根据自身风险等待适当数量的区块确认,而不能仅因交易出现在最新一个区块中就视为完全不可逆。
23
25