二、工作量证明链-区块链技术的雏形
? ? ? ? 用算法解決難題——區塊鏈技術的雛形
? ? ? ? 構造出一個完美的、可以解決問題的“拜占庭容錯系統”是一個不小的挑戰。而且構造出來以后,其是否真的有效,能否經得起時間的考驗與各方的質疑,這些都關乎著這個系統未來的命運與其創造群體的聲譽。
? ? ? ? 2008年冬季,美國MIT(麻省理工學院)的密碼學及密碼學政策戰略的郵件討論組中,一位澳大利亞的企業家James A Donald(詹姆斯·A·唐納德)就對一位聲稱構造出了一個點對點的、不需要第三方權威認證的e-cash(電子現金)支付系統提出了質疑。而他的理由就是:對方設計的P2P系統不能夠解決“拜占庭將軍問題”。
? ? ? ? 在郵件中他挑剔地說道: “我們的確真的非常非常需要這個系統,但我所擔憂的并不是信任的問題,而是如何獲取一個全局共享的圖景,借由此點而獲取一致性的問題。每個人都知道X,這并不足夠。我們需要讓每個人都知道‘每個人都知道X’。而每個人都知道‘每個人都知道X ’就是‘拜占庭將軍問題’中,分布式的數據處理最難解決的問題。尤其是當X是非常龐大的數據時……”言下之意,他并不清楚或不確信這個去中心化的系統,如何解決拜占庭將軍的難題。
? ? ? ? 僅僅在一天之后,他就收到了原作者(中本聰)的回復,一封簡潔、優雅的郵件解釋了在這個系統中,破解“拜占庭將軍問題”的算法。
? ? ? ? “工作量證明鏈”( proof-of-work chain)正是我解決“拜占庭將軍問題”的方案。我將在那個語境中對它進行重新表述。
? ? ? ? 一群拜占庭將軍,人手一臺電腦想用字符串模式匹配的方法,暴力破解國王的WiFi密碼,當然他們已經事先獲取了組成密碼的字符串的長度。一旦他們開始模擬網絡發送數據包,他們必須在一個限定的時間內完成破解工作,并清除服務器和電腦上的記錄,否則他們就會被發現,那就麻煩了。只有當絕大多數將軍在同一時間發起攻擊和破解,這樣才能有足夠的CPU(中央處理器)和計算能力在短時間內完成破解工作。
? ? ? ? 他們并不特別在乎什么時候開始攻擊,只要他們全部同意就好。一開始的時候,大家決定這樣搞:任何人覺得時機到了都可以宣布一個攻擊時刻。而且,不論是什么時候,只要是第一個被聽到的攻擊時刻,就將被確定為官方的攻擊時刻。這樣的話問題又來了,因為網絡傳達有延遲和干擾,如果有兩個將軍差不多同一時間公布了兩個不同的攻擊時刻,那么有的人會最先聽到其中一個將軍發布的攻擊時刻,而又有些人則會最先聽到另外一個將軍發布的攻擊時刻。
? ? ? ? 他們使用一個“工作量證明鏈”來解決這個問題。當每個將軍接收到任何表達形式的第一個攻擊時刻時,他都會設置他的計算機來求解一個極其困難的“工作量證明”問題,對這個問題的解答是一個哈希(Hash)散列,里面也將包含著這次的攻擊時刻。由于這個“工作量證明”問題,非常難解,一般而言,就算所有人收到這個問題后同時求解,也至少需要10分鐘才能產生解答。一旦一個將軍解出了“工作量證明”,他將會把這個算出來的“工作量證明”向整個網絡進行傳播,每一個接收到的人,將在他們當前正在做的“工作量證明”計算的散列中附加上剛剛被求解出來的那個工作量證明。如果任何人正在計算他收到的其他的一個不同的攻擊時刻,他們將會轉向新的更新后的“工作量證明”計算當中,因為他現在的“工作量證明鏈”更長了。
? ? ? ? 兩個小時后,將有一個攻擊時刻被散列在一個有12個“工作量證明”的鏈中。每個將軍只要通過驗證(這條工作鏈的)計算難度,就能估算出平均每小時有多少CPU算力耗費在這上面,也就會知道:這一定是在分配的時間段內,絕大多數將軍的計算機共同協作才能生成的結果。如果“工作量證明鏈”中展示出來的算力足夠強大,可以破解國王的WiFi密碼,那么他們就可以在一致同意的時間內安全地展開攻擊。
? ? ? ? 同步、分布式數據庫和一個一致的、全局性的視野的問題如何解決?“工作量證明鏈”就是答案。
? ? ? ? 我們可以看到這封郵件解決了下面幾個問題:
? ? ? ? (1)引入一個困難的、需要10分鐘求解的工作量計算,限制了網絡中每個時刻中被提出的進攻時刻數目。
? ? ? ? (2)將所有求解出的“工作量證明”都逐一加入,形成一個越來越長的鏈條,一個記錄著所有“參與著攻擊時刻哈希計算的將軍、計算的‘工作量證明’、關于‘工作量證明’的計算的總體名錄”。
? ? ? ? (3)基于這條長鏈得出安全的進攻時刻的答案。
引自:《區塊鏈-重塑經濟與世界》第8頁。
總結
以上是生活随笔為你收集整理的二、工作量证明链-区块链技术的雏形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java queue 实现类 区别_Ja
- 下一篇: spring boot maven项目返