說到區(qū)塊鏈,每位接觸過開發(fā)或炒幣的人大概都能列出一串耳熟能詳?shù)拿Q:BTC朱庆,ETH盛泡,EOS,BTM娱颊,NEO等等傲诵。按時間和功能又分成所謂第一代,第二代箱硕,第三代的區(qū)塊鏈技術(shù)拴竹。如果要問區(qū)塊鏈的優(yōu)點(diǎn)是什么,大家基本上都會說:
1 開放中心化系統(tǒng)
2 數(shù)據(jù)不可篡改剧罩,公開透明
3 匿名(現(xiàn)有環(huán)境下其實已經(jīng)不具備)
但要說為什么可以做到這些栓拜,又能保證系統(tǒng)的正常運(yùn)行,都離不開對共識機(jī)制的建立惠昔,實現(xiàn)分布式(去中心化的近義詞)系統(tǒng)的容錯解決方案菱属。
回到1982年,從1975年就開始的“阿波羅-聯(lián)盟”計劃仍在發(fā)射哥倫比亞航天飛機(jī)舰罚。屢受挫折的NASA也讓2013年拿了圖靈獎的萊斯利 蘭伯特 Leslie Lamort研究如何解決系統(tǒng)間通信的穩(wěn)定爭取問題。蘭波特這一年發(fā)表了這片論文《拜占庭將軍問題》中為了定義要解決的計算機(jī)系統(tǒng)問題薛耻,設(shè)想了這個拜占庭將軍的場景:
拜占庭(東羅馬帝國)的幾支部隊在敵人的城外駐扎下來了营罢,每支部隊的士兵聽命于他們的將軍。將軍之間可以通過信使互相溝通饼齿。經(jīng)過觀察敵情饲漾,他們明白必須統(tǒng)一軍事行動計劃才能取勝。但是缕溉,將軍之中可能有叛徒考传,試圖阻止忠誠的將軍們達(dá)成一致。將軍們必須有一個算法保證:
A证鸥。 所有忠誠的將軍對同一個計劃(未被篡改)做決定
B僚楞。少量的叛變將軍不能讓忠誠將軍接受一個不合理的計劃
在論文中蘭伯特進(jìn)一步把這個問題分成2類:
1.將軍得到的都是口述消息勤晚,信息可能損失
2.將軍得到的是某種加密過的信息,不會被修改
只是從這個問題的定義泉褐,我們可以知道:
1 沒有一個至高權(quán)威的法令者赐写,大家平等商議
2 大部分是忠誠(善良)的,但不能防止有作惡者
3 每個將軍都需要知道所有人的決定膜赃,信息公開
是不是非常像區(qū)塊鏈技術(shù)現(xiàn)在要解決的問題挺邀?以至于現(xiàn)在對區(qū)塊鏈技術(shù)的對比分析中,都會有一條:是否支持拜占庭容錯ByantineFalultTolerance.
如果對拜占庭問題中的主要節(jié)點(diǎn)和交互與區(qū)塊鏈做類比跳座,可以得到:
1將軍相當(dāng)于數(shù)據(jù)寫入打包的節(jié)點(diǎn)--礦工
2需要對數(shù)據(jù)做防篡改處理--加密
3需要知道數(shù)據(jù)是誰修改的—簽名
具體到第一代的區(qū)塊鏈代表比特幣端铛,共識算法Prove Of Work:
1.每個士兵和將軍理論上都可以寫數(shù)據(jù),策反難度大疲眷。缺點(diǎn)也明顯禾蚕,速度慢。
2.到底是誰可以傳遞數(shù)據(jù)咪橙,每個人都不停的扔骰子夕膀,誰第一個扔到了規(guī)定的數(shù)字誰打包數(shù)據(jù)。其中有運(yùn)行和算力(扔骰子速度)2中因素影響美侦。
3.通過Hash算法防止篡改
4.橢圓曲線數(shù)字簽名
第二代的代表产舞,以太坊:
1.仍然是所有人都參與數(shù)據(jù)傳遞和寫入。
2.挖礦算法與比特幣不同菠剩,需要更多顯卡運(yùn)算而不是CPU易猫。
3.每個參與的人除了讀寫交易數(shù)據(jù),還能執(zhí)行復(fù)雜指令(智能合約)具壮。
第三代區(qū)塊鏈的代表准颓,EOS:
1.只有將軍(超級節(jié)點(diǎn))負(fù)責(zé)數(shù)據(jù)處理,速度可以明顯加快棺妓。
2.共識機(jī)制DPOS攘已,簡單說就是每次隨機(jī)選擇某個將軍處理數(shù)據(jù)
3.如果將軍不合格,在定期舉行的選舉中會被更換
即使每天都有層出不窮的新鏈產(chǎn)生怜跑,要清晰理解這些區(qū)塊鏈技術(shù)的特點(diǎn)样勃,背后的原理機(jī)制,只要從其共識算法的原理出發(fā)性芬,層層遞進(jìn)峡眶,不會迷失方向。
參考文章:
The Byzantine Generals Problem?https://people.eecs.berkeley.edu/~luca/cs174/byzantine.pdf