複製鏈接
請複製以下鏈接發送給好友

工作量證明

鎖定
工作量證明(Proof-of-Work,PoW)是一種對應服務與資源濫用、或是阻斷服務攻擊的經濟對策。一般是要求用户進行一些耗時適當的複雜運算,並且答案能被服務方快速驗算,以此耗用的時間、設備與能源做為擔保成本,以確保服務與資源是被真正的需求所使用。此一概念最早由Cynthia Dwork和Moni Naor於1993年的學術論文提出[1],而工作量證明一詞則是在1999年由Markus Jakobsson與Ari Juels.[2]所發表。現時此一技術成為了加密貨幣的主流共識機制之一,如比特幣所採用的技術。
中文名
工作量證明
外文名
Proof-of-Work
簡    稱
PoW

工作量證明技術原理

工作量證明最常用的技術原理是散列函數。由於輸入散列函數h()的任意值n,會對應到一個h(n)結果,而n只要變動一個比特,就會引起雪崩效應,所以幾乎無法從h(n)反推回n,因此藉由指定查找h(n)的特徵,讓用户進行大量的窮舉運算,就可以達成工作量證明。
我們若指定h(n)的16進制值的前四值,求n,這樣統計上平均約要運行216次h(n)散列運算,才會得到答案,但驗算只要進行一次就可以了。如果想要增加難度,那就增加指定的位數即可。以SHA256函數舉例,假設我們要處理數據Hello World,並找出h(n)前四值為0000的n,如果從Hello World0開始加上一個十進制ASCII進行窮舉猜測,到Hello World107105時才會得到匹配條件的h(n):
0000BFE6AF4232F78B0C8EBA37A6BA6C17B9B8671473B0B82305880BE077EDD9
驗算時只要將Hello World107105代入SHA256函數一次即可。 [1] 

工作量證明加密貨幣的應用

由於加密貨幣多由區塊鏈所建構,而區塊鏈本來就要依賴散列函數來做為數據正確無誤的擔保,所以在加密貨幣上使用工作量證明,是非常簡明的設計。由分散在各處的計算機,競賽誰能最早找出,搭配原本要打包的數據的窮舉猜測值(nonce),誰就等同獲得該區塊的打包權(記賬權)。此猜測值被找出後,與數據、散列值一起打包成塊後廣播,經多數節點確認與承認,打包者就能獲得打包該區塊所提供的獎勵。一般採用工作量證明的加密貨幣,好比比特幣,會設置成隨着參與競賽的算力增減,而調整找尋猜測值的難度,以維持合理的運作速度。

工作量證明加密貨幣優點

架構簡明扼要、有效可靠。
由於要獲得多數節點承認,那攻擊者必須投入超過總體一半的運算量(>50%的攻擊),才能保證篡改結果。這使得攻擊成功的成本變得非常高昂,難以實現。
某種程度上是公平的,你投入越多的算力,你獲得打包權的機率也等比增加。

工作量證明加密貨幣缺點

非常浪費能源,投入在一種加密貨幣上的能源,可能會超過一個小型國家的總使用量。
由於加密貨幣在世界上已成為一種投資標的,所以有技術者或富有者,可以開發出由ASIC組成的特製計算機,壟斷算力。這與加密貨幣的去中心化思想背道而馳。 [2] 
也因此,後期開發的加密貨幣有針對抗ASIC的算法設計,例如以太坊採用的有向無環圖(DAG)技術。

工作量證明參閲

參考資料
  • 1.    Tromp, John (2015). "Cuckoo Cycle; a memory bound graph-theoretic proof-of-work" (PDF). Financial Cryptography and Data Security: BITCOIN 2015. Springer. pp. 49–62.
  • 2.    Dwork, Cynthia; Naor, Moni (1993). "Pricing via Processing, Or, Combatting Junk Mail, Advances in Cryptology". CRYPTO’92: Lecture Notes in Computer Science No. 740. Springer: 139–147.