什麼是拜占廷將軍的問題*?
拜占廷其實就是東羅馬帝國。於西元395年自羅馬帝國分出,至1453年被奧斯曼帝國滅亡為止,興盛凡一千多年的帝國。建都於拜占廷(君士坦丁堡),後來為了跟神聖羅馬帝國區分,就特別稱之為拜占廷帝國。
拜占廷帝國為了抵禦來自東方的入侵,把權力下放,由諸多地方上的將軍實施屯田統治。
拜占廷將軍的問題
如果有敵人入侵,帝王徵召10位將軍前往禦敵,必須至少有6位將軍聽命聯合,才能擊退敵人。學者Leslie Lamport 已經用數學證明,不聽命的將軍必須少於總數的1/3,才能達成足夠的共識力量去退敵。
區塊鏈號稱透過網路節點之間的共識來建立信任,而非透過一個公正的第三方,也就是試著解決類似拜占廷將軍之間,相互不信任的問題。
每個節點(將軍)之間會互通訊息,如何防止其中有惡意的節點(不聽命的將軍/叛徒)影響到系統中其他的節點(將軍)形成互信的共識呢?
區塊鏈在產生新的區塊時,由首先解出某個數學難題的節點取得。為了搶先解題,節點就必須配備足夠強大的電腦軟硬體,一旦搶先了,以比特幣的系統為例,就可以得到比特幣為報酬。而這個爭取區塊鏈資料區塊和比特幣報酬的舉動,就被稱為「挖礦」(mining)。
以運算能力決定區塊鏈中新的區塊的歸屬,並給予相對的代幣做為報酬的方法,叫做pow(proof of work)。由於每個新的區塊都是辛苦運算取得,事先付出了重大成本以示忠誠,使得節點之間的信任牢不可破,也就等於解決了拜占廷將軍的問題了。
實務上,為了達到沒有一個中央單位的控制下,節點之間有信任和共識,比特幣區塊鍵的做法,就在每個節點同步儲存所有的資料,包括區塊鏈、雜湊值及交易詳細內容。意思是說在區塊鏈上任何的異動,每個節點都知道。優點是系統的透明度,因此而能去中心化,但是缺點就是連接到比特幣系統的節點,必須儲存大量的資料(至2017年9月為止,約130GB)。如果區塊鏈要拿來進行巨大的交易,迅速累積的資料量,對每個節點都會造成壓力。(截至2022/5/12,比特幣的節點共有37,193個)。
每個節點同步備份所有區塊鏈資料的做法,加上pow,解決了拜佔廷將軍的信任、共識的問題,也達到去中心化,但是在資料上,好像把每個節點都變成了中心了。要成為節點,必須有相當的財力物力,已經不是當時區塊鍵倡始者所主張的那麼庶民了,不是不相認識的人都可以隨意p2p地直接進行交易了。
另外,以比特幣區塊鍵這樣的系統為例,對於要以低廉成本迅速處理的金融交易,將力有未逮。比特幣區塊鍵每十分鐘才產生1MB的資料區塊,約可容納1,000資料,要付出礦工的費用是12.5BTC,約合日幣86萬(19萬新台幣),等於每筆交易成本至少日幣860元(新台190元),怎麼看都太昂貴了。
最後是加密的問題。像比特幣這種「加密」的「代幣」,強調就是加密的安全性。但是,在區塊鏈的領域,似乎在加密安全上要再加把勁。2017年就發生,『…..機制相似於區塊鏈的IOTA上的使用的密碼學雜湊函數,其特有的規格是來自於SHA-3的啓發,不過這種特有規格卻被發現存在著一般密碼學者所不會犯的缺失。這顯示技術者社群中必然沒有足夠的密碼專家,且規格及執行過程中可能存在許多漏洞。…..』很可怕吧!
除了加密的問題,持有的加密代幣,也可能因為交易網站的軟體漏洞而蒙受損失。曾經發生在乙太坊超額重覆提領的問題,就是一個例子。
這些也不斷顯示,區塊鏈的演進,還在很初階的狀態。
由於區塊鏈十分仰賴加密方法對加密代幣所提供的保障,而那是基於目前電腦的運算能無法在短時間內破解密碼。但一個更未來性的問題是,一旦量子電腦商業運轉,那怎麼辦呢?(當然這對目前所有的加密程序都是威脅)。
短期我應該不會去持有加密代幣。手邊資產有限,又何必冒不明不白的風險呢?對於區塊鏈的發展,大家就拭目以待吧!
*:〈拜占庭將軍問題的前世與區塊鏈今生〉,蔡宗翰,Apr 22, 2020
**:《區塊鏈技術的未解決問題》,松尾真一郎 等,何蟬秀 譯
2022/8/19 區塊鏈技術的未解決問題 Damakey

