北大-区块链技术与应用10-BTC分叉
一、State fork(状态分叉)
State fork:对比特币当前的状态有分歧造成的分叉,比如两个区块几乎同时生成,造成的分叉
Forking attack 也属于 state fork,但是是人为故意的,所以也叫做 deliberate fork(故意分叉)
二、Protocol fork(协议分叉)
Protocol fork:比特币的协议发生改变(通过软件升级),有些节点由于各种原因可能暂时没有升级,从而造成的分叉
根据对协议修改的内容的不同,可以分为 hard fork(硬分叉)和 soft fork(软分叉)
1、Hard fork
新节点发布的区块,旧节点可能不认
1个交易约为250字节,一个区块约有 1000,000字节/250字节=4000个交易,每秒约有 4000/(60*10)≈7个交易,数量过少
假设 Block size limit 从 1M 更新到 4M,大多数算力的节点更新了软件,但少部分未更新。只要仍有部分节点未更新软件,该分叉就不会消失
Example:ETH & ETC
2016年,以太坊的 DAO(去中心化自治组织)遭到黑客攻击,导致大量ETH被盗。部分成员支持通过硬分叉回滚交易、恢复被盗资金,而另一些成员认为这会破坏区块链的不可篡改性
最终社区实施硬分叉,恢复到攻击前的状态,这条新链称为 Ethereum(ETH);而反对硬分叉的用户继续使用原链,称为 Ethereum Classic(ETC),从此两种货币独立发展(通过chain ID 区分两条链)
2、Soft fork
新节点发布的区块,旧节点仍会认可
假设 Block size limit 从 1M 更新到 0.5M,大多数算力的节点更新了软件,但少部分未更新。如果有节点不更新软件,可能会经常产生孤儿区块,所以最终所有节点都会更新,分叉不会继续延展
Example:P2SH(Pay to Script Hash)
P2SH 的验证分为两步:(1)验证输入脚本给出的赎回脚本,和前一个交易的输出脚本给出的 赎回脚本的哈希值 对得上;(2)执行赎回脚本,验证输入脚本给出的签名是合法的
对于旧节点来说,只会进行第一阶段的认证;所以新节点认为合法的区块,旧节点仍然会认可
3、总结
(1)Soft fork:只要系统有半数以上的节点更新,就不会有永久的分叉
(2)Hard fork:如果不是所有的节点都更新了,就会有永久的分叉。根本原因是旧节点不认可新链(不是合法最长链),所以会按照旧链执行
- Title: 北大-区块链技术与应用10-BTC分叉
- Author: Gabrielle
- Created at : 2025-01-14 23:33:21
- Updated at : 2025-05-20 10:47:28
- Link: https://zoella-w.github.io/2025/01/14/39-北大区块链-BTC分叉/
- License: This work is licensed under CC BY-NC-SA 4.0.