区块链技术是一种分布式账本技术,它使用分散的节点来实现可验证的可信账本,这些可信账本上所记录的交易数据是不可篡改的。由于数据存储在网络的多个节点上,所以每当有新的交易进入系统时,它都会被复制并存储在网络的所有节点上。
在比特币等基于区块链技术的系统中,矿工会接收到新的交易,并为此构建一个新区块,然后将其发送到全网以供每个人验证,经验证后才能向网络上的每个节点追溯所有交易的完整历史记录。
当有矿工提交并将自己的新区块增加到网络上时,如果有另外一个矿工在同一时间也提交并将他自己的新区块加入同一链的末端时,系统将无法判断该区块是属于哪一个矿工,从而可能造成内部矛盾,最终只能接受先收到的一个区块。此时另一个矿工提交的区块被称为“孤块”或“游离块”,这就是orphan block。
Orphan block也称为“孤立块”,它是指无法追溯到任何有效的父区块的块。Orphan block通常是由于两位不同的矿工在短时间内生成相同的新区块,因此也被称为“Race Condition”,在这种情况下,系统无法决定哪一个区块才是正确的,因此网络上的所有矿工都无法被接受。
由于孤块会导致区块链网络的失衡,因此在更新区块链的时候需要尽量避免产生孤块。一般来说,有两种方法可以防止产生孤块,一种是使用更长的延迟,使得矿工能够更正确的判断出自己的新区块是否符合预期;另一种则是采用类似于Proof-of-Stake的方式,以此降低产生孤块的可能。