比特幣挖礦真的在找開頭很多個零的雜湊嗎?

比特幣挖礦真的在找開頭很多個零的雜湊嗎?的文章封面插畫

區塊鏈瀏覽器顯示比特幣區塊時,常會列出一串以許多 0 開頭的雜湊。挖礦教學也常把任務說成「找到更多前導零」,讓人以為礦機正在反覆拼字,直到畫面湊出規定數量的零。

不過,比特幣規則沒有把雜湊當成一串逐字檢查的文字。每個結果都能解讀成一個 256 位元的整數,協議關心的是完整數值有沒有低於當期目標。前導零只是小數值用固定長度十六進位格式顯示時,最醒目的外觀。

因此,「找很多零」適合當入門速記,無法取代真正的判定方式。兩個結果可能有相同數量的前導零,後面的數字卻讓其中一個合格、另一個超過門檻;只有比較整個數值,才能得到確定答案。

前導零來自固定長度的十六進位顯示

區塊雜湊通常寫成 64 個十六進位字元。十六進位除了 0 到 9,還會使用 a 到 f 表示數值。顯示長度固定時,一個很小的數要在左邊補零,就像把 37 寫成六位數的 000037。

難度目標也是同一範圍內的數值。雜湊若不高於目標,工作量證明便通過這一道檢查;目標降低後,能落進合格範圍的結果變少,平均需要更多次嘗試。合格結果往往因此帶有很長的零開頭。

可是,前導零的數量只能提供粗略印象。假設兩串值都先出現五個零,第六個字元與後續內容仍會決定哪一串較小。目標也能落在十六進位位數的中間,不必剛好等於「再多一個完整的零」。區塊瀏覽器上的外觀方便人閱讀,全節點仍會依完整目標做精確比較。

每次改動都會重新洗牌

礦工先建立候選區塊,再對區塊標頭做雜湊。標頭會承諾前一個區塊、這一批交易的摘要、時間、難度目標與 nonce 等資料。任一部分改變,雜湊結果通常都會變得毫無相似規律。

這種特性讓礦工無法沿著數字一步步逼近目標。某次結果只差一點,下一次改動 nonce 後也不會比較接近;先前累積再多失敗,下一次成功機率仍由相同門檻決定。礦機能做的是快速產生大量不同候選,逐一檢查結果是否落入合格範圍。

標頭裡的 nonce 空間有限,現代礦機可能很快試完。礦工還能調整 Coinbase 交易中的額外資料、候選交易組合或容許範圍內的時間欄位,讓交易摘要與標頭跟著改變,取得新一批可搜尋的結果。這些改動擴大試算空間,沒有讓雜湊出現可預測的方向。

難度調整改的是數值門檻

比特幣會把當期目標以緊湊格式放進區塊標頭。驗證者能依既有歷史與共識規則算出正確門檻,再檢查新區塊宣告的值與實際雜湊。礦工不能自行寫一個比較寬鬆的目標,讓普通結果突然合格。

當近期區塊產生得比預期快,後續難度調整會縮小可接受的數值範圍;產生得較慢時,範圍可以放寬。這就是「難度提高」與「目標降低」方向相反的原因。前導零通常隨目標降低而增加,但精確難度仍來自整個目標值,不能只由肉眼數零反推。

這套門檻也讓成功機率可以細緻調整。雜湊結果若近似平均分散在完整範圍,目標占整體範圍的比例,就對應單次嘗試落入其中的機會。驗證者不必取得礦工所有失敗紀錄,只要重新計算成功結果,就能便宜地確認它確實落在小範圍內。

合格雜湊只通過區塊驗證的一部分

找到低於目標的雜湊,能證明這份標頭符合當期工作量門檻,卻不會替候選區塊中的其他內容自動背書。全節點還要檢查它接續的位置、交易格式與簽章、資產有沒有重複花用,以及新產生的比特幣是否超過規則允許的數量。

如果候選區塊放入無效交易,即使標頭雜湊看起來有再多個零,驗證者仍會拒絕它。反過來,一串外觀不像教科書範例、卻確實低於精確目標的雜湊,不會因人眼覺得零不夠整齊而失效。共同規則檢查的是可重算的數值與區塊內容,不依賴視覺印象。

雜湊本身也不會列出礦工使用哪種設備、消耗哪一種能源,或總共失敗了幾次。它提供的是一份和特定候選區塊綁定、容易驗證的成功結果。外界可以用難度與一段時間的出塊結果估算工作量,仍無法從單一雜湊還原完整挖礦過程。

所以,比特幣挖礦確實常產生開頭很多個零的區塊雜湊,原因是合格結果必須落在一個很低的數值範圍。真正的規則是比較完整雜湊與當期目標;前導零只是這項關係在人類常用顯示格式中的影子。分清外觀與判定後,難度、機率搜尋與全節點驗證之間的關係也會清楚許多。