长图 | 比特币分叉史
什么是比特币分叉?
“分叉”这个词有时会让人不好理解,因为不同类型的“分叉”代表着不同的东西。
代码库分叉
代码库分叉是软件实现代码的副本。代码库分叉通常是对原始代码库进行的调整。在比特币上,代码库的分叉意味着生成可以与比特币协议完全兼容的代码。它们可能会导致区块链的分叉,或者形成一个全新的数字货币体系。
区块链分叉
当区块链上出现两个版本的交易历史记录时,就会发生区块链分叉。发生这种情况的原因有很多,可以是预期之内的,也可以是预期之外的。结果需要根据具体情况来看,可能会导致一个孤立区块或一个全新的数字货币体系。
硬分叉
硬分叉是一种协议升级,它可以放宽或删除规则。如果所有用户都进行升级,那么硬分叉就不会导致区块链的分叉。尤其在比特币上,一些人认为,除非所有用户都升级,否则“升级”的协议根本不应该被称为硬分叉,而应该称为一种新的数字货币或“分叉币”。
软分叉
软分叉是一种协议升级,它可以收紧或添加规则。软分叉的升级可能会导致区块链的分叉,但是大部分哈希算力的强制执行将最终聚合相同的历史交易记录。哈希算力可以让矿工激活软分叉 (MASF),而用户也可以激活软分叉 (UASF)。
灰色地带
虽然不同的名词间有所区别,但比特币分叉的情况其实很复杂。硬分叉和软分叉之间的区别往往不是很明显,有时甚至根本不清楚什么要进行协议升级。时至今日,业内专家对某些事件的分类仍存在分歧。有些纯粹出于政治动机而试图改写历史的分叉,会让情况变得更为复杂。
图中关键信息
比特币核心
比特币诞生于2009年,当时中本聪发布了第一个比特币代码库。然后,它被称为“比特币”(或者,更具体地说,第一个版本的“比特币0.1.0”)。同一代码库的后期被重新命名为“比特币核心”,有时也被称为“中本聪客户端”。
常规区块链分叉
当两个或更多的矿工同时挖到有效区块时,比特币的区块链会分叉成为两个分支。按照设计的规则,只要一个分支变长,这些分叉就会分解,此时较短的分支就会被丢弃。哪怕是今天,这种情况也经常发生。
第一次软分叉
比特币的第一个软分叉协议升级后禁用了协议特性的OP_RETURN。从技术上讲,这是一个UASF,但在早期,实际上只是中本聪在制定协议规则。升级没有导致区块链分叉。
第一次硬分叉
比特币的第一次硬叉协议升级增加了一个新功能OP_NOP,而且也是由中本聪指定的。然而,并不是所有人都认为这次升级实际上是一个硬分叉。从结果来看,它没有导致区块链分叉。
意外的区块链分叉
在比特币网络的不同部分看到不同的交易历史,并且通常不会自动解决的时候,就会出现意外的区块链分叉。这种类型的区块链分叉通常是由软件缺陷或其他技术问题引起的,并且是比特币可能经历的最大短期故障之一。幸运的是,在比特币的历史上,这种事情只发生过两三次,每次都是通过社区协调解决的,并没有造成太大的破坏。
比特币结 Bitcoin Knots
比特币结是比特币核心代码库分叉的一个例子。代码库分叉的是代码的副本,而不会引起区块链分叉。比特币结的设计初衷是与比特币核心保持兼容――它只是提供了不同的功能,可以理解为相互兼容又能提供不同功能的比特币钱包软件。
Libbitcoin
Libbitcoin是在不同的代码库中完全重新实现比特币协议的一个例子。它不是一个比特币核心的代码库分支,但它的设计目的是保持与比特币核心兼容。
第一次MASF
P2SH升级可以说是第一个MASF,尽管后来的MASF使用了一种更纯粹的基于哈希算力的升级机制。它没有导致区块链分叉。