北大-区块链技术与应用10-BTC分叉

Zoella Lv4

一、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: Zoella
  • Created at : 2025-01-14 23:33:21
  • Updated at : 2025-01-15 11:10:26
  • Link: https://zoella-w.github.io/2025/01/14/39-北大区块链-BTC分叉/
  • License: This work is licensed under CC BY-NC-SA 4.0.