為什麼礦工挖到的比特幣要等 100 個區塊才能花?

礦工找到符合規則的新區塊時,可以領取區塊補貼,以及區塊內交易支付的手續費。既然這筆收入已經寫進區塊,直覺上似乎應該立刻就能使用。
不過,比特幣近期的歷史仍可能因傳播延遲而改變。另一個有效分支若累積更多工作量,原本看來成功的區塊可能離開最佳鏈;其中宣告的礦工收入也會失去帳本依據。為了避免這種收入立刻衍生一串後續花費,比特幣要求它先經過 100 個區塊的成熟期。
收入來自一筆特殊交易
每個區塊的第一筆交易稱為 Coinbase 交易。這是比特幣早期沿用至今的技術名稱,與後來出現的同名交易平台無關。一般交易會引用既有 UTXO 作為資金來源,Coinbase 交易則用特殊格式領取規則允許的區塊補貼與手續費。
Coinbase 交易建立的輸出,看起來同樣有金額與花費條件,卻多了一項限制:全節點檢查後續交易時,若發現它花費的 Coinbase 輸出還不夠成熟,就會把交易判為無效。礦工即使願意收錄,也無法繞過其他全節點執行的規則。
這項限制涵蓋整筆 Coinbase 輸出的價值。也就是說,需要等待的不只新發行的區塊補貼,連同一筆交易領取的手續費也受成熟期約束。
落敗區塊不能留下憑空收入
兩名礦工可能在相近時間各自找到有效區塊,不同地區的全節點也可能暫時先接受不同版本。當其中一條分支率先累積更多工作量,網路會逐步收斂;落敗分支上的區塊不再屬於目前最佳鏈。
假設落敗區塊的 Coinbase 輸出已經可以立刻花費,礦工可能先把收入付給供應商,供應商又付給其他人。鏈重組發生後,最初那筆收入在勝出帳本裡從未存在,所有依賴它的後續交易也失去有效輸入。成熟期把這類連鎖問題擋在起點,讓近期分支先有時間拉開差距。
因此,100 個區塊是一條共識有效性規則。它並非礦工自行承諾延後動用,也不只是一個錢包畫面上的風險提醒;花得太早的交易無法通過驗證。
等待的是區塊高度,不是倒數計時器
比特幣以區塊高度判斷 Coinbase 輸出是否成熟。主網規則要求它和準備花費它的區塊之間達到規定的 100 個區塊差距。若用平均約十分鐘出一個區塊估算,大致接近 16 小時 40 分鐘;實際時間可能更短或更長,因為出塊本來就是隨機過程。
這也和一般收款等待交易確認的做法不同。普通使用者收到的比特幣,只要來源不是尚未成熟的 Coinbase 輸出,就不會一律被協議鎖住 100 個區塊。收款方多等幾次確認,是依交易風險選擇穩定程度;Coinbase 成熟期則由全節點直接拒絕過早花費。
礦池參與者有時不會在介面上感受到同樣長度的等待。礦池可以用已成熟的資金、內部帳務或自訂結算門檻向參與者付款,但這些安排沒有改變鏈上 Coinbase 輸出的成熟規則,也會把短暫分岔與營運風險留給礦池管理。
成熟不等於歷史永遠不會改變
等待 100 個區塊後,Coinbase 輸出成為可花費狀態,並不代表更深的鏈重組在數學上完全不可能。只是隨著後續工作量增加,要替換那段歷史通常會變得更困難、更昂貴;日常傳播造成的短分岔也多半早已收斂。
所以,成熟期處理的是一個很具體的問題:新區塊仍可能落敗時,不要讓其中獨有的收入立刻向外延伸。它讓礦工報酬和近期歷史的不確定性之間多出安全緩衝,也提醒我們,比特幣的「收到」至少要分清已出現在候選歷史、已累積確認,以及已符合花費規則這幾個不同階段。