拜占庭將軍問(wèn)題----與海溝通后的整理
非常感謝海的關(guān)于拜占庭將軍的分享以及對(duì)我提出的所有問(wèn)題的耐心講解。下面我想分享一下與海溝通后的整理結(jié)果,希望對(duì)大家有一點(diǎn)點(diǎn)幫助。
拜占庭將軍有兩個(gè)容錯(cuò)方式,一個(gè)用在私鏈中浪册,一個(gè)用在公鏈中,PBFT和DBFT岗照。那我們今天講一下在私鏈中村象。
IC1:即所有的忠誠(chéng)的副官要遵守同一個(gè)命令,即達(dá)成一致谴返。
或IC2:假如將軍是忠誠(chéng)的煞肾,那么每一個(gè)忠誠(chéng)的副官都應(yīng)該按照將軍的意思行事。
上面這兩個(gè)是拜占庭將軍的容錯(cuò)條件嗓袱,先講第二個(gè)吧籍救,IC2,因?yàn)楸容^簡(jiǎn)單渠抹,就是如果將軍是可信任節(jié)點(diǎn)蝙昙,發(fā)出的數(shù)據(jù)就是可信任的闪萄,那么其他所有節(jié)點(diǎn)按照命令執(zhí)行就可以了。
再講第一個(gè)奇颠,IC1:即所有的忠誠(chéng)的副官要遵守同一個(gè)命令败去,即達(dá)成一致。就是說(shuō)不可信任的節(jié)點(diǎn)發(fā)出的烈拒,其他節(jié)點(diǎn)按照投票來(lái)執(zhí)行圆裕,即達(dá)成一致。我先插入海的圖片荆几。
拜占庭將軍這個(gè)問(wèn)題是叛徒必須少于1/3吓妆,假設(shè)這里一共有7個(gè)人,包括將軍吳老師吨铸,總數(shù)n=7, 叛徒少于1/3行拢,就是要少于7/3, 所以最大叛徒數(shù)m=2。
假設(shè)吳老師是叛徒诞吱,娜娜也是叛徒舟奠。然后上面的S是唱歌,D跳舞房维。咱們?yōu)榱诉_(dá)成最后唱歌S的這個(gè)協(xié)議沼瘫。吳老師先發(fā)出的命令,給妖發(fā)出的是S咙俩,給藍(lán)發(fā)出的是D晕鹊,給M發(fā)出的是S,給津津發(fā)出的是D暴浦,給娜娜發(fā)出的是S,給達(dá)因發(fā)出的也是S晓锻。
第一輪:所有人收到吳老師的請(qǐng)求后歌焦,生成區(qū)塊,并進(jìn)行廣播砚哆。每個(gè)人會(huì)將自己收到的數(shù)據(jù)挨個(gè)點(diǎn)對(duì)點(diǎn)的發(fā)送給其他的人独撇。
第二輪:所有人在收到區(qū)塊廣播后,進(jìn)行區(qū)塊驗(yàn)證躁锁,同時(shí)等待2/3區(qū)塊的結(jié)果纷铣。也就是說(shuō)所有人收到區(qū)塊后,將其他人提供的數(shù)據(jù)一一核對(duì)(第二輪進(jìn)行的是第一次比對(duì))战转,以其中的2/3的共同結(jié)果為最終結(jié)果搜立,并公布自己得出的結(jié)果。紫色劃線(xiàn)的S代表容錯(cuò)后每個(gè)人得出的結(jié)論是S槐秧,也就是經(jīng)過(guò)第二輪確認(rèn)后啄踊,最終發(fā)出的忧设。到這里,其實(shí)大家已經(jīng)達(dá)成一致了颠通,但是必須還要經(jīng)過(guò)第三輪驗(yàn)證址晕,海說(shuō)這是程序設(shè)定的。
第三輪:把自己的原始數(shù)據(jù)顿锰,和其他所有人從不同的人那里收到的數(shù)據(jù)做對(duì)比(這里是第二次比對(duì))谨垃。先上圖。
比如第一行是所有人從藍(lán)那里收到的第二輪(第一次比對(duì))確認(rèn)的數(shù)據(jù)硼控。第一個(gè)是M從藍(lán)那里收到的第二輪數(shù)據(jù)刘陶,第二個(gè)是津從 藍(lán)那里收到的,第三個(gè)是娜娜從藍(lán)那里收到的淀歇,第四個(gè)是達(dá)因從藍(lán)那里收到的易核,最后一個(gè)是妖從藍(lán)那里收到的,得出的結(jié)論全部都是D浪默。第二行就是所有人從M那里收到的第二輪數(shù)據(jù)牡直,最后一個(gè)數(shù)據(jù)是妖從M那里收到的,得出的結(jié)論全部都是S纳决。以下同理碰逸。這一整頁(yè)都是妖在做對(duì)比,底下括號(hào)里的第一個(gè)S就是妖自己的數(shù)據(jù)阔加,后面的DSDS就是從第一行到最后一行得出的數(shù)據(jù)饵史,娜娜的數(shù)據(jù)沒(méi)有被采用,因?yàn)椴煌娜藦乃抢锏玫降臄?shù)據(jù)不一樣胜榔,證明她是叛徒胳喷。結(jié)果是SDSDS,S占多數(shù)夭织,所以第三輪吭露,妖確認(rèn)的結(jié)果是S,并將這個(gè)結(jié)果發(fā)送出去尊惰。
其他人也用同樣的方式進(jìn)行第二次比對(duì)讲竿。請(qǐng)看下圖,海沒(méi)有將它填完整弄屡。這張圖說(shuō)明的是题禀,藍(lán)也在進(jìn)行和妖一樣的第二次比對(duì)。第一行是所有人從妖那里收到的第二輪(第一次比對(duì))確認(rèn)的數(shù)據(jù)膀捷。第二行是所有人從M那里收到的數(shù)據(jù)迈嘹,以此類(lèi)推。藍(lán)第三輪確認(rèn)的結(jié)果也是S全庸,并將這個(gè)結(jié)果發(fā)送出去江锨。
同樣的方法吃警,其他的幾個(gè)人也都會(huì)得出S的結(jié)論,除了叛徒娜娜不一定啄育,但是她的結(jié)果并不會(huì)影響整體結(jié)果酌心,甚至她的結(jié)果在每個(gè)人做第二次比對(duì)的時(shí)候就已經(jīng)不予采納。