不懂「拜占庭將軍問題」?聽聽中本聰怎麼說
榮格財經/張詠晴編譯
2018-10-06 08:00

區塊鏈世界的高潮與落寞,包括爭吵,其實都源起於2008年11月1日凌晨兩點多的那封郵件_題為《比特幣:一種點對點(Peer-to-Peer)的電子現金系統》。

 

時隔多年後的2015年12月,中本聰在Linux基金會的比特幣開發者社群中,發佈了一封聲明,他在聲明中重述了比特幣的五個主要特徵。

 

兩周之後,當有專家對此表達質疑時,中本聰用郵件予以積極的回覆,時間是2008年11月14日06:56:55(GMT+8),他的署名依然是Satoshi Makamoto。

 

他在回覆中這樣寫道:「工作量證明鏈(proof-of-work chain)正是我解決『拜占庭將軍問題』的方案。我將在那個語境中,對它進行重新表述。」

 

一群拜占庭將軍,人手一台電腦想用字串樣式匹配,來暴力破解國王的Wi-Fi密碼,當然他們已經事先獲取了組成密碼的字串的長度。一旦他們開始模擬網路發送數據包,他們必須在一個限定的時間內完成破解工作,並清除伺服器和電腦上的記錄,否則他們就會被發現,那就麻煩了。

 

只有當絕大多數將軍在同一時間發起攻擊和破解,這樣才能有足夠的CPU(中央處理器)和計算能力,在短時間內完成破解工作。

 

他們並不特別在乎什麼時候開始攻擊,只要他們全部同意就好。一開始的時候,大家決定這樣做:任何人覺得時機到了,都可以宣布一個攻擊時刻。而且,不論是什麼時候,只要是第一個被聽到的攻擊時刻,就將被確定為官方的攻擊時刻。

 

這樣的話問題又來了,因為網路傳達有延遲和干擾,如果有兩個將軍差不多同一時間公布了兩個不同的攻擊時刻,那麼有的人會最先聽到其中一個將軍發布的攻擊時刻,而又有些人則會最先聽到另外一個將軍發布的攻擊時刻。

 

他們使用一個「工作量證明鏈」來解決這個問題。當每個將軍接收到任何表達形式的第一個攻擊時刻時,他都會設置他的電腦來求解一個極其困難的「工作量證明」問題,對這個問題的解答是一個雜湊值(Hash),裡面也將包含著這次的攻擊時刻。

 

由於這個「工作量證明」問題,非常難解,一般而言,就算所有人收到這個問題後同時求解,也至少需要10分鐘才能產生解答。一旦一個將軍解出了「工作量證明」,他將會把這個算出來的「工作量證明」向整個網路進行傳播,每一個接收到的人,將在他們當前正在做的「工作量證明」計算中,附加上剛剛被求解出來的那個工作量證明。

 

如果任何人正在計算他收到的其他的一個不同的攻擊時刻,他們將會轉向新的更新後的「工作量證明」計算當中,因為他現在的「工作量證明鏈」更長了。

 

兩個小時後,將有一個攻擊時刻被散列在一個有12個「工作量證明」的鏈中。每個將軍只要透過驗證這條工作鏈的計算難度,就能估算出平均每小時有多少CPU算力耗費在這上面,也就會知道:這一定是在分配的時間段內,絕大多數將軍的電腦共同合作,才能生成的結果。

 

如果「工作量證明鏈」中展示出來的算力足夠強大,可以破解國王的Wi-Fi密碼,那麼他們就可以在一致同意的時間內,安全地展開攻擊。同步、分散式數據庫和一個一致的、全面性視野的問題如何解決?「工作量證明鏈」就是答案。

 

本文為巴比特資訊授權刊登,原文標題為「十年前凌晨兩點多的那封電子郵件與世界的新進化猜想