好了,讓我們想象一下,有一群拜占庭將軍想要攻打一座城市,他們將面臨兩個不同的問題:
每個將軍及其軍隊在地理上相距甚遠,因此通過中央集權來指揮是不可行的,這使得協同作戰變得異常困難。
被攻打的城市擁有一只龐大的軍隊,他們能獲得勝利的唯一方式是所有人在同一時刻一同發起進攻。
為了讓合作成功,位于城堡左邊的軍隊派遣一位信使,向城堡右邊的軍隊發送了一則內容為“周三攻擊”的信息。然而,假設右邊的軍隊沒有做好攻擊準備,并讓信使攜帶一則內容為“不,周五攻擊”的信息返回。而信使需要通過穿越被攻打的城市返回到左邊的軍隊,那么,問題就來了。在這位可憐的信使身上,很多事情都有可能會發生。例如,他有可能被抓獲、泄露信息、或被攻打的城市殺害后將其替換了。這將導致軍隊獲得被篡改過的信息,從而使作戰計劃無法達成一致而失敗。
上述例子對
區塊鏈有明顯借鑒意義。區塊鏈是一個巨型網絡,你要如何信任他們呢?如果你想從錢包里發送4個以太幣給某人,你如何確認網絡中的某人不會篡改信息,將4個以太幣改成40個?中本聰發明了工作量證明機制來繞過拜占庭將軍問題。其運行原理是:假設左邊的軍隊想要發送內容為“周一進攻”的信息給右邊的軍隊,他們需要執行如下步驟:
首先,他們會給初始文本添加一個“nonce”,這個nonce可以是任何一個隨機十六進制值。
其次,他們將添加了“nonce”的文本進行哈希,得到一個結果。假設說他們決定僅當哈希結果前5位是零的時候,才進行信息共享。
如果哈希結果滿足條件,他們就會讓信使帶著有哈希結果的信息出發。否則,他們會持續隨機改變nonce的值,直到得到想要的結果。這一過程不僅冗長耗時,且占用大量的算力。
如果敵人抓到了信使,并企圖篡改信息,那么根據哈希函數的特性,哈希結果將會劇烈變化。如果城市右邊的將軍看到信息沒有以規定數量的0作為開頭,那么他們就會叫停攻擊。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。