名稱
Market Cap
Price
Change(24h)
Price Graph(7d)
【羅斯福專欄】拜占庭將軍怎麼打的勝仗?以鋼鐵人為例
拜占庭將軍問題是什麼?跟虛擬貨幣又有什麼關係?區塊鏈不可不知的核心技術邏輯
作者:加密羅斯福
2018-05-09

https://steemit.com/blockchain/@dantheman/the-problem-with-byzantine-generals

區塊鏈的技術在近年來開發了許許多多不同的演算法,但解決的核心問題仍然是所謂的『拜占庭將軍問題』,有在研究區塊鏈的朋友們一定不覺得陌生,但剛進入虛擬貨幣圈子的朋友大概會被這個標題搞得一頭霧水,拜占庭將軍問題是個存在已久的哲學、數學也是邏輯問題,在該領域中,也一直被認為是最困難的問題之一,還記得區塊鏈嗎?需要提醒一下的朋友可以回頭看一下我喜歡寫煽情標題的同事寫的這篇文章 <別再被一堆專有名詞擊退!挖礦前,先快速了解什麼是區塊鏈!>,簡單的說,區塊鏈讓我們可以不用透過中心化的第三方(政府、銀行等)去決定交易的費用是否有傳達到(想像貪腐的銀行把你的交易扣住但並未傳給對方),這塊地是否真的屬於我(想像貪腐的政府把你擁有的地低價賣給國際企業),而是讓一群人透過一個共識機制,達成公正的判決,同事雖說煽情,但裁判 vs 攝影師的例子想得相當不錯。

這樣的共識機制,就是解決拜占庭將軍問題的核心。


所以拜占庭將軍擔憂什麼問題?

Leslie Lamport 是一位獲得了圖靈獎的數學家,也是提出解決拜占庭將軍問題的人,他在論文中是這樣描述拜占庭將軍問題的

一組拜占庭將軍分別各率領一支軍隊共同圍困一座城市。為了簡化問題,將各支軍隊的行動策略限定為進攻或撤離兩種。因為部分軍隊進攻部分軍隊撤離可能會造成災難性後果,因此各位將軍必須通過投票來達成一致策略,即所有軍隊一起進攻或所有軍隊一起撤離。因為各位將軍分處城市不同方向,他們只能通過信使互相聯繫。在投票過程中每位將軍都將自己投票給進攻還是撤退的資訊通過信使分別通知其他所有將軍,這樣一來每位將軍根據自己的投票和其他所有將軍送來的資訊就可以知道共同的投票結果而決定行動策略。

我來重新解釋一次這個問題

拜占庭帝國有四位勇猛的將軍,蜘蛛人、美國隊長、索爾、與鋼鐵人,他們各自有自己的軍隊,打算攻下薩諾斯的城堡(我並不是把各位當三歲,這其實是個好例子,請大家繼續讀下去)。

但打勝仗有個前提,因為薩諾斯過於強大,他們四支軍隊必須同時進攻,才有可能拿下這座城堡(是不是開始有點神似電影了)。

在這個前提下,最優先的要務就是四人彼此必須溝通,確認彼此真正的決定與進攻時間,才有機會打勝仗。

如果目標確認了,接下來便是尋找溝通的方法。拜占庭時代沒有電話(我無法解釋為什麼鋼鐵人的 AI 系統 Friday 無法作用),他們唯一與彼此溝通的方法只有派出信使,告知對方彼此的想法。

於是鋼鐵人將軍派出了三位信使給三位將軍,送出的信息是『我將在星期一進攻,你願不願意跟我一起在週一進攻?』蜘蛛人可能會回說『不,我太年輕,我需要多一天的時間跟我的阿姨在一起,但我會在週二進攻。你願不願意跟我一起在週二進攻?』然後讓鋼鐵人信使把這個新訊息帶回去。

但是問題來了,鋼鐵人的信使可能會在中途被薩諾斯攔截,薩諾斯的屬下甚至有人可以假冒穿上信使的鋼鐵裝,將假信息給帶回去,告訴鋼鐵人將軍說蜘蛛人將軍同意了你的提議,我們週一進攻。

因為四個將軍並沒有在同一時間進攻,薩諾斯贏得了戰爭。

