比特幣全網算力是怎麼估算的?

比特幣網路觀測頁常把全網挖礦算力顯示成一個精確到小數位的數字,彷彿有儀表能即時加總世界各地每台礦機。不過,礦工不必向全網登記設備,也沒有共同計量器回報每秒做了多少次雜湊嘗試;公開可見的主要結果,是哪些區塊真的被找到並進入目前有效歷史。
因此,所謂「全網算力」通常是統計估值。觀察者先從已知難度推導找到區塊平均需要多少工作,再看一段時間實際出現多少區塊,用兩者反推每秒大約進行多少次雜湊。數字很有用,但它描述的是最符合這批結果的工作速率,沒有直接讀出全球礦機當下的真實總和。
算力描述的是嘗試速度
礦工建立候選區塊後,會不斷改變可調資料並計算雜湊。每次結果都要低於當期目標,才符合工作量證明要求。算力的單位是每秒雜湊次數;例如 EH/s 表示每秒以百京次為尺度進行嘗試。
一次成功不代表礦工做了某個固定次數後必然輪到答案。每次嘗試都像從龐大範圍抽取一個結果,可能很快命中,也可能經過遠多於平均值的次數才成功。難度決定單次命中的機率,算力則影響固定時間內能取得多少次機會。
這使得已找到的區塊只能提供樣本。觀察者看見成功結果與發生時間,卻看不見中間全部失敗的雜湊;那些失敗正是算力的大部分工作。
難度把成功樣本換成預期工作量
每個全節點都能從區塊標頭讀取目標,並依規則確認工作量是否達標。目標也能換算成常見的「難度」表示法:難度愈高,單次嘗試成功的機率愈低,找到一個區塊所需的平均雜湊次數便愈多。
在難度固定的簡化情況下,估算可理解成:先計算每個區塊的預期工作量,再乘上觀察期間找到的區塊數,最後除以這段時間的秒數。常見近似式會把一個區塊的預期工作寫成「難度乘以 2 的 32 次方」。若觀察範圍跨過難度調整點,較完整的工具會依各區塊代表的工作量累加,再除以所選時間跨度。
Bitcoin Core 提供的網路算力估算,預設會根據最近一批區塊計算,也允許改變回看數量或改用自上次難度調整以來的資料。這正好說明畫面上的值並非由共識規則指定為唯一答案;區塊與累積工作量可以重複驗證,選多少樣本來估計速率則是分析方法。
短期出塊忽快忽慢,估值也會跟著跳
假設真實算力整天完全不變,區塊仍不會準時每十分鐘出現。短時間內碰巧連續找到幾個區塊,公式會推得較高算力;接著若出現一段長等待,估值又會下降。這些變化可能只是隨機抽樣波動,沒有任何礦機真的開機或關機。
觀察窗口愈短,數字愈快反映近期變化,也愈容易被少量幸運或不幸的出塊結果扭曲。窗口拉長後,偶然波動比較容易互相抵銷,代價是新設備加入或大量設備離線時,曲線會較慢跟上。
因此,一小時、一天、七天或最近若干區塊的估值不必相同。它們可能都使用同一段公開歷史,只是回答不同問題:很短的窗口偏向描述最新樣本,較長窗口偏向估計一段期間的平均狀態。
不同網站還可能採用不同時間與平滑方法
估算除了選幾個區塊,還要決定時間跨度如何取得。區塊標頭帶有時間戳,但它是礦工在規則容許範圍內填入的粗略時間,不是精密同步的全球時鐘。工具也可能採用不同端點、移動平均、更新頻率或難度跨期處理方式,最後顯示的值自然會有差距。
有些礦池能從連線礦機持續提交的較低難度 share 取得更多樣本,因而較快估計自己管理的算力。可是,這些內部資料只涵蓋該礦池看見的工作;要估計整個網路,公開觀測仍主要依賴有效鏈留下的區塊與工作量。礦池自行公布的設備數或標稱速度,也沒有成為所有節點必須接受的鏈上事實。
畫面保留很多小數位,只代表程式用某種公式算出了那個結果,不代表誤差已縮小到最後一位。若來源沒有交代窗口與方法,兩個看似矛盾的數字可能只是估計設定不同。
算力估值不能單獨回答集中度與耗電
較高算力通常表示要在相同時間內重做近期工作,需要投入更多雜湊嘗試。不過,總速率無法告訴我們背後有多少台礦機、由多少獨立操作者控制,或設備分布在哪些地區。同一總算力可能來自許多小型參與者,也可能集中在少數大型營運者手中。
它也不能直接換算成唯一的用電量。不同世代礦機每單位電力能完成的雜湊數不同,散熱、電力轉換與待機狀態也會增加差異。耗電模型必須再加入設備效率與營運條件等假設,誤差不會因算力圖表看起來平滑就消失。
難度調整則是另一個層次。協議會依一段區塊歷史改變後續成功門檻,讓長期平均出塊節奏回到目標附近;它不會持續發布一個官方即時算力讀數。算力突然改變後,短期出塊速度可能先偏離,難度要等到調整點才回應。
所以,比特幣全網算力較適合被理解為由可驗證結果反推的工作速率區間。難度、區塊與累積工作量提供共同資料,觀察窗口和統計方法把資料轉成估值;短期波動、分析延遲與來源差異則構成它的限制。看懂這些邊界後,算力曲線仍能協助理解網路工作量的長期變化,也不會被一個帶著許多小數位的瞬間數字誤導。