• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 自媒體 查看內容
    • 4395
    • 0
    • 分享到

    理解比特幣的正確姿勢——拜占庭將軍問題的解決方案

    2018-7-16 16:04

    來源: No1BlockchainMedia


    接觸區塊鏈的朋友,多少都聽過關于拜占庭將軍的這個話題,并且經常在網絡上看到,某某區塊鏈項目使用什么技術解決了拜占庭將軍問題,那么究竟什么是拜占庭將軍問題呢,本文就從非專業的角度,來談談拜占庭將軍問題。


    問題起源



    為了更好的理解拜占庭將軍問題,我們先來了解下這個問題的起源。


    相傳在中世紀,拜占庭帝國(如今的土耳其地區)勢力強大,但是奈何幅員遼闊,每個城邦軍隊之間相聚太遠了。那時候還沒有類似狼煙的信息傳輸工具,城邦軍隊之間只能靠人來傳送信息。


    這也造成了一個問題,如果敵人攻打某個城邦,所有將軍必須意見達成一致后,才能決定是支援還是防守(萬一是假消息貿然進攻,自己的城邦就沒人防守了)。


    但是,在城邦之間有可能存在叛徒或者敵軍的間諜,會故意做出錯誤的判斷來干擾大家的決定,導致結果并不是大多數人的真實意愿。


    這個時候,在已知有成員謀反的情況下,其余忠誠的將軍在不受叛徒的影響下如何達成一致的協議。這就是拜占庭問題


    基本概念



    通過這個故事,一個敏銳的計算機科學家萊斯利·蘭伯特將其引申為一種點對點通信的問題


    比較專業的解釋是這樣的。在存在消息丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。因此對一致性的研究一般假設信道是可靠的,或不存在本問題。


    舉例說明



    看完了基本概念不理解?沒關系,為了將這個問題讓非專業人士能看懂,我們舉個例子。


    狗熊非常強大,想要擊敗狗熊需要四只豺狼一起進攻才能獲得勝利,它們任何一支單獨進攻都毫無勝算。


    除非有至少3支豺狼同時襲擊才能擊敗狗熊,它們之間依靠通信烏鴉來協商進攻意向以及進攻時間。


    但是困擾這些豺狼的問題是,它們不確定它們中是否存在間諜,間諜可能擅自變更進攻意愿和進攻時間。


    這種情況下,豺狼如何通過遠距離協商來讓他們贏取戰斗,就成了上面提到的拜占庭將軍問題


    常規解決辦法


    回想上面的實例,四只豺狼想要實現同時進攻或者同時撤退,必須達成共識。針對這種情況,科學家們想出了兩個解決方案。


    第一個是口頭協議。在口頭協議中需要注意以下三點是默認條件。


    1.每個信息都能夠被準確接收


    2.接收者知道是誰發送給他的


    3.誰沒有發送消息大家都知道


    口頭協議的算法原理比較簡單,為方便大家理解,舉個例子。


    假如一共有10個節點,節點1對其他9個節點都發送了消息,然后節點2-10將消息進行轉達,每個節點都是信息的發送者和轉達者,這樣一輪下來,每個節點手上都會有10條信息(包括自己手里的信息)。


    接下來每個節點根據自己手中的信息,選擇多數人的投票結果行動即可,這個時候即便有間諜,因為少數服從多數的原則,只要聽大多數好節點的話就是正確的。


    但是這種算法有著很大的缺陷,首先是計算工作量大,每一個節點都需要去和其他節點進行溝通,隨著節點數量增加,工作量成幾何增長。


    再者就是無法查出哪個節點是壞節點,無法排除故障。因為口頭協議無法將歷史消息進行記錄,也就是我們常說的不可追溯,即便間諜發送不一致的消息,也無法追查到。


    第二個就是書面協議。這里同樣隱含了一些條件。


    節點可以進行簽字,并且大家都能夠識別出這個簽字是否是本人,換種說法就是如果有人篡改簽字大家可以知道。


    這樣就簡單多了,就好比這10個節點是通過書信來聯系的,假設節點1建議明天上午10點進攻。


    同意節點1的就簽個字,然后再給后面的,以此類推,直至所有人手里堆滿了10封信,這個時候情況就與口頭協議類似了。


    書面協議相對比口頭協議就是增加了一個認證機制,所有的消息都有記錄。一旦發現有人所給出的信息不一致,就是追查間諜。


    但是書面協議也面臨諸多問題,首先就是簽名的不可偽造,真實情況復雜多變,連價值上億的名畫都可以偽造,區區一個簽名不足以保證真實性。


    再者,現實中需要協商的內容更加復雜,協商成本太大,想要大規模應用困難重重。


    區塊鏈給出新方案



    區塊鏈技術的誕生,為拜占庭將軍問題的解決提供了新的辦法


    對于上面提到的簽名偽造問題,區塊鏈給出了解決辦法。中本聰利用公鑰和私鑰來解決簽名偽造的問題


    另一方面,在網絡中如果所有人都發送消息,顯然勢必會造成網絡擁堵、節點處理變慢。通過引入工作量證明機制,誰算出一道數學題后,誰才能對其他節點進行發言。同時控制發言頻率,每10分鐘發言一次


    但是在沒有好處的情況下,顯然,大家都不會積極的去解題,做第一個發言的節點,因為第一個發言和最后一個發言并沒有什么區別。


    為了改變效率問題,巧妙的引入了獎勵機制,誰先第一個發言就會有代幣獎勵。為了證明誰是第一個,引入時間戳這個概念,從時間先后順序對第一名進行證明。


    到這里,我們基本了解拜占庭將軍問題是什么了,并且還知道目前的解決辦法有哪些。其中最重要的一點,系統的認識了區塊鏈技術中每一個步驟的現實意義,從而能夠更加系統的認識比特幣。


    對于社會上批判比特幣浪費資源的問題,如果你理解比特幣的意義后會發現,建立信任本身就是具有成本的,銀行的存在、國家機構的存在等等都是為國家貨幣服務,所消耗的資源自然不會少。


    最后回到比特幣浪費資源這個問題,就會發現比特幣雖然消耗了社會資源,但是用更少的成本卻解決了信任問題。至此,也就不難理解代幣對于區塊鏈技術的重要性了,代幣作為激勵來保證區塊鏈的穩健運行!因此工作量證明也是非常有意義的。

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频