两军问题和拜占庭将军问题的区块链解读(一)
轉自:https://www.jianshu.com/p/c543794cd731
說起區塊鏈,有兩個模型經常被提起,那就是兩軍問題和拜占庭將軍問題。對于這兩個模型,之前查看了一些資料,但個人理解得仍然不是很透。盡管如此,本篇盡量用通俗的語言解釋一下這兩個模型,不當之處請指正。
首先要明確,這兩個模型僅僅是用講故事的方式提出了問題,但是并沒有提出解決問題的方法。讓我們先來了解一下這兩個問題的具體內容是什么。
本篇先說兩軍問題:
白軍駐扎在溝渠里,藍軍和紅軍分別駐扎在溝渠兩邊。白軍比藍軍和紅軍中任何一支軍隊都更為強大,但是藍軍和紅軍若能同時合力進攻則能夠打敗白軍。藍軍和紅軍不能夠越過溝渠遠程地溝通,只能派遣通信兵穿過溝渠去通知對方協商進攻時間。
一天,藍軍派出通信兵向紅軍發出信息:我方三天后的下午一點半發起進攻,請紅軍方面一起同時進攻。
紅軍收到這樣的消息后表示同意,于是又派出通信兵給藍軍發出信息:信息收到,我方同意。
藍軍收到信息后,為了讓紅方知道自己已經收到信息并放心進攻,于是又派出通信兵給紅軍發出信息:信息收到。
紅軍收到信息后,為了讓藍方知道自己已經收到信息并放心進攻,于是又派出通信兵給紅軍發出信息:信息收到。
……
為了讓對方完全放心并派兵進攻,取得行動上的一致,總需要給對方一個回執,因此,這樣的信息傳遞理論上會無限循環下去。
除此之外,由于通信兵可能在經過溝渠時被白軍俘獲,所以,信息還有被篡改的風險。
由此可見,經典情形下,兩軍問題是不可解的,即紅軍和藍軍是無法通過信息溝通達成行動上的一致。
在現實生活中,兩軍問題可以被抽象為,由于信道的不可靠,可能會造成信息的遺失、監聽和篡改,從而造成兩方無法達成共識。
雖然兩軍問題經典情形下不可解,但是這一問題至關重要,是現代通信系統中必須解決的問題?;谕ㄐ懦杀竞图夹g成熟度的考慮,目前TCP協議被作為“解決”兩軍問題的主流方案。
TCP協議“解決”兩軍問題的原理如下:
TCP協議中,藍軍先向紅軍發出一個隨機數x,紅軍收到x了以后,發給藍軍另一個隨機數y以及x+1作為答復,這樣藍軍就知道紅軍已經收到了,因為要破解隨機數x可能性并不大;然后藍軍再發回y+1給紅軍,這樣紅軍就知道藍軍已經收到了。這樣,藍軍和紅軍之間就建立一個可靠的連接,彼此相信對方已經收到并確認了信息。
而事實上,紅軍并不會知道藍軍是否收到了y+1;并且,由于信道的不可靠性,x或者y都是可能被截獲的,這些問題說明了即使是“三次握手”(可以理解為三次單方通信),也并不能夠徹底解決兩軍問題,只是在現實成本可控的條件下,我們把TCP協議當作了兩軍問題的現實可解方法。
那么,區塊鏈技術是怎樣解決兩軍問題的呢?
區塊鏈技術使用非對稱加密算法對節點間的消息傳遞提供簽名技術支持。每個節點(藍方或紅方)都有屬于自己的密匙(公匙和私匙),唯一標識節點身份。使用非對稱加密算法傳遞消息,能夠保證消息傳遞的私密性,而且消息簽名不可抵賴、不可篡改。
具體來講,使用公匙加密的數據,使用公匙對應的私匙解密;使用私匙進行簽名的消息,只需要使用私匙對應的公匙驗證簽名即可。比如,藍軍想要給紅軍發送消息,那么只需要使用紅軍的公匙加密消息,紅軍收到消息后使用自己的私匙解密消息即可。而如果藍軍想申明自己的身份,那么只需要將消息使用自己的私匙進行簽名即可,紅軍收到消息后就可以使用藍軍的公匙驗證消息的來源。
這樣就在極大程度上杜絕了信息被篡改、被監聽的可能性,但仍然無法完全杜絕。
這是因為,雖然破解非對稱加密算法非常困難,但絕非完全沒有可能。一旦量子計算機從實驗階段走上實用階段,非對稱加密算法的破解就會成為一件相對簡單的事情。
因此,如何解決兩軍問題,是一個需要不斷研究的課題。那么,有沒有一個終極辦法可以完全解決兩軍問題呢?
從目前的科研成果來看,量子通訊協議很有可能成為兩軍問題的終極解決方案。
量子通訊協議的基礎是量子糾纏理論。這個理論由愛因斯坦提出,后被其他科學家證實。這個理論認為,處于量子糾纏態的兩個粒子,無論相隔多遠都能夠彼此同步。
因此我們可以相信,至少理論上兩軍問題是可解的,即存在一種方法,即使利用了不可靠的信道,也能保證信息傳遞的可靠性。
以上為兩軍問題和拜占庭將軍問題的區塊鏈解讀的第一部分,下篇會單獨說一下拜占庭將軍問題,希望對你有所幫助。
總結
以上是生活随笔為你收集整理的两军问题和拜占庭将军问题的区块链解读(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OllyDbg断点详解
- 下一篇: java解析txt文件