這就是四位拜占庭將軍的共識問題,他們的溝通管道並不可靠,如果你把四位將軍想成虛擬貨幣錢包的話,鋼鐵人希望傳送 100 個 Bitcoin 傳送給蜘蛛人,薩諾斯卻可以竄改這個交易,讓蜘蛛人什麼都收不到。因為溝通管道不可靠,他們無法信任任何傳到手上的訊息,那該如何解決呢?


如果我們是拜占庭軍師

我們先來看一下這些訊息長什麼樣子

星期一 攻擊
星期二 攻擊
星期一 撤退

簡單來說在訊息中會有兩個元素,一是時間,二是進攻或撤退的決策,而文字的問題是蜘蛛人無法確認這訊息是否正確,或是是否真的來自鋼鐵人,這給了薩諾斯極大的動機去攔截或竄改訊息,這就跟所有以區塊鏈為技術核心的虛擬貨幣一樣,它們都需要一個可以辨認真偽,確認訊息沒有被修改過的溝通機制。

錦囊一:偽裝訊息

在區塊鏈中,我們使用一種要做雜湊演算法的技術(Hash functions)來做加密,不用害怕,專有名詞我就講到這,如果妳希望可以多了解請看雜湊函式在維基百科的解釋,現在你要知道的,只有雜湊函式的特性。

當鋼鐵人(或任何其他將軍)要傳送一個訊息給蜘蛛人及其他將軍的時候,他必須通過雜湊函示(加密),幫助傳訊兵與訊息本身做出一定的偽裝,這個偽裝有個前提,就是偽裝外型必須是鋼鐵人與蜘蛛人同意過的,到達蜘蛛人手上時,他才認得出來(譬如說他們兩人都同意將傳訊兵偽裝成浩克,如果今天出現的是洛基,他們就知道訊息可能被竄改過)。

做出這個偽裝需要花費很大的精力,薩諾斯的威力極其強大,可以看透幾乎一切,所以在我們的拜占庭將軍傳送訊息時,必須花費許多的成本來偽裝成浩克(以雜湊函數加密)才有辦法避免被薩諾斯竄改訊息,讓收到訊息的將軍可以辨認真偽,同理,蜘蛛人回覆給鋼鐵人的訊息,也會使用這種加密模式,讓鋼鐵人可以確認訊息的真偽。

這在 Bitcoin 中叫 PoW, Proof of Work(工作證明),未來我們也會在文章中解釋。

錦囊二:密上加密

偽裝訊息有個小問題,如果薩諾斯願意付出同等級的成本及時間,他還是有可能可以竄改訊息,偽裝成浩克,要怎麼讓竄改訊息變得不可能呢?

區塊鏈的做法其實並不難,它將多個將軍的訊息與偽裝集合起來,再用雜湊函數加密一次,這個技巧叫做 Merkle Tree,簡單呈現如下。

群體訊息再次加密後,會讓訊息幾乎無法被竄改,薩諾斯必須要付出比單一訊息高得多的成本,才可能有機會,而這個成本可能比他守下城堡能獲得的利益加總更多,另外是等到薩諾斯解開了這訊息的時候,進攻可能早就發生了。

這個群體再度加密後,所形成的就是一個『區塊』,對面的將軍也能更確認自己收到訊息的真實性。


復仇者聯盟續集

有些細節值得注意一下,譬如說在區塊鏈的技術上,其實所有的資料都是公開的,所以區塊鏈的加密並不是為了讓薩諾斯或其他參與者看不到訊息,而是沒有辦法更改訊息而不讓等待訊息的將軍知道。

有了這樣的加密技術,將軍與將軍間達成共識便成可能,在區塊鏈上對於交易是否被確認,身份是否被認可等,也可以由多個電腦(節點)達成協議進行確認,再也不需要一個中心化的機構來認證,推翻現實生活中的薩諾斯,貪腐的銀行政府,讓社會能夠更加公平的向前推進。

這樣的例子當然跟真實情況偶爾會有些微出入,歡迎大家指教,但希望可以給各位新進者一個比較容易理解的方式,搞懂區塊鏈到底在做什麼。


持續追蹤,強化認知

我們打從心裏認定密幣電報是你的最佳選擇,密幣電報提供的資訊有幾種

  1. 踏入幣圈的最短捷徑,3句話讓你快速吸收幣圈即時新聞
  2. 到底該對誰有信心?每週五提供您國際唯一虛擬貨幣評價資訊,強化你的分析觀點
  3. 不可錯過的幣圈資訊,都將持續以深入淺出的角度為您解析。
加入密幣電報 Line@ 頻道
加入密幣電報 Telegram