热门问题
时间线
聊天
视角
工作量證明
来自维基百科,自由的百科全书
Remove ads
工作量證明(Proof-of-Work,PoW)是一種對應服務與資源濫用、或是阻斷服務攻擊的經濟對策。一般要求用戶進行一些耗時適當的複雜運算,並且答案能被服務方快速驗算,以此耗用的時間、裝置與能源做為擔保成本,以確保服務與資源是被真正的需求所使用。此概念最早由Cynthia Dwork和Moni Naor於1993年的學術論文提出[1],而工作量證明一詞則是在1999年由Markus Jakobsson與Ari Juels.[2]所發表。現時此技術成為了加密貨幣的主流共識機制之一,如比特幣所採用的技術。
工作量證明系統的核心特性在於其非對稱性:證明者需完成適度困難(但可行)的計算工作,而驗證者能極高效地驗證結果。Hal Finney於2004年透過「可重用工作量證明」(RPOW)概念將此機制應用於數碼代幣,採用160位元SHA-1演算法[3]。
Remove ads
背景與發展
工作量證明的早期應用是1997年英國密碼學家Adam Back開發的Hashcash系統,該系統要求電子郵件傳送者執行少量計算任務,藉此抵禦垃圾郵件。其運作基於尋找符合特定特徵的雜湊值(如特定前導零數量),此過程需消耗計算資源,形成「證明」機制。
工作量證明演算法持續演進以應對新挑戰:
技術原理
工作量證明最常用的技術原理是雜湊函數。由於輸入雜湊函數的任意值,會對應到一個結果,而只要變動一個位元,就會引起雪崩效應,所以幾乎無法從反推回,因此藉由指定尋找的特徵,讓用戶進行大量的窮舉運算,就可以達成工作量證明。
我們若指定的16進位值的前四值,求,這樣統計上平均約要運行216次雜湊運算,才會得到答案,但驗算只要進行一次就可以了。如果想要增加難度,那就增加指定的位數即可。以SHA256函數舉例,假設我們要處理資料Hello World
,並找出前四值為0000的,如果從Hello World0
開始加上一個十進位數ASCII進行窮舉猜測,到Hello World107105
時才會得到符合條件的:
0000BFE6AF4232F78B0C8EBA37A6BA6C17B9B8671473B0B82305880BE077EDD9
驗算時只要將Hello World107105代入SHA256函數一次即可。
Remove ads
- 挑戰-響應協定:伺服器動態生成挑戰,客戶端求解後返回響應。難度可即時調整,搜尋空間通常有界。
- 解決方案-驗證協定:客戶端自主選擇問題並求解(如Hashcash),伺服器驗證問題與解的有效性。多屬無界概率迭代過程。
加密貨幣的應用
由於加密貨幣多由區塊鏈所建構,而區塊鏈本來就要依賴雜湊函數來做為資料正確無誤的擔保,所以在加密貨幣上使用工作量證明,是非常簡明的設計。由分散在各處的計算機,競賽誰能最早找出,搭配原本要打包的資料的窮舉猜測值(nonce),誰就等同獲得該區塊的打包權(記帳權)。此猜測值被找出後,與資料、雜湊值一起打包成塊後廣播,經多數節點確認與承認,打包者就能獲得打包該區塊所提供的獎勵。[4]一般採用工作量證明的加密貨幣,好比比特幣,會設置成隨着參與競賽的算力增減,而調整找尋猜測值的難度,以維持合理的運作速度。
- 優點
- 架構簡明扼要、有效可靠。
- 由於要獲得多數節點承認,那攻擊者必須投入超過總體一半的運算量(51%攻擊),才能保證篡改結果。這使得攻擊成功的成本變得非常高昂,難以實現。
- 某種程度上是公平的,你投入越多的算力,你獲得打包權的概率也等比增加。
Remove ads

工作量證明機制因高能耗引發環境擔憂:
參閱
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads