區(qū)塊鏈?zhǔn)且环N去中心化的分布式賬本系統(tǒng),它可以用于登記和發(fā)行數(shù)字化資產(chǎn)葛账、產(chǎn)權(quán)憑證柠衅、積分等,并以點(diǎn)對(duì)點(diǎn)的方式進(jìn)行轉(zhuǎn)賬籍琳、支付和交易菲宴。區(qū)塊鏈系統(tǒng)與傳統(tǒng)的中心化賬本系統(tǒng)相比,具有完全公開(kāi)趋急、不可篡改喝峦、防止多重支付等優(yōu)點(diǎn),并且不依賴于任何的可信第三方呜达。
目前區(qū)塊鏈技術(shù)有六大核心部分:
1谣蠢、拜占庭協(xié)定
2、非對(duì)稱加密技術(shù)
3查近、容錯(cuò)問(wèn)題
4眉踱、Paxos 算法(一致性算法)
5、共識(shí)機(jī)制
6霜威、分布式存儲(chǔ)
一谈喳、拜占庭協(xié)定
拜占庭帝國(guó)擁有巨大的財(cái)富,周?chē)?0個(gè)鄰邦垂誕已久侥祭,但拜占庭高墻聳立叁执,固若金湯,沒(méi)有一個(gè)單獨(dú)的鄰邦能夠成功入侵矮冬。任何單個(gè)鄰邦入侵的都會(huì)失敗谈宛,同時(shí)也有可能自身被其他9個(gè)鄰邦入侵。拜占庭帝國(guó)防御能力如此之強(qiáng)胎署,至少要有十個(gè)鄰邦中的一半以上同時(shí)進(jìn)攻吆录,才有可能攻破。
任何單個(gè)城邦的入侵行動(dòng)都會(huì)失敗琼牧,而入侵者的軍隊(duì)也會(huì)被殲滅恢筝,使得其自身容易遭到其他九個(gè)城邦的入侵和劫掠。這十個(gè)城邦之間也互相覬覦對(duì)方的財(cái)富并持續(xù)互相對(duì)抗著巨坊。而且撬槽,拜占庭的防御如此之強(qiáng),十個(gè)鄰居的一半以上同時(shí)進(jìn)攻才能攻破它趾撵。
也就是說(shuō)侄柔,如果六個(gè)或者更多的相鄰敵軍一起進(jìn)攻,他們就會(huì)成功并獲得拜占庭的財(cái)富占调。然而暂题,如果其中有一個(gè)或者更多背叛了其他人,答應(yīng)一起入侵但在其他人進(jìn)攻的時(shí)候又不干了究珊,也就導(dǎo)致只有五支或者更少的軍隊(duì)在同時(shí)進(jìn)攻薪者,那么所有的進(jìn)攻軍隊(duì)都會(huì)被殲滅,并隨后被其他的(包括背叛他們的那(幾)個(gè))鄰居所劫掠剿涮。這是一個(gè)由不互相信任的各方構(gòu)成的網(wǎng)絡(luò)言津,但他們又必須一起努力以完成共同的使命。
二幔虏、非對(duì)稱加密技術(shù)
在上述拜占庭協(xié)定中纺念,如果10個(gè)將軍中的幾個(gè)同時(shí)發(fā)起消息,勢(shì)必會(huì)造成系統(tǒng)的混亂想括,造成各說(shuō)各的攻擊時(shí)間方案陷谱,行動(dòng)難以一致。誰(shuí)都可以發(fā)起進(jìn)攻的信息瑟蜈,但由誰(shuí)來(lái)發(fā)出呢烟逊?其實(shí)這只要加入一個(gè)成本就可以了,即:一段時(shí)間內(nèi)只有一個(gè)節(jié)點(diǎn)可以傳播信息铺根。當(dāng)某個(gè)節(jié)點(diǎn)發(fā)出統(tǒng)一進(jìn)攻的消息后宪躯,各個(gè)節(jié)點(diǎn)收到發(fā)起者的消息必須簽名蓋章,確認(rèn)各自的身份位迂。
在如今看來(lái)访雪,非對(duì)稱加密技術(shù)完全可以解決這個(gè)簽名問(wèn)題详瑞。非對(duì)稱加密算法的加密和解密使用不同的兩個(gè)密鑰.這兩個(gè)密鑰就是我們經(jīng)常聽(tīng)到的”公鑰”和”私鑰”。公鑰和私鑰一般成對(duì)出現(xiàn), 如果消息使用公鑰加密,那么需要該公鑰對(duì)應(yīng)的私鑰才能解密; 同樣臣缀,如果消息使用私鑰加密,那么需要該私鑰對(duì)應(yīng)的公鑰才能解密坝橡。
三、容錯(cuò)問(wèn)題
假設(shè)在此網(wǎng)絡(luò)中精置,消息可能會(huì)丟失计寇、損壞、延遲脂倦、重復(fù)發(fā)送番宁,并且接受的順序與發(fā)送的順序不一致。此外赖阻,節(jié)點(diǎn)的行為可以是任意的:可以隨時(shí)加入蝶押、退出網(wǎng)絡(luò),可以丟棄消息火欧、偽造消息播聪、停止工作等,還可能發(fā)生各種人為或非人為的故障布隔。
算法對(duì)由共識(shí)節(jié)點(diǎn)組成的共識(shí)系統(tǒng)离陶,提供的容錯(cuò)能力,這種容錯(cuò)能力同時(shí)包含安全性和可用性衅檀,并適用于任何網(wǎng)絡(luò)環(huán)境招刨。
四、一致性算法
一致性算法解決的問(wèn)題是一個(gè)分布式系統(tǒng)如何就某個(gè)值(決議)達(dá)成一致哀军。目前主流的一致性算法是Paxos算法家族和Raft算法沉眶。
一個(gè)典型的場(chǎng)景是,在一個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)中杉适,如果各節(jié)點(diǎn)的初始狀態(tài)一致谎倔,每個(gè)節(jié)點(diǎn)都執(zhí)行相同的操作序列,那么他們最后能得到一個(gè)一致的狀態(tài)猿推。為保證每個(gè)節(jié)點(diǎn)執(zhí)行相同的命令序列片习,需要在每一條指令上執(zhí)行一個(gè)“一致性算法”以保證每個(gè)節(jié)點(diǎn)看到的指令一致。一個(gè)通用的一致性算法可以應(yīng)用在許多場(chǎng)景中蹬叭,是分布式計(jì)算中的重要問(wèn)題藕咏。
節(jié)點(diǎn)通信存在兩種模型:共享內(nèi)存和消息傳遞。
Paxos算法就是一種基于消息傳遞模型的一致性算法秽五。
五孽查、共識(shí)機(jī)制
由于點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)下存在較高的網(wǎng)絡(luò)延遲,各個(gè)節(jié)點(diǎn)所觀察到的事務(wù)先后順序不可能完全一致坦喘。因此區(qū)塊鏈系統(tǒng)需要設(shè)計(jì)一種機(jī)制對(duì)在差不多時(shí)間內(nèi)發(fā)生的事務(wù)的先后順序進(jìn)行共識(shí)盲再。這種對(duì)一個(gè)時(shí)間窗口內(nèi)的事務(wù)的先后順序達(dá)成共識(shí)的算法被稱為“共識(shí)機(jī)制”西设。
共識(shí)機(jī)制則是Ripple首先提出的,數(shù)據(jù)正確性優(yōu)先的網(wǎng)絡(luò)交易同步機(jī)制答朋,在共識(shí)網(wǎng)絡(luò)中济榨,無(wú)論軟件代碼怎么變動(dòng),無(wú)法取得共識(shí)就無(wú)法進(jìn)入網(wǎng)絡(luò)绿映,更不要提分叉了。
共識(shí)機(jī)制:區(qū)塊鏈?zhǔn)聞?wù)達(dá)成分布式共識(shí)的算法腐晾。目前主要有幾大類共識(shí)機(jī)制:Pow叉弦、Pos、DPos藻糖、Pool淹冰、PBFT。
1巨柒、Pow(Proof of Work)工作量證明
就是大家熟悉的挖礦樱拴,通過(guò)與或運(yùn)算,計(jì)算出一個(gè)滿足規(guī)則的隨機(jī)數(shù)洋满,即獲得本次記賬權(quán)晶乔,發(fā)出本輪需要記錄的數(shù)據(jù),全網(wǎng)其它節(jié)點(diǎn)驗(yàn)證后一起存儲(chǔ)牺勾;
優(yōu)點(diǎn):完全去中心化正罢,節(jié)點(diǎn)自由進(jìn)出;
缺點(diǎn):目前bitcoin已經(jīng)吸引全球大部分的算力驻民,其它再用Pow共識(shí)機(jī)制的區(qū)塊鏈應(yīng)用很難獲得相同的算力來(lái)保障自身的安全翻具;挖礦造成大量的資源浪費(fèi);共識(shí)達(dá)成的周期較長(zhǎng)回还,不適合商業(yè)應(yīng)用
2裆泳、Pos(Proof of Stake)權(quán)益證明
Pow的一種升級(jí)共識(shí)機(jī)制;根據(jù)每個(gè)節(jié)點(diǎn)所占代幣的比例和時(shí)間柠硕;等比例的降低挖礦難度工禾,從而加快找隨機(jī)數(shù)的速度。
優(yōu)點(diǎn):在一定程度上縮短了共識(shí)達(dá)成的時(shí)間
缺點(diǎn):還是需要挖礦蝗柔,本質(zhì)上沒(méi)有解決商業(yè)應(yīng)用的痛點(diǎn)
3帜篇、DPos(Delegated Proof of Stake)股份授權(quán)證明機(jī)制
類似于董事會(huì)投票,持幣者投出一定數(shù)量的節(jié)點(diǎn)诫咱,代理他們進(jìn)行驗(yàn)證和記賬笙隙。
優(yōu)點(diǎn):大幅縮小參與驗(yàn)證和記賬節(jié)點(diǎn)的數(shù)量,可以達(dá)到秒級(jí)的共識(shí)驗(yàn)證
缺點(diǎn):整個(gè)共識(shí)機(jī)制還是依賴于代幣坎缭,很多商業(yè)應(yīng)用是不需要代幣存在的
4竟痰、Pool驗(yàn)證池
基于傳統(tǒng)的分布式一致性技術(shù)签钩,加上數(shù)據(jù)驗(yàn)證機(jī)制;是目前行業(yè)鏈大范圍在使用的共識(shí)機(jī)制
優(yōu)點(diǎn):不需要代幣也可以工作坏快,在成熟的分布式一致性算法(Pasox铅檩、Raft)基礎(chǔ)上,實(shí)現(xiàn)秒級(jí)共識(shí)驗(yàn)證莽鸿;
缺點(diǎn):去中心化程度不如bictoin昧旨;更適合多方參與的多中心商業(yè)模式
5、PBFT(Practical Byzantine Fault Tolerance)祥得,實(shí)用拜占庭容錯(cuò)算法兔沃。
解決了原始拜占庭容錯(cuò)算法效率不高的問(wèn)題,將算法復(fù)雜度由指數(shù)級(jí)降低到多項(xiàng)式級(jí)级及,使得拜占庭容錯(cuò)算法在實(shí)際系統(tǒng)應(yīng)用中變得可行乒疏。
PBFT是一種狀態(tài)機(jī)副本復(fù)制算法,即服務(wù)作為狀態(tài)機(jī)進(jìn)行建模饮焦,狀態(tài)機(jī)在分布式系統(tǒng)的不同節(jié)點(diǎn)進(jìn)行副本復(fù)制怕吴。每個(gè)狀態(tài)機(jī)的副本都保存了服務(wù)的狀態(tài),同時(shí)也實(shí)現(xiàn)了服務(wù)的操作县踢。將所有的副本組成的集合使用大寫(xiě)字母R表示转绷,使用0到|R|-1的整數(shù)表示每一個(gè)副本。為了描述方便硼啤,假設(shè)|R|=3f+1暇咆,這里f是有可能失效的副本的最大個(gè)數(shù)。盡管可以存在多于3f+1個(gè)副本丙曙,但是額外的副本除了降低性能之外不能提高可靠性爸业。
六、分布式存儲(chǔ)
分布式存儲(chǔ)是一種數(shù)據(jù)存儲(chǔ)技術(shù)亏镰,通過(guò)網(wǎng)絡(luò)使用每臺(tái)機(jī)器上的磁盤(pán)空間扯旷,并將這些分散的存儲(chǔ)資源構(gòu)成一個(gè)虛擬的存儲(chǔ)設(shè)備,數(shù)據(jù)分散的存儲(chǔ)在網(wǎng)絡(luò)中的各個(gè)角落索抓。所以钧忽,分布式存儲(chǔ)技術(shù)并不是每臺(tái)電腦都存放完整的數(shù)據(jù),而是把數(shù)據(jù)切割后存放在不同的電腦里逼肯。就像存放100個(gè)雞蛋耸黑,不是放在同一個(gè)籃子里,而是分開(kāi)放在不同的地方篮幢,加起來(lái)的總和是100個(gè)大刊。
參考
1、比特幣與拜占庭將軍問(wèn)題
2三椿、區(qū)塊鏈技術(shù)六大核心算法
3缺菌、區(qū)塊鏈目前的幾大共識(shí)算法
4葫辐、[區(qū)塊鏈]共識(shí)算法(POW,POS,DPOS,PBFT)介紹和心得
5、淺談區(qū)塊鏈共識(shí)機(jī)制與分布式一致性算法
6伴郁、先解決這四大問(wèn)題再談?wù)搮^(qū)塊鏈吧