BTC矿工同时出块怎么算?为什么BTC会出现孤块?
孤块(orphan block)或分叉的情况,是两个矿工几乎同时挖出新区块时发生的,网络短时间内会分成两个链,一个分支被大多数节点接受,另一个分支就变成孤块。接收孤块的节点会把该区块里的交易放回内存池(mempool),等链重组(reorg)后重新确认,这会带来短暂的交易确认混乱。

这种情况不是单纯看“哪个节点出块后被全网验证速度快”,而是看哪个区块先被大多数算力认可,并且在其基础上产生更长的链,最后由最长链规则决定哪个区块成为主链上的真正区块。
具体过程
1、两个矿工几乎同时挖到区块,假设矿工A挖出区块X,矿工B挖出区块Y,两个区块高度相同,且父区块也相同。
2、两个区块几乎同时广播到网络,不同节点收到的顺序不同,部分节点先收到X,另一些先收到Y,导致网络暂时分叉,一部分节点的链是 …→X,另一部分是 …→Y。
3、胜负关键不是传播速度,而是后续算力对哪个链支持更多,比如下一个区块的矿工是在X基础上挖出区块Z,链变长成 …→X→Z,大多数节点会切换到这条链,Y就成孤块。
4、相反如果下一个区块基于Y挖出,X就变成孤块。
孤块的后续处理
孤块被发现后,之前接受孤块的节点会执行链重组,把孤块中的交易放回mempool,等待再次被打包,不会丢失。
极少数情况下,网络可能出现更深的链重组(2-3块以上),但这很罕见,因为算力通常集中,大矿池很快形成最长链。
决定哪个区块真正上链的是最长链规则,算力支持最多的链就是主链,传播速度影响的是初期哪个区块先被看到,但真正决定胜负的是后续算力积累,孤块里的交易不会丢失,等待再次确认,双花攻击会被拒绝。






