比特幣區塊鏈資料結構完全指南:從哈希指針到 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(交易費用)

這是減半後的第一個區塊,歷史意義挺大的。你可以看到:


第二章: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 在區塊裡:

驗證步數從 O(n) 降到 O(log n)。這就是 SPV 錢包能跑在手机上的原因。

2.2 Merkle 樹的實戰應用

應用一:簡化支付驗證(SPV)

中本聰在比特幣白皮書第八節詳細描述了 SPV 的工作原理。SPV 節點不需要下載整個區塊鏈,只需要:

  1. 下載所有區塊頭(約 80 bytes/區塊,目前約 600GB 的區塊鏈只有 ~60MB 的區塊頭)
  2. 問全節點:「我的交易在這個區塊裡嗎?」
  3. 全節點回覆 Merkle Proof
  4. 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. 拿出那張 1 BTC 的鈔票
  2. 找零 0.7 BTC 給你自己(輸出到新地址)
  3. 付 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」。

每次你轉帳,比特幣錢包軟體通常會:

  1. 選擇一個或多個 UTXO 作為輸入
  2. 生成新的輸出地址(找零地址)

所以每次交易,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>

執行的時候:

  1. Signature 入棧
  2. PublicKey 入棧
  3. OP_DUP:拷貝一份 PublicKey
  4. OP_HASH160:把 PublicKey 哈希成 PubKeyHash
  5. PubKeyHash 入棧
  6. OP_EQUALVERIFY:比較兩個 PubKeyHash 是否相等
  7. OP_CHECKSIG:用 PublicKey 驗證 Signature

如果全部執行成功,交易的輸入就有效,可以花費這筆 UTXO。

P2PK(Pay to Public Key)——早期模式

比特幣早期用的是 P2PK,不需要地址,直接把比特幣發到公鑰上。缺點是公鑰直接暴露在區塊鏈上,如果量子計算成熟,這種模式比較脆弱。

鎖定腳本:
<PublicKey> OP_CHECKSIG

解鎖腳本:
<Signature>

P2SH(Pay to Script Hash)——靈活地址

P2SH 讓你把複雜的腳本「哈希」成一個地址。這有幾個好處:

  1. 發送者不需要知道複雜腳本的內容,只需要知道地址
  2. 手續費由收款人承擔(不錯的設計)
  3. 多重簽名、閃電網路通道都使用 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 參數

簽名過程

  1. 選擇隨機數 k
  2. 計算 R = k × G
  3. r = R.x (mod n)
  4. s = k^(-1) × (hash(m) + r × privateKey) (mod n)
  5. 簽名 = (r, s)

驗證過程

  1. 計算 u1 = hash(m) × s^(-1) (mod n)
  2. 計算 u2 = r × s^(-1) (mod n)
  3. 計算 P = u1 × G + u2 × publicKey
  4. 驗證 P.x (mod n) = r

如果驗證通過,說明簽名者持有對應的私鑰。

4.4 比特幣腳本的局限性

比特幣腳本語言是故意設計得很受限的,這是安全性取捨的結果。但這也意味著比特幣的「智能合約」能力比較弱。

比特幣腳本不能做什麼

比特幣腳本能做什麼

這些「受限」的能力,卻是比特幣安全的保障。以太坊的 Solidity 語言因為太靈活,已經發生了無數次駭客攻擊和智能合約漏洞。


第五章:區塊傳播與記憶池

5.1 交易的生命週期

讓我帶你走一遍比特幣交易的完整流程:

步驟一:創建交易

你的錢包軟體構建一筆交易,指定:

步驟二:簽名

錢包用你的私鑰對交易進行 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)

軟分叉

向後兼容的升級。舊節點可以繼續運行,只是可能「忽略」新節點認識的某些規則。

例子:

軟分叉的優點是:不需要所有節點同時升級,過渡平滑。缺點是:新規則和舊規則必須是「包含關係」——新規則不能放寬舊規則的限制。

硬分叉

不向後兼容的升級。所有節點必須升級,否則會被網路拋棄。

比特幣歷史上從未發生過硬分叉(比特幣現金 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:

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-34Coinbase 區塊高度編碼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-340Schnorr 簽名4.2, 4.3
BIP-341Taproot4.2, 6.3
BIP-342Tapscript4.2

原始論文索引

論文主題相關章節
Bitcoin Whitepaper §5Merkle 樹2.1
Bitcoin Whitepaper §8SPV2.2, 3.1
Bitcoin Whitepaper §11攻擊概率6.1
Lamport et al. (1982)Byzantine Generals6.1
Merkle (1980)Merkle 樹2.1

標籤:比特幣、區塊鏈資料結構、UTXO、Merkle樹、比特幣腳本、軟分叉、硬分叉、工作量證明、區塊頭、記憶池

難度等級:中/高級

預估閱讀時間:45 分鐘

相關文章

延伸閱讀與來源

這篇文章對您有幫助嗎?

評論

發表評論

注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。

目前尚無評論,成為第一個發表評論的人吧!