咩係工作量證明?
定義 · 工作量證明(PoW)
一種決定區塊加入權嘅機制:邊個最先搵到低於目標嘅區塊標頭雜湊值,就可以加入區塊。搵到符合條件嘅雜湊值要試好多次,但驗證只需計算一次雜湊值。
Satoshi Nakamoto 喺 2008 年嘅 Bitcoin 白皮書 中介紹咗呢個概念,並以 Adam Back 嘅 Hashcash 為基礎。Hashcash 係一個較早期嘅構想,目的是提高發送垃圾電郵嘅成本。有效嘅雜湊值就係證明。你唔做運算就無法得到佢,而任何人都可以驗證你做過運算。
本頁其餘部分會逐一講解各個部分,上面個方框亦可以俾你試玩:呢個係真實嘅 Bitcoin 區塊標頭格式,並喺你嘅瀏覽器即時計算雜湊。想了解挖礦全貌,可以睇我哋嘅Bitcoin 挖礦完整指南。
工作量證明解決咩問題?
Bitcoin 冇公司、銀行或者伺服器負責管理。數以千計嘅電腦各自保存一份帳本,仲要就下一個區塊係邊個,以及付款發生嘅先後次序達成共識。否則,有人就可以將同一枚幣花兩次。
簡單投票喺網上行唔通,因為任何人都可以開一千部假電腦,投一千次票。呢種做法叫女巫攻擊。工作量證明避開咗呢個問題:你嘅話語權以雜湊次數衡量,而計算雜湊要用電同硬件。
邊個可以影響下一個區塊?
每個節點一票
一個攻擊者可以免費建立 60 個假節點,投票數就會多過 12 個誠實節點。
每個雜湊一票
誠實礦工 88%攻擊者 12%
同樣嘅 60 個節點共用攻擊者嘅實際硬件,所以加埋仍然只佔 12%。複製節點唔使錢,但計算雜湊唔係。
Bitcoin 區塊標頭入面有啲乜?
礦工唔會對成個區塊計算雜湊值,只會計算區塊標頭嘅雜湊值。呢個 80 byte 嘅標頭會將其他所有資料連結起來。你喺上面個方格改過以下六個欄位:
| 欄位 | 位元組 | 佢包含嘅內容 | 邊個改動佢 |
|---|---|---|---|
| 版本 | 4 | 區塊跟從邊套規則 | 幾乎唔會變 |
| 上一個區塊雜湊 | 32 | 前一個區塊嘅雜湊,用嚟連接區塊鏈 | 每個區塊都會更新 |
| Merkle root | 32 | 區塊內所有交易的單一指紋 | 礦工,交易或額外 nonce 改變時 |
| 時間 | 4 | 礦工聲稱區塊建立嘅時間(Unix 時間) | 礦工,在限額內 |
| Bits | 4 | 目標值,壓縮成 4 個位元組 | 網絡每 2,016 個區塊 |
| Nonce | 4 | 可以免費用嚟重新嘗試嘅數字 | 礦工,每次猜測都會變 |
由於區塊標頭包含前一個區塊嘅雜湊值,改動舊區塊就會改變佢嘅雜湊值,令下一個標頭失效,之後嗰個亦一樣。我哋喺建立呢個頁面時,喺伺服器上用主視覺採用嘅同一段程式碼,檢查咗 2009 嘅真正創世區塊:
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
SHA-256 喺比特幣入面點樣運作?
SHA-256 會將任何輸入轉成一個 256 位元數值,以 64 個十六進位字元表示。Bitcoin 會對區塊標頭計算兩次(呢個做法叫 SHA-256d)。對挖礦最重要嘅特性好簡單:
相同輸入,相同輸出
具確定性
無論用邊部電腦,同一個區塊標頭都會得出同一個雜湊。呢個就係驗證行得通嘅原因。
256 位元
固定大小
無論輸入嘅係一行字定成整本書,雜湊值都係 64 個十六進位字元。
單向
無法走捷徑還原
你無法計出一個輸入值,令雜湊值符合你想要嘅結果。你只可以不斷試輸入值。
≈ 50%
雪崩效應
改動一個字元,大約一半位元就會反轉。留意主視覺入面嘅格仔。
呢個最後嘅特性,正正係工作量證明嘅核心。雜湊值就算接近目標值,都無法推斷下一次會試中乜,所以冇捷徑可以搵到有效區塊。每個礦工都喺玩同一場彩票,每秒多計幾次雜湊,就只係多買幾張彩票。
目標值係乜?點解前面有咁多個零?
目標值係一個 256 位元數字。將區塊嘅雜湊值當成數字讀取,只要等於或低於目標值,區塊就有效。細數字通常以零開頭,所以目標值越低,開頭嘅零就越多。每多一個十六進制零,平均就要多試 16 倍。
搵到一個有效區塊平均需要嘅雜湊次數
- 主視覺中嘅示例區塊 · 4 個前置十六進制零65,536
- Bitcoin 最容易達成嘅目標(2009)· 前置 8 個十六進制零,bits 1d00ffff4,294,967,296
- 現時嘅 Bitcoin 區塊 · 約有 20 個前置十六進位零(即時估算)5.3 × 1023
網絡每 2,016 個區塊就會調整一次目標值,大約每兩星期一次,所以無論算力增加定減少,區塊都會大約每十分鐘產生一個。目前網絡算力約為 876 EH/s(即時數據,每小時更新)。想了解調整機制,可以睇我哋嘅Bitcoin 挖礦難度指南;算力解說則會介紹相關單位。
nonce 同 extra nonce 係乜?
Nonce(「只用一次的數字」)係礦工每次試算都會更改嘅 4 字節欄位。呢個係唯一純粹用嚟更改嘅欄位。問題係,4 字節只提供大約 4.3 十億個可能值,現代機器幾乎一瞬間就可以全部試完。
礦工嘅運作循環
- 01
嘗試每個 nonce
0、1、2,一直到 4,294,967,295。4 位元組能容納的值就只有這些。
- 02
好快就耗盡
一部 100 TH/s 嘅機器,大約只需 43 百萬分之一秒就可以試晒所有可能。
- 03
更改額外 nonce
礦工會修改自己獎勵交易(coinbase)入面一個預留欄位。
- 04
新嘅 Merkle root
嗰筆交易一改,Merkle root 就會跟住變,每個 nonce 都會再次產生全新雜湊。
所以礦工亦會改動額外 nonce,即 coinbase 入面幾個預留位元組。coinbase 係區塊內第一筆支付畀礦工嘅交易。新嘅 coinbase 會產生新嘅 Merkle 根,亦即係有幾十億個新 nonce 可以嘗試。喺礦池入面,礦池會分配各自嘅額外 nonce 範圍畀每個礦工,避免大家重複做同一份工作。
點解搵出區塊成本高,驗證卻便宜?
尋找區塊
≈ 5.3 × 1023 次雜湊運算
整個網絡嘅所有機器,大約猜十分鐘。
即時估算,每小時更新。
驗證區塊
1 雜湊
任何節點,就算係平價手提電腦,都可以將 80-byte 標頭雜湊一次,再同目標比較,所需時間遠少於一毫秒。
礦工要不斷試算雜湊,直到有一個低於目標值。其他人只需將區塊標頭計算一次雜湊,再同目標值比較。呢種懸殊嘅成本,令成千上萬部普通電腦都可以驗證區塊鏈,而唔使信任建立區塊鏈嘅礦工。
你可以喺下面親自試試搜尋部分。呢個示範用嘅區塊格式比主視覺簡單,但都係同一個雙重 SHA-256 抽獎機制,而且每個搵到嘅區塊都會連到上一個區塊。
互動體驗 · 喺瀏覽器入面挖一個區塊
真實 SHA-256d 工作量證明,簡化版區塊標頭
區塊雜湊(雙重 SHA-256)
修改交易內容:只改一個字母,哈希值就會完全改變。
嘗試次數:0
你的算力:不適用
時間:0.0 秒
乜嘢係最長鏈規則,同 51% 攻擊?
有時兩個礦工幾乎同一時間搵到區塊,網絡會短暫出現兩個版本。節點會跟隨累積工作量最多嘅鏈。大家叫佢最長鏈,但其實係最重嘅鏈:高難度下嘅幾個區塊,工作量可以高過低難度下更多區塊。
要逆轉一筆付款,攻擊者就要由付款之前開始,建立一條比其他所有人都長嘅鏈。每多一個區塊(即一次確認),攻擊者就會落後更多。白皮書計算過成功機率,移動滑桿就可以睇到:
互動內容 · 攻擊者追唔追得上?
摘自比特幣白皮書第 11 節嘅公式
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
攻擊者落後嘅區塊數(確認數)。圖表用對數刻度,範圍由百萬分之一到必然。
如果掌握 10% 算力,經過 6 次確認後重寫付款嘅機會係 0.024%;經過 1 次確認後,機會係 20.5%。
如果攻擊者掌握 50% 或以上算力,最終會勝出。呢個就係 51% 攻擊。情況嚴重,但亦有局限:
掌握大部分算力嘅攻擊者可以
- 用自己嘅鏈取代近期區塊
- 對自己發送嘅幣進行雙重支付
- 唔將部分交易放入佢哋嘅區塊
即使係咁,佢哋都做唔到
- 用其他人錢包入面嘅幣消費
- 創造超出區塊獎勵嘅幣
- 更改 Bitcoin 對所有人嘅規則
所以交易所收到大額存款後,會等幾次確認。六次係常見嘅經驗法則。
點解工作量證明會用咁多能源?
因為能源消耗就係安全保障。有效區塊證明真係消耗咗電力。要改寫歷史,攻擊者至少要再花同樣多嘅電力,而且喺誠實網絡繼續向前時,仲要持續消耗電力。
能源用喺邊,換來乜嘢
區塊獎勵及手續費
每個區塊都會有新發行嘅 BTC 同交易費,支付畀搵到區塊嘅人。
設備同電力
礦工最多會花費相當於獎勵價值嘅金額。
網絡算力
所有呢啲開支都會反映喺每秒雜湊次數上。
改寫歷史嘅成本
攻擊者必須喺每個區塊都花費多過所有人加埋。
用幾多電、電力來自邊度,的確值得討論。劍橋指數會追蹤相關估算,而我哋嘅比特幣挖礦能源指南會逐一講解數據。每次減半都會減少獎勵中新增比特幣嘅部分,所以長遠嚟講,交易費就要承擔更多網絡安全開支。
工作量證明同權益證明有咩分別?
權益證明(PoS)會喺鎖定代幣作按金嘅人當中,選出下一個區塊生產者,而唔係由消耗電力嘅人負責。Ethereum 喺 2022 由工作量證明轉用權益證明。以下係公平比較:
| 工作量證明 | 權益證明 | |
|---|---|---|
| 邊個加入下一個區塊 | 第一個搵到低於目標值嘅雜湊嘅礦工 | 按持有份額比例選出嘅驗證者 |
| 乜嘢保障安全 | 鏈外消耗嘅電力同硬件 | 鎖喺鏈內、作弊時可能會被沒收嘅幣 |
| 能源用量 | 刻意設定得好高 | 低 |
| 參與 | 設備同平價電力 | 用作質押嘅幣 |
| 結算 | 每次確認後都會更安全 | 明確嘅最終性檢查點 |
| 主要批評 | 能源消耗同挖礦集中化 | 質押集中度同更複雜嘅設計 |
| 紀錄 | 自 2009 年起嘅 Bitcoin | Ethereum,自 2022 起 |
Bitcoin 開發者一直保留工作量證明,因為佢嘅成本喺系統以外,所以冇人可以用手上已持有嘅幣買下控制權。權益證明嘅支持者則指出,佢可以節省能源,亦可以更快達成最終確認。
Can you get mining rewards without running proof of work yourself?
Yes. With CloudMineCrypto you mine bitcoin for free from your phone or browser, with no hardware, noise or power bill. Claim the free 8-hour plan, and add more free plans by watching ads, playing games, completing offers and checking in daily. Your estimated BTC ticks up while your plans run, and you withdraw to your own wallet, Lightning included.
Each plan has a hashrate, and your estimate is that hashrate’s share of the whole network, times 6 blocks an hour, times the block reward. That’s the formula the app uses to estimate your rewards (rules and limits apply). Want more speed? Paid plans are an optional boost for fun. They usually mine less than they cost, and the price is shown before you confirm.
你要知道:獎勵只係預估,會隨全網情況變動,並無保證。方案唔代表你擁有任何礦機或礦池。提款可能設有限額,亦可能需要驗證。詳情請睇獎勵規則同免費比特幣挖礦指南。須受條款約束。
常見問題
簡單嚟講,乜嘢係工作量證明?
工作量證明係一種令新增區塊需要付出實際成本嘅方法。礦工會不斷計算區塊標頭嘅雜湊,並改動一個叫 nonce 嘅數值,直到結果低於指定目標。要搵到符合條件嘅雜湊,需要試好多次,但任何人只要計算一次雜湊就可以驗證。
Bitcoin 入面嘅 nonce 係乜?
區塊標頭入面一個 4-byte 嘅數字,礦工每次嘗試都會改變。大約有 4.3 十億個可能值。用盡之後,礦工會改變 coinbase 交易入面嘅額外 nonce,產生新嘅 merkle root 同一批全新雜湊值。
Bitcoin 點解要用 SHA-256 做兩次?
Bitcoin 會用 SHA-256 雜湊 80 位元組嘅標頭,再將結果雜湊多一次。Satoshi 從未解釋點解咁做。一般認為,咁做可以防範長度延伸攻擊,並額外增加安全緩衝。
51% 攻擊可以令攻擊者做到啲咩?
擁有大部分算力嘅人,可以私下建立一條更長嘅鏈,取代近期區塊,從而重複花費自己嘅代幣,或者阻止部分交易。他哋無法花費其他人嘅代幣、創造超出規則嘅代幣,亦無法改變所有人都要遵守嘅規則。
權益證明比工作量證明更好嗎?
權益證明耗能少好多,並靠鎖定作為權益嘅幣來保障安全。工作量證明就將安全保障建基於鏈外成本,即電力同硬件,自 2009 起一直用於比特幣。兩者各有取捨,邊種更好要視乎你重視乜嘢。
Can I get bitcoin mining rewards without my own hardware?
Yes. In the CloudMineCrypto app you claim free mining plans (the free plan, ads, games, offers and a daily check-in) and your estimated BTC ticks up while they run, then you withdraw to your own wallet. Rewards are estimates based on your plan’s hashrate and live network data, they aren’t guaranteed, and a plan doesn’t give ownership of any hardware.
來源及延伸閱讀
- Bitcoin:點對點電子現金系統(白皮書) · Satoshi Nakamoto,bitcoin.org
- 區塊鏈指南:區塊標頭、工作量證明、coinbase · 比特幣開發者文件
- 挖礦指南:單獨挖礦、礦池、getblocktemplate · 比特幣開發者文件
- 難度 · Bitcoin Wiki
- 確認 · Bitcoin Wiki
- 劍橋比特幣耗電量指數 · Cambridge Centre for Alternative Finance
- 挖礦儀表板:算力、難度、近期區塊 · mempool.space
本頁即時數據來自 CloudMineCrypto API,或旁邊列明嘅公開區塊鏈數據服務,會按排定時間更新,並喺顯示位置標明來源。本指南只作教育用途,並非財務建議。CloudMineCrypto 不是投資產品;App 內嘅獎勵只屬估算,並不保證。