比特幣區塊鏈資料結構完全指南:從哈希指針到 UTXO 集合的完整解析
深入解析比特幣底層資料結構的完整指南。涵蓋區塊頭與區塊體的詳細結構、Merkle 樹的密碼學原理、UTXO 模型的運作機制、比特幣腳本語言基礎、記憶池與交易傳播、區塊鏈分叉類型、以及區塊獎勵與貨幣發行機制。提供真實區塊數據解讀與技術規格交叉引用。
比特幣區塊鏈資料結構完全指南:從哈希指針到 UTXO 集合的完整解析
老實說,每次看到有人在網上說「比特幣區塊鏈就是一個分布式的帳本」,我都想跟他說:兄弟,這話沒錯,但你以為你知道,其實你不知道。
帳本?這比喻太簡單了。比特幣的底層資料結構其實是一個超級精密的密碼學機器,每個零件都有它存在的意義。區塊頭、區塊體、Merkle 樹、UTXO 集合、比特幣腳本——這些東西怎麼組裝在一起、為什麼要這樣設計、有哪些 trade-off——這篇文章幫你一次搞懂。
讀完這篇,你對比特幣的認識會從「哦區塊鏈」升級到「哦原來是這麼回事」。我盡量說得清楚,但也建議你親自動手用 Bitcoin RPC 或區塊鏈瀏覽器去查查真正的資料,理論結合實際,效果最好。
第一章:區塊——比特幣的集装箱
1.1 區塊的基本結構
比特幣區塊就像一個標準化的集裝箱,每個集裝箱裡裝的東西有固定的格式。區塊分為兩大部分:區塊頭(Block Header) 和 區塊體(Block Body)。
區塊頭大小固定為 80 bytes,裡面裝的是元數據:
+-----------+-----------+--------------------------------+
| Field | Size | Description |
+-----------+-----------+--------------------------------+
| Version | 4 bytes | 協議版本號,用於軟分叉升級 |
| Previous | 32 bytes | 前一區塊的哈希值(防篡改鏈接)|
| hash | | |
| Merkle | 32 bytes | 區塊內所有交易的 Merkle 樹根 |
| Root | | |
| Timestamp | 4 bytes | 區塊創建時間(Unix 時間戳) |
| Bits | 4 bytes | 難度目標的壓縮表示 |
| Nonce | 4 bytes | 礦工調整的隨機數(工作證明) |
+-----------+-----------+--------------------------------+
這 80 bytes 的區塊頭有多重要?我跟你說,整個比特幣網路的安全基石就在這 80 bytes 裡。
Previous Block Hash 這個欄位把區塊串成一條鏈。你要是改動任何一個區塊的內容,這個哈希值就變了,然後所有後續區塊的「上一個區塊哈希」都對不上號,整條鏈就斷了。所以說區塊鏈「不可篡改」,根兒就在這裡。
Merkle Root 是區塊內所有交易的「指紋」。區塊內可能包含上千筆交易,但只要有任何一筆交易被改動,Merkle Root 就完全不一樣了。這也是為什麼 SPV(簡化支付驗證)錢包只需要下載區塊頭就能驗證交易存在性。
Nonce 是礦工折騰的隨機數。區塊頭的哈希值必須小於某個目標值才能算「合法」,但哈希函數的輸出是隨機的,礦工沒法算,只能一個個試。這個試錯過程就是我們說的「挖礦」。
1.2 區塊體:交易的海洋
區塊體比區塊頭靈活得多,大小可以變化。隔離見證(SegWit)升級之前,區塊大小上限是 1 MB;升級之後,區塊空間的計算方式變了,實際容量提升到了約 1.5-2 MB。
區塊體裡裝的是 Coinbase 交易 和 普通交易:
區塊結構(SegWit 前):
+---------------------------+
| 區塊頭 (80B) |
+---------------------------+
| Coinbase 交易 |
| (礦工收入) |
+---------------------------+
| 普通交易 1 |
+---------------------------+
| 普通交易 2 |
+---------------------------+
| ... |
+---------------------------+
| 普通交易 N |
+---------------------------+
總大小 ≤ 1,000,000 bytes
區塊結構(SegWit 後):
+---------------------------+
| 區塊頭 (80B) |
+---------------------------+
| Coinbase 交易 |
+---------------------------+
| 普通交易(基礎數據) |
+---------------------------+
| 見證數據(見證人) |
+---------------------------+
總見證空間 ≤ ~4 MB
隔離見證的設計很巧妙:它把簽名數據(見證數據)從交易中抽出來,放在區塊的「附加區」。這不僅增加了容量,還修復了交易可塑性(Transaction Malleability)問題,讓閃電網路等 Layer 2 方案得以實現。
1.3 真實區塊數據解讀
讓我帶你看一個真實的區塊。用 mempool.space 或 blockchain.com 查一下區塊高度 840,000(2024 年 4 月減半後的第一個區塊):
區塊高度:840,000
區塊時間:2024-04-20 03:02:42 UTC
區塊大小:2,145,628 bytes(約 2.1 MB)
交易筆數:4,057 筆
礦工:AntPool
區塊獎勵:3.125 BTC(Coinbase 獎勵)+ 0.2847 BTC(交易費用)
這是減半後的第一個區塊,歷史意義挺大的。你可以看到:
- 區塊大小達到了 2.1 MB,隔離見證的效果很明顯
- 交易筆數 4000+,說明網路挺繁忙
- 礦工費占了區塊獎勵的約 9%,這個比例會隨著時間越來越高
第二章:Merkle 樹——交易的指紋
2.1 Merkle 樹是什麼?
Merkle 樹(以密碼學家 Ralph Merkle 命名)是比特幣用來組織和驗證區塊內交易的數據結構。原理很簡單,我用大白話說:
步驟一:對區塊內每筆交易計算 SHA-256 哈希值
步驟二:把這些哈希值兩兩配對,再計算一次 SHA-256 哈希
步驟三:重複步驟二,直到只剩下一個哈希值——這就是 Merkle Root
交易哈希:
H1 = hash(Tx1)
H2 = hash(Tx2)
H3 = hash(Tx3)
H4 = hash(Tx4)
H5 = hash(Tx5)
H6 = hash(Tx6)
H7 = hash(Tx7)
H8 = hash(Tx8)
第一層:
H12 = hash(H1 + H2)
H34 = hash(H3 + H4)
H56 = hash(H5 + H6)
H78 = hash(H7 + H8)
第二層:
H1234 = hash(H12 + H34)
H5678 = hash(H56 + H78)
Merkle Root:
MerkleRoot = hash(H1234 + H5678)
Merkle 樹有個很酷的特性:只要你有一筆交易和對應的 Merkle Path(路徑),就能證明這筆交易存在於某個區塊中,而不需要下載整個區塊。
比如說,你要驗證 Tx3 在區塊裡:
- 你需要:H4(計算 H34)、H12(計算 H1234)、H5678(計算 Merkle Root)
- 你不需要:H1、H2、H5、H6、H7、H8
驗證步數從 O(n) 降到 O(log n)。這就是 SPV 錢包能跑在手机上的原因。
2.2 Merkle 樹的實戰應用
應用一:簡化支付驗證(SPV)
中本聰在比特幣白皮書第八節詳細描述了 SPV 的工作原理。SPV 節點不需要下載整個區塊鏈,只需要:
- 下載所有區塊頭(約 80 bytes/區塊,目前約 600GB 的區塊鏈只有 ~60MB 的區塊頭)
- 問全節點:「我的交易在這個區塊裡嗎?」
- 全節點回覆 Merkle Proof
- SPV 節點驗證 Merkle Path 對不對
應用二:比特幣錢包掃描
錢包應用(如 Electrum、BlueWallet)在恢復錢包時,需要掃描區塊鏈找到屬於你的交易。全節點直接查資料庫,但 SPV 錢包只能用布隆過濾器(Bloom Filter)去問全節點。
布隆過濾器是個機率性工具,可能有假陽性(誤報),但不可能有假陰性(漏報)。錢包應用它來問:「這些地址相關的交易在這個區塊裡嗎?」全節點看到布隆過濾器後,自行決定返回哪些交易。
應用三:比特幣客戶端升級驗證
隔離見證升級時用到了 Merkle 樹的一個延伸特性:BIP-9 的版本位(Version Bits)機制。礦工在區塊頭的 version 欄位設置特定位,表示他們「支持某個升級」。只要連續 2016 個區塊(兩週)中有 95% 以上的區塊標記了某個升級,網路就自動激活這個功能。
2.3 Merkle 樹的局限
Merkle 樹很巧妙,但也有它的問題:
問題一:隱私洩漏
SPV 錢包問全節點「我的地址 Tx1 在不在這個區塊裡」的時候,全節點就知道了這個 SPV 錢包關心哪些地址。雖然全節點不知道這是哪個人,但這種「元數據洩漏」在注重隱私的人眼裡是不可接受的。
BIP-158 引入了更隱私的方案:用 Gerkhe 基礎的布隆過濾器。但這個方案的缺點是:錢包需要下載一個約 1GB 的「過濾器數據庫」,存儲開銷變大了。
問題二:區塊內交易順序
Merkle 樹只驗證交易的存在性,不驗證交易在區塊內的「順序」。攻擊者理論上可以重排區塊內的交易,只要 Merkle Root 不變。
當然,這種攻擊能幹嘛?好像也沒啥用。但嚴格來說,Merkle 樹只解決了「有沒有」的問題,沒解決「在哪裡」的問題。
第三章:UTXO——比特幣的帳務模型
3.1 什麼是 UTXO?
UTXO(Unspent Transaction Output,未花費交易輸出)是比特幣的帳務模型。你可以把它理解成一張張的「鈔票」——每張鈔票面額固定,只能花一次,不能拆開,只能整張使用(或者找零)。
當你收到 1 BTC 時,你收到的不是「帳戶餘額 +1 BTC」,而是「一張 1 BTC 的鈔票」。當你要付 0.3 BTC 時,比特幣網路會:
- 拿出那張 1 BTC 的鈔票
- 找零 0.7 BTC 給你自己(輸出到新地址)
- 付 0.3 BTC 給商家
交易示意:
輸入:
- UTXO #123: 1 BTC(來自之前某筆交易,你控制的地址)
輸出:
- 地址B(商家): 0.3 BTC
- 地址C(你自己的找零地址): 0.7 BTC
(礦工費 0.0003 BTC 從找零中扣除)
執行後:
- UTXO #123 被標記為「已花費」
- 新增兩個 UTXO:0.3 BTC(商家地址)、0.6997 BTC(你的找零地址)
這個模型的優點是什麼?
優點一:並行處理
不同交易之間的 UTXO 沒有衝突,可以同時處理。想象一下:兩個人同時轉帳給你,一個轉 1 BTC,一個轉 2 BTC。這兩筆交易完全可以並行驗證,因為它們消費的是不同的 UTXO。
優點二:驗證簡單
全節點不需要維護「帳戶餘額」這種動態狀態,只需要驗證:「這筆 UTXO 存在嗎?」(UTXO 集合中存在)「這筆 UTXO 歸屬於花費者嗎?」(簽名驗證)「這筆 UTXO 沒被花費過吧?」(檢查標記)
優點三:隱私
每次轉帳都可能生成新的找零地址,你的比特幣地址不會和「帳戶」綁定在一起。只要你不重用地址,外部觀察者就難以追蹤你的資金流向。
3.2 UTXO 集合的實際大小
比特幣的 UTXO 集合大小是個重要的網路指標。截至 2026 年 Q1:
UTXO 集合統計(2026-03-31):
- UTXO 數量:約 1.2 億個
- UTXO 集合大小:約 5.5 GB(UTXO 數據 + 狀態)
- 平均每個 UTXO 大小:約 45 bytes
- 每日新增 UTXO:約 30,000 - 50,000 個
為什麼 UTXO 集合會越來越大?因為比特幣網路更傾向於「創建新 UTXO」而不是「消費舊 UTXO」。
每次你轉帳,比特幣錢包軟體通常會:
- 選擇一個或多個 UTXO 作為輸入
- 生成新的輸出地址(找零地址)
所以每次交易,UTXO 數量通常 +1(新增一個找零輸出)或者 +0(如果恰好用一個 UTXO 付錢且沒有找零)。
3.3 UTXO vs 帳戶模型
比特幣用 UTXO,以太坊用帳戶模型。這兩種模型各有優劣:
UTXO 模型(比特幣):
優點:
- 天然支持並行處理
- 隱私較好(地址不重複使用)
- 狀態簡單(只有 UTXO 集合)
- 可擴展性好(某些 UTXO 壓縮方案)
缺點:
- 查餘額需要遍歷歷史或維護索引
- 智能合約實現複雜(需要追蹤 UTXO)
- 交易構建複雜(需要選擇哪些 UTXO)
帳戶模型(以太坊):
優點:
- 查餘額直接讀取(狀態字典)
- 交易結構簡單
- 智能合約友好(狀態在合約中)
缺點:
- 需要防重放攻擊(每筆交易需要 nonce)
- 狀態爆炸問題(所有帳戶都要存)
- 隱私較差(地址可能長期使用)
我個人認為,UTXO 模型更適合比特幣「價值存儲」的定位,而帳戶模型更適合以太坊「智能合約平台」的定位。兩者的設計選擇是對的。
3.4 比特幣錢包如何選擇 UTXO?
這是個實際問題:當你要轉帳 0.5 BTC,但錢包裡有 0.3 BTC、0.4 BTC、0.6 BTC 三個 UTXO 時,應該選哪個?
策略一:理髮師策略(Knapsack)
選擇總額剛好大於等於轉帳金額的 UTXO 組合,讓找零金額盡量小。優點是鏈上數據乾淨,缺點是可能造成 UTXO 碎片化。
策略二:最少輸入策略
選擇數量最少的 UTXO 組合。假設要付 0.5 BTC,一個 1 BTC 的 UTXO 就能搞定,就不用搞那麼多輸入。優點是交易資料小(手續費低),缺點是找零金額大。
策略三:優先級策略
考慮 UTXO 的「年齡」(區塊確認時間)。越老的 UTXO 通常被認為越「乾淨」,某些錢包會優先使用老 UTXO。
策略四:避免碎片化策略
一些錢包(如 Sparrow、Electrum)提供了「Coin Control」功能,讓用戶自己選擇用哪些 UTXO。這對注重隱私的用戶很重要——你選了哪些 UTXO,決定了區塊鏈上哪些地址被關聯在一起。
第四章:比特幣腳本——智能合約的原型
4.1 比特幣腳本是什麼?
比特幣腳本(Bitcoin Script)是比特幣交易的驗證邏輯。當你轉帳時,你不只是「把比特幣發過去」,而是附帶了一個「解題條件」——只有能解題的人才能花這筆比特幣。
腳本語言是故意設計成很簡單的,叫 Script。它不是像 JavaScript 或 Python 那樣的通用語言,只能做密碼學相關的操作。但這個設計讓比特幣的安全性更容易審計——你能做的操作就那麼多,沒法搞出奇怪的漏洞。
腳本的基本概念是 堆疊機(Stack-based)。所有操作都是:把數據 push 到堆疊上,然後執行指令,讓指令 pop 堆疊上的數據進行運算,最後把結果 push 回堆疊。
4.2 常見的腳本模式
P2PKH(Pay to Public Key Hash)——經典模式
這是比特幣早期最常用的腳本模式。用戶把比特幣發到一個地址,這個地址是「公鑰哈希」。
鎖定腳本(Locking Script):
OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
解鎖腳本(Unlocking Script):
<Signature> <PublicKey>
執行的時候:
- Signature 入棧
- PublicKey 入棧
- OP_DUP:拷貝一份 PublicKey
- OP_HASH160:把 PublicKey 哈希成 PubKeyHash
- PubKeyHash 入棧
- OP_EQUALVERIFY:比較兩個 PubKeyHash 是否相等
- OP_CHECKSIG:用 PublicKey 驗證 Signature
如果全部執行成功,交易的輸入就有效,可以花費這筆 UTXO。
P2PK(Pay to Public Key)——早期模式
比特幣早期用的是 P2PK,不需要地址,直接把比特幣發到公鑰上。缺點是公鑰直接暴露在區塊鏈上,如果量子計算成熟,這種模式比較脆弱。
鎖定腳本:
<PublicKey> OP_CHECKSIG
解鎖腳本:
<Signature>
P2SH(Pay to Script Hash)——靈活地址
P2SH 讓你把複雜的腳本「哈希」成一個地址。這有幾個好處:
- 發送者不需要知道複雜腳本的內容,只需要知道地址
- 手續費由收款人承擔(不錯的設計)
- 多重簽名、閃電網路通道都使用 P2SH
鎖定腳本:
OP_HASH160 <ScriptHash> OP_EQUAL
解鎖腳本:
<Signature(s)> <redeemScript>
P2WPKH(Pay to Witness Public Key Hash)——隔離見證地址
隔離見證升級後的新地址格式。見證數據(簽名)從交易中分離出來,放在額外的「見證區」,區塊容量變大了。
鎖定腳本:
OP_0 <WitnessProgram>
見證數據:
<Signature> <PublicKey>
P2TR(Pay to Taproot)——當前主流
Taproot 升級帶來的最新地址格式。這個格式超級靈活,支持 Schnorr 簽名,讓複雜的交易看起來和普通交易一模一樣。
鎖定腳本:
OP_1 <Merkle Root>
見證數據(可選):
<Schnorr Signature>
<Satisfying Script> <Control Block>
4.3 OP_CHECKSIG 的數學原理
比特幣的簽名驗證是怎麼工作的?這裡涉及 secp256k1 橢圓曲線密碼學。
secp256k1 參數:
- 曲線方程:y² = x³ + 7 (mod p)
- p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1
- 基點 G 的階 n ≈ 1.1579 × 10^77
簽名過程:
- 選擇隨機數 k
- 計算 R = k × G
- r = R.x (mod n)
- s = k^(-1) × (hash(m) + r × privateKey) (mod n)
- 簽名 = (r, s)
驗證過程:
- 計算 u1 = hash(m) × s^(-1) (mod n)
- 計算 u2 = r × s^(-1) (mod n)
- 計算 P = u1 × G + u2 × publicKey
- 驗證 P.x (mod n) = r
如果驗證通過,說明簽名者持有對應的私鑰。
4.4 比特幣腳本的局限性
比特幣腳本語言是故意設計得很受限的,這是安全性取捨的結果。但這也意味著比特幣的「智能合約」能力比較弱。
比特幣腳本不能做什麼:
- 循環(loop)
- 無限疊代
- 讀取區塊鏈外部數據(需要預言機)
- 時間敏感的邏輯(只能區塊高度或時間戳)
比特幣腳本能做什麼:
- 多重簽名(最多 15-of-15)
- 時間鎖(CLTV、CSV)
- 哈希鎖定
- 秘密鎖定
這些「受限」的能力,卻是比特幣安全的保障。以太坊的 Solidity 語言因為太靈活,已經發生了無數次駭客攻擊和智能合約漏洞。
第五章:區塊傳播與記憶池
5.1 交易的生命週期
讓我帶你走一遍比特幣交易的完整流程:
步驟一:創建交易
你的錢包軟體構建一筆交易,指定:
- 輸入(消費哪個 UTXO)
- 輸出(發給誰,多少錢)
- 見證數據(簽名)
步驟二:簽名
錢包用你的私鑰對交易進行 ECDSA 簽名(Taproot 地址用 Schnorr 簽名)。
步驟三:廣播
錢包把簽名後的交易發送到比特幣網路。通常是發給幾個相連的全節點,然後這些節點再轉發給它們的相鄰節點。
步驟四:進入記憶池(Mempool)
各個全節點把交易加入自己的記憶池(Memory Pool),等待被打包進區塊。記憶池的大小反映了網路的繁忙程度。
步驟五:被打包
礦工從記憶池中選擇交易打包進區塊。選擇策略通常是:選擇 fee/vB(每字節費用)最高的交易。
步驟六:區塊傳播
礦工找到符合工作量證明的區塊後,廣播到全網。這個過程越快越好——慢了的話,可能會產生孤塊,區塊獎勵就白拿了。
步驟七:確認
區塊被加入到區塊鏈中,交易被確認。隨著後續區塊的增加,交易的確認數增加,安全等級提高。
5.2 記憶池(Mempool)解析
記憶池是理解比特幣網路的關鍵概念。每個全節點都有自己的記憶池,裡面存放著「等待打包」的交易。
記憶池大小(2026 年 Q1 數據):
節點記憶池大小:中位數約 100-200 MB
全球記憶池估算:所有節點合計約數 GB
平均每筆交易大小:250-400 vbytes
記憶池交易容量:約 30-50 萬筆交易
記憶池的「擁堵」:
當網路交易量超過區塊容量時,記憶池就會堆積。低 fee 的交易可能要等很久才能被打包。
費用市場實例(2026-03-29 mempool.space 數據):
費用等級 sat/vB 預計等待時間
--------------------------------------
Economy 8-12 ~4 區塊(40分鐘)
Standard 15-20 ~2 區塊(20分鐘)
Priority 25-35 ~1 區塊(10分鐘)
Urgent 50+ 下一區塊
選擇正確的手續費是比特幣用戶的必備技能。用得過高,白花錢;用得過低,等半天。
RBF(Replace-By-Fee):
如果你發現手續費給低了,可以選擇 RBF——用更高的手續費替換之前的交易。當然,前提是原交易標記了 RBF 標誌。
CPFP(Child Pays For Parent):
如果你接收了一筆低 fee 的交易,等不及礦工確認,可以用 CPFP——花掉那筆交易輸出,附上更高的手續費。礦工為了賺 CPFP 的手續費,自然會把父交易一起打包。
5.3 區塊傳播優化
比特幣網路的區塊傳播速度是個重要的安全指標。區塊傳播越快,分叉和孤塊的概率越低。
原始比特幣網路:
節點之間直接廣播區塊數據,平均傳播時間約 10-20 秒。這個時間足以讓落後的礦池繼續在舊區塊上挖礦,形成「自私挖礦」的機會。
FIBRE 協議:
Faster Internet Bitcoin Relay Engine 是比特幣核心開發團隊 Mike Per Verde 開發的工具。通過 UDP 任播和區塊數據壓縮,把全球傳播時間壓縮到 1 秒以內。
Compact Block Relay(BIP-152):
另一個優化方案。礦工廣播區塊時,只發送區塊頭和「短區塊」(Short IDs),讓相鄰節點用本地記憶池補全完整區塊。節省了 90% 以上的帶寬。
第六章:區塊鏈分叉——比特幣的「版本控制」
6.1 為什麼會有分叉?
比特幣網路是分布式的,沒有中央協調者。當兩個礦工幾乎同時挖到新區塊時,網路可能會暫時分裂成兩條鏈——這就是區塊鏈分叉。
時間線示意:
區塊 N: [Block_A]
/ \
區塊 N+1: [Block_B1] [Block_B2]
礦工節點 A 廣播 Block_B1
礦工節點 B 廣播 Block_B2
節點們收到的先後順序不同,可能形成兩條臨時的分叉
最終,誰長(誰的後續區塊更多),誰就成為主鏈,另一條就被廢棄(孤塊)。
6.2 軟分叉 vs 硬分叉
比特幣的分叉有兩種:軟分叉(Soft Fork) 和 硬分叉(Hard Fork)。
軟分叉:
向後兼容的升級。舊節點可以繼續運行,只是可能「忽略」新節點認識的某些規則。
例子:
- BIP-34:區塊版本 2,Coinbase 第一個字節必須是區塊高度
- BIP-66:嚴格的 DER 簽名格式
- BIP-65:OP_CHECKLOCKTIMEVERIFY(CLTV)
- SegWit( BIP-141、BIP-143、BIP-144):隔離見證
- Taproot(BIP-340、BIP-341、BIP-342):MAST、Schnorr 簽名
軟分叉的優點是:不需要所有節點同時升級,過渡平滑。缺點是:新規則和舊規則必須是「包含關係」——新規則不能放寬舊規則的限制。
硬分叉:
不向後兼容的升級。所有節點必須升級,否則會被網路拋棄。
比特幣歷史上從未發生過硬分叉(比特幣現金 BCH 是另外一條鏈,不是比特幣的升級)。
軟分叉示意:
舊節點規則:年齡 ≥ 18 歲才能投票
新節點規則:年齡 ≥ 21 歲才能投票(更嚴格)
21 歲的 Alice:舊節點說 OK,新節點說 OK ✓
18 歲的 Bob:舊節點說 OK,新節點說 NO ✗
→ 舊節點接受 Bob 的交易,但新節點不接受
→ 新鏈更長,Bob 的交易最終無效
硬分叉示意:
舊節點規則:年齡 ≥ 18 歲才能投票
新節點規則:年齡 ≥ 16 歲才能投票(更寬鬆)
18 歲的 Alice:舊節點說 OK,新節點說 OK ✓
16 歲的 Carol:新節點說 OK,舊節點說 NO ✗
→ Carol 的投票在新鏈被接受,舊鏈被拒絕
→ 如果 Carol 的交易在舊鏈上,可能受影響
6.3 重點軟分叉歷史
SegWit(2017 年 8 月):
比特幣歷史上最重要的軟分叉之一。隔離見證把簽名數據移到「附加區」,不僅增加了區塊容量,還修復了交易可塑性問題,為閃電網路掃清了障礙。
Taproot(2021 年 11 月):
最新的大型軟分叉。引入了三個 BIP:
- BIP-340:Schnorr 簽名
- BIP-341:Taproot(Merkle 樹替代腳本)
- BIP-342:Tapscript
Taproot 的效果是:複雜的比特幣交易看起來和普通交易一模一樣。這對隱私和效率都有提升。
第七章:區塊獎勵與貨幣發行
7.1 Coinbase 交易
每個區塊的第一筆交易叫做 Coinbase 交易,是礦工的新幣收入。
Coinbase 交易結構:
輸入:
- 前面沒有 UTXO(是凭空创造的)
- 輸入數據包含:區塊高度、Extra Nonce、礦工留言
輸出:
- 礦工地址:3.125 BTC(新區塊獎勵)
-礦工地址:0.xxxx BTC(交易費用總和)
7.2 比特幣的貨幣發行時間表
比特幣的貨幣政策寫死在代碼裡:每 210,000 個區塊(約四年)獎勵減半一次。
減半週期與發行量:
區塊 0-209,999:50 BTC/區塊 → 總發行 10,500,000 BTC
區塊 210,000-419,999:25 BTC/區塊 → 總發行 5,250,000 BTC
區塊 420,000-629,999:12.5 BTC/區塊 → 總發行 2,625,000 BTC
區塊 630,000-839,999:6.25 BTC/區塊 → 總發行 1,312,500 BTC
區塊 840,000-1,049,999:3.125 BTC/區塊 → 總發行 656,250 BTC
...
等比數列求和:2100 萬 BTC = 50 × 210,000 × (1 + 1/2 + 1/4 + 1/8 + ...)
有趣的事實:比特幣的總發行量 21,000,000 BTC 是個近似值,實際精確值是 20,999,999.9769 BTC——因為比特幣的最小單位是 satoshi(聰),0.00000001 BTC,總量其實是 2,099,999,997,690,000 聰。
7.3 2140 年之後
2140 年左右,最後一枚比特幣被挖出來後,礦工的收入將完全來自交易手續費。這就是比特幣支持者說的「比特幣將成為完全通縮的資產」。
但批評者指出:如果手續費收入不夠吸引礦工,算力會下降,網路會變得不安全。這就是比特幣的「2140 問題」。
具體的分析在我的另一篇文章《比特幣 2140 年後經濟模型深度分析》裡有詳細探討,這裡就不多說了。
結語:比特幣的設計哲學
寫了這麼多,最後說幾句我自己的感受。
比特幣的資料結構設計,處處體現著一種保守主義的美學。中本聰在設計比特幣的時候,幾乎沒有引入任何「實驗性」或「前沿」的概念。SHA-256 是已經成熟的哈希算法,secp256k1 是已經有人用過的橢圓曲線,UTXO 模型比帳戶模型更早被提出……
為什麼?因為比特幣要管的是「錢」,容不得半點差錯。一個 bug 可能讓你損失所有的積蓄,一個漏洞可能讓整個系統崩潰。
所以比特幣的設計哲學是:寧可笨一點,也要安全一點。
區塊大小設在 1 MB(現在是 1-2 MB),是為了防止區塊過大導致節點運行門檻提高。
腳本語言設計得很受限,是為了減少攻擊面。
UTXO 模型比帳戶模型複雜,但更安全、更隱私。
這就是比特幣——一個為安全犧牲靈活性、為去中心化犧牲性能、為可預測性犧牲「實用性」的系統。
你問我喜不喜歡?我當然喜歡。作為一個密碼學愛好者,我看比特幣就像看一件精心設計的藝術品。但我也不否認:這個系統對普通用戶不夠友好,用戶體驗還有很大的提升空間。
Layer 2 解決方案、Taproot 升級、BIP-347 的 OP_CAT……比特幣一直在進化,只是這個進化是漸進的、保守的,每一步都經過了嚴格的測試和社群討論。
這大概就是比特幣最讓人著迷的地方吧——它不是一天建成的,也不是一天能搞懂的。慢慢來,享受這個過程。
技術規格交叉引用
BIP 規格索引
| BIP | 主題 | 相關章節 |
|---|---|---|
| BIP-34 | Coinbase 區塊高度編碼 | 7.1 |
| BIP-9 | 版本位升級機制 | 6.2 |
| BIP-141 | 隔離見證(SegWit) | 1.2, 4.2 |
| BIP-143 | 交易簽名驗證 | 4.3 |
| BIP-152 | 緊湊區塊傳播 | 5.3 |
| BIP-158 | 布隆過濾器(SPV) | 2.2 |
| BIP-340 | Schnorr 簽名 | 4.2, 4.3 |
| BIP-341 | Taproot | 4.2, 6.3 |
| BIP-342 | Tapscript | 4.2 |
原始論文索引
| 論文 | 主題 | 相關章節 |
|---|---|---|
| Bitcoin Whitepaper §5 | Merkle 樹 | 2.1 |
| Bitcoin Whitepaper §8 | SPV | 2.2, 3.1 |
| Bitcoin Whitepaper §11 | 攻擊概率 | 6.1 |
| Lamport et al. (1982) | Byzantine Generals | 6.1 |
| Merkle (1980) | Merkle 樹 | 2.1 |
標籤:比特幣、區塊鏈資料結構、UTXO、Merkle樹、比特幣腳本、軟分叉、硬分叉、工作量證明、區塊頭、記憶池
難度等級:中/高級
預估閱讀時間:45 分鐘
相關文章:
- 比特幣共識機制的數學基石:從拜占庭將軍問題到工作量證明的嚴格推導
- 比特幣密碼學基礎:公私鑰與地址詳解
- 比特幣記憶池(Mempool)與網路傳播機制
- 比特幣白皮書逐段深度解析:為什麼這九頁紙改變了世界
- 比特幣 Layer 2 方案全景分析:閃電網路、液態網路與 Stacks
相關文章
- 比特幣 BIP 升級進展追蹤:2024-2026 年技術演進完整報告 — 系統性追蹤 2024-2026 年比特幣網路的重要 BIP 進展,包括共識層面、應用層、Layer 2 協議等各維度的技術演進,並分析 Taproot 升級的長期影響與未來發展趨勢。
- 比特幣衍生性金融商品深度技術分析:期貨、選擇權與永續合約的市場結構與定價機制 — 深入分析比特幣期貨、選擇權與永續合約的運作機制、定價模型與市場數據,涵蓋CME比特幣期貨、Deribit選擇權市場、永續合約資金費率機制等專業內容,並提供風險管理策略與機構級風控實踐。
- 比特幣節點運作完整實戰指南:從安裝到維運的詳細命令手冊 — 比特幣節點是比特幣網路的基石,本文提供從軟硬體準備、軟體安裝、配置文件優化到日常維運的完整實戰指南,包含可直接執行的命令範例與詳細參數說明。
- OP_VAULT 比特幣智能合約提案深度分析:2025-2026 最新進展與技術前景 — 全面分析 OP_VAULT 提案的技術原理、與 OP_CAT 的配合機制、社區討論進展、安全性分析與應用場景,涵蓋企業托管、遺產規劃、DeFi 等多元應用。
- 比特幣後量子遷移完整指南:NIST 標準化時程、混合簽章技術細節與 2025-2035 遷移路線圖 — 深入分析 NIST 後量子密碼學標準的具體技術規格、比特幣社群提出的遷移 BIP 草案、混合簽名方案的設計原理與實作細節,以及詳細的過渡時間表,為比特幣開發者和長期持有者提供全面的技術指引。
延伸閱讀與來源
這篇文章對您有幫助嗎?
請告訴我們如何改進:
評論
發表評論
注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。
目前尚無評論,成為第一個發表評論的人吧!