第10讲 BTC-分叉
state fork(日常的分叉)
- forking attack
- deliberate fork(人为攻击)
升级软件,修改协议
protocol fork
- hard fork硬分叉
- soft fork软分叉
硬分叉
block size limit: 1M -> 4M
比特币协议升级,如增大区块尺寸。部分更新的节点,生成的区块都是大区块,他们会在大区块或者小区块之后继续接上区块。
对于旧节点,认为大区块和大区块所在的链均是非法的,只会在小区块后面继续加入区块
当新节点算力大于旧节点,大区块形成的分链成为主链。但是只要有旧节点未升级,就还会出现分叉(永久性)。
添加chainID
软分叉
block size limit: 1M -> 0.5M
比特币协议升级,如减小区块链尺寸。部分更新的节点,生成的区块都是小区块,会认为原来的大区块为非法。
旧区块会兼容新区块,但是新区块不会兼容旧区块,只沿着新区块之后继续扩展。当新节点算力足够时候,旧节点的工作等于白挖,得不到实际出块奖励。
提议:coinbase域中,部分字节表示为UXTO的Merkle Tree的根哈希值。这个分叉为软分叉
著名软分叉例子:P2SH
硬分叉和软分叉总结
- 新节点兼容旧节点,反之不然,为硬分叉;
- 新节点不兼容旧节点,反之不然,为软分叉;