開啟主選單
求真百科
搜尋
檢視 工作量證明 的原始碼
←
工作量證明
由於下列原因,您沒有權限進行 編輯此頁面 的動作:
您請求的操作只有這個群組的使用者能使用:
用戶
您可以檢視並複製此頁面的原始碼。
{| class="wikitable" style="float:right; margin: -10px 0px 10px 20px; text-align:left" |<center>'''工作量證明'''<br><img src="https://i.ytimg.com/vi/jygCxN6dVW4/maxresdefault.jpg" width="280"></center><small>[https://www.youtube.com/watch?v=jygCxN6dVW4 圖片來自youtube]</small> |} '''工作量證明'''(Proof-of-Work,PoW)是一種對應服務與資源濫用、或是[[阻斷服務攻擊]]的經濟對策。 一般要求使用者進行一些耗時適當的複雜運算,並且答案能被服務方快速驗算,以此耗用的時間、設備與能源做為擔保成本,以確保服務與資源是被真正的需求所使用。此概念最早由Cynthia Dwork和Moni Naor於1993年的學術論文提出"DwoNao1992",而工作量證明一詞則是在1999年由Markus Jakobsson與Ari Juels."JaJue1999"所發表。現時此技術成為了[[加密貨幣]]<ref>[https://medium.com/bincentive/%E4%BB%80%E9%BA%BC%E6%98%AF%E5%8A%A0%E5%AF%86%E8%B2%A8%E5%B9%A3-a576399ef15f 加密貨幣],medium</ref>的主流[[共識機制]]之一,如[[比特幣]]所採用的技術。 ==加密貨幣的應用== 由於加密貨幣多由[[區塊鏈]]所建構,而區塊鏈本來就要依賴雜湊函數來做為資料正確無誤的擔保,所以在加密貨幣上使用工作量證明,是非常簡明的設計。由分散在各處的[[計算機]],競賽誰能最早找出,搭配原本要打包的資料的窮舉猜測值([[nonce]]),誰就等同獲得該區塊的打包權(記帳權)。此猜測值被找出後,與資料、雜湊值一起打包成塊後廣播,經多數節點確認與承認,打包者就能獲得打包該區塊所提供的獎勵。一般採用工作量證明的加密貨幣,好比比特幣,會設定成隨著參與競賽的算力增減,而調整找尋猜測值的難度,以維持合理的運作速度。 *優點 **架構簡明扼要、有效可靠。 **由於要獲得多數節點承認,那攻擊者必須投入超過總體一半的運算量(51%攻擊),才能保證篡改結果。這使得攻擊成功的成本變得非常高昂,難以實現。 **某種程度上是公平的,你投入越多的算力,你獲得打包權的機率也等比增加。 *缺點 **非常浪費能源。投入在一種加密貨幣上的能源,可能會超過一個小型國家的總使用量。 **由於加密貨幣在世界上已成為一種投資標的,所以技术人员和富人,開發出了由[[特殊應用集成電路|ASIC]]組成的特製計算设备,壟斷算力。這與加密貨幣的去中心化思想背道而馳。 ***也因此,後期開發的加密貨幣有針對抗ASIC的演算法設計,例如[[以太坊]]採用的[[Ethash]](Dagger-Hashimoto)算法。 ***後期開發的加密貨幣陸續使用了[[POS]]機制(例如[[以太坊]])或DPOS機制(例如[[比特股]]﹑EOS)。 == 技術原理 == 工作量證明最常用的技術原理是[[雜湊函數]]。由於輸入雜湊函數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): '''0000'''BFE6AF4232F78B0C8EBA37A6BA6C17B9B8671473B0B82305880BE077EDD9 驗算時只要將Hello World107105代入SHA256函式一次即可。 == 參考文獻 == {{reflist}} [[Category: 310 數學總論]]
此頁面使用了以下模板:
Template:Main other
(
檢視原始碼
)
Template:Reflist
(
檢視原始碼
)
模块:Check for unknown parameters
(
檢視原始碼
)
返回「
工作量證明
」頁面