-
比特币系统分叉分类:
- 状态分叉
state fork:由于对比特币区块链当前的状态有意见分歧而导致的分叉- forking attack (
deliberate fork)
- forking attack (
- 协议分叉
protocol fork:比特币系统需要软件升级,即对协议有意见分歧而导致分叉- 硬分叉
hard fork:新区块认可旧区块,旧不认可新,永久性分叉- 例一:block size limit变大为2M
- 攻击:在另一条链进行重放攻击,可添加chain ID解决
- 软分叉
soft fork:新区块不认可旧区块,旧认可新,临时性分叉- 例一:block size limit变小为0.5M
- 例二:给某些目前协议中没有规定的域增加一些新的含义(如
coinbase域),当前系统中的轻节点无法证明账户A中金额是多少(全节点可以通过查UTXO,看A在UTXO里对应的输出总共收到多少个币即可),有人提议把UTXO集合当中的内容也组织成一颗merkle tree,这个merkle tree有一个根哈希值,根哈希值写在coinbase域里面,这样就可以用merkle proof证出来了 - 例三:
P2SH(Pay to Script Hash)
- 硬分叉
- 状态分叉
-
总结:
- soft fork特点是什么?只要系统中拥有半数以上算力的节点更新了软件,那么系统就不会出现永久性的分叉,只可能有一些临时性的分叉
- hard fork特点是什么?必须是所有的节点都要更新软件,系统才不会出现永久性的分叉,如果有小部分节点不愿意更新,那么系统就会分成两条链