1. 網(wǎng)絡(luò)上的交易信息如何確認(rèn)并達(dá)成共識砌烁??
雖然經(jīng)常提到共識機(jī)制,但是對于共識機(jī)制的含義和理解卻并清楚。因此需要就共識機(jī)制的相關(guān)概念原理和實現(xiàn)方法有所理解。?
區(qū)塊鏈的交易信息是通過網(wǎng)絡(luò)廣播傳輸?shù)骄W(wǎng)絡(luò)中各個節(jié)點的闸准,在整個網(wǎng)絡(luò)節(jié)點中如何對廣播的信息進(jìn)行確認(rèn)并達(dá)成共識 最終寫入?yún)^(qū)塊呢?? 如果沒有相應(yīng)的可靠安全的實現(xiàn)機(jī)制梢灭,那么就難以實現(xiàn)其基本的功能夷家,因此共識機(jī)制是整個網(wǎng)絡(luò)運行下去的一個關(guān)鍵。
共識機(jī)制解決了區(qū)塊鏈如何在分布式場景下達(dá)成一致性的問題敏释。區(qū)塊鏈能在眾多節(jié)點達(dá)到一種較為平衡的狀態(tài)也是因為共識機(jī)制库快。那么共識機(jī)制是如何在在去中心化的思想上解決了節(jié)點間互相信任的問題呢??
當(dāng)分布式的思想被提出來時颂暇,人們就開始根據(jù)FLP定理和CAP定理設(shè)計共識算法缺谴。規(guī)范的說但惶,理想的分布式系統(tǒng)的一致性應(yīng)該滿足以下三點:
1.可終止性(Termination):一致性的結(jié)果可在有限時間內(nèi)完成耳鸯。
2.共識性(Consensus):不同節(jié)點最終完成決策的結(jié)果應(yīng)該相同湿蛔。
3.合法性(Validity):決策的結(jié)果必須是其他進(jìn)程提出的提案。
1.節(jié)點處理事務(wù)的能力不同阳啥,網(wǎng)絡(luò)節(jié)點數(shù)據(jù)的吞吐量有差異
2.節(jié)點間通訊的信道可能不安全
3.可能會有作惡節(jié)點出現(xiàn)
4.當(dāng)異步處理能力達(dá)到高度一致時,系統(tǒng)的可擴(kuò)展性就會變差(容不下新節(jié)點的加入)财喳。
科學(xué)家認(rèn)為察迟,在分布式場景下達(dá)成完全一致性是不可能的。但是工程學(xué)家可以犧牲一部分代價來換取分布式場景的一致性耳高,上述的兩大定理也是這種思想扎瓶,所以基于區(qū)塊鏈設(shè)計的各種公式機(jī)制都可以看作犧牲那一部分代價來換取多適合的一致性,我的想法是可以在這種思想上進(jìn)行一個靈活的變換泌枪,即在適當(dāng)?shù)臅r間空間犧牲一部分代價換取適應(yīng)于當(dāng)時場景的一致性概荷,可以實現(xiàn)靈活的區(qū)塊鏈系統(tǒng),即可插拔式的區(qū)塊鏈系統(tǒng)碌燕。今天就介紹一下我對各種共識機(jī)制的看法和分析误证,分布式系統(tǒng)中有無作惡節(jié)點分為拜占庭容錯和非拜占庭容錯機(jī)制。
FLP定理
FLP定理即FLP不可能性修壕,它證明了在分布式情景下愈捅,無論任何算法,即使是只有一個進(jìn)程掛掉慈鸠,對于其他非失敗進(jìn)程蓝谨,都存在著無法達(dá)成一致的可能。
FLP基于如下幾點假設(shè):
僅可修改一次 :?每個進(jìn)程初始時都記錄一個值(0或1)青团。進(jìn)程可以接收消息像棘、改動該值、并發(fā)送消息壶冒,當(dāng)進(jìn)程進(jìn)入decide state時缕题,其值就不再變化。所有非失敗進(jìn)程都進(jìn)入decided state時胖腾,協(xié)議成功結(jié)束烟零。這里放寬到有一部分進(jìn)程進(jìn)入decided state就算協(xié)議成功。
異步通信 :?與同步通信的最大區(qū)別是沒有時鐘咸作、不能時間同步锨阿、不能使用超時、不能探測失敗记罚、消息可任意延遲墅诡、消息可亂序。
通信健壯:只要進(jìn)程非失敗桐智,消息雖會被無限延遲末早,但最終會被送達(dá)烟馅;并且消息僅會被送達(dá)一次(無重復(fù))。
Fail-Stop模型:進(jìn)程失敗如同宕機(jī)然磷,不再處理任何消息郑趁。
失敗進(jìn)程數(shù)量 :最多一個進(jìn)程失敗。
CAP定理:
CAP是分布式系統(tǒng)姿搜、特別是分布式存儲領(lǐng)域中被討論最多的理論寡润。CAP由Eric Brewer在2000年P(guān)ODC會議上提出,是Eric Brewer在Inktomi期間研發(fā)搜索引擎舅柜、分布式web緩存時得出的關(guān)于數(shù)據(jù)一致性(consistency)梭纹、服務(wù)可用性(availability)、分區(qū)容錯性(partition-tolerance)的猜想:
數(shù)據(jù)一致性(consistency):如果系統(tǒng)對一個寫操作返回成功致份,那么之后的讀請求都必須讀到這個新數(shù)據(jù)栗柒;如果返回失敗,那么所有讀操作都不能讀到這個數(shù)據(jù)知举,對調(diào)用者而言數(shù)據(jù)具有強(qiáng)一致性(strong consistency) (又叫原子性 atomic瞬沦、線性一致性 linearizable consistency)[5]
服務(wù)可用性(availability):所有讀寫請求在一定時間內(nèi)得到響應(yīng),可終止雇锡、不會一直等待
分區(qū)容錯性(partition-tolerance):在網(wǎng)絡(luò)分區(qū)的情況下逛钻,被分隔的節(jié)點仍能正常對外服務(wù)
在某時刻如果滿足AP,分隔的節(jié)點同時對外服務(wù)但不能相互通信锰提,將導(dǎo)致狀態(tài)不一致曙痘,即不能滿足C;如果滿足CP立肘,網(wǎng)絡(luò)分區(qū)的情況下為達(dá)成C边坤,請求只能一直等待,即不滿足A谅年;如果要滿足CA茧痒,在一定時間內(nèi)要達(dá)到節(jié)點狀態(tài)一致,要求不能出現(xiàn)網(wǎng)絡(luò)分區(qū)融蹂,則不能滿足P旺订。
C、A超燃、P三者最多只能滿足其中兩個区拳,和FLP定理一樣,CAP定理也指示了一個不可達(dá)的結(jié)果(impossibility result)意乓。