国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于分組的區(qū)塊鏈共識(shí)算法

2020-03-13 10:56:34張思賢
關(guān)鍵詞:共識(shí)區(qū)塊聯(lián)網(wǎng)

張思賢 文 捷

(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 上海 200433)

0 引 言

區(qū)塊鏈最先于文獻(xiàn)[1]中提出,作為虛擬貨幣比特幣的底層技術(shù),因其去中心、不可篡改等特性而為大眾所熟悉,但也因?yàn)槠浠谒懔Φ腜ow算法浪費(fèi)大量算力進(jìn)行共識(shí)運(yùn)算和吞吐量低而為人所詬病。Pow算法的出塊時(shí)間為10分鐘,一個(gè)交易從上鏈到確定不能被篡改,需要后續(xù)六個(gè)區(qū)塊的確認(rèn),也就是一個(gè)小時(shí)確認(rèn)時(shí)間。并且基于Pow共識(shí)算法的區(qū)塊鏈系統(tǒng)每秒鐘只能處理七筆交易,并不能適用于當(dāng)今的物聯(lián)網(wǎng)或者金融系統(tǒng)。為了緩解這一問題,Ethereum平臺(tái)嘗試提出Pos共識(shí)算法。Pos算法加入了幣齡的概念,提高了出塊的速度,但同時(shí)也引入了其他問題,如出塊速度不穩(wěn)定,導(dǎo)致分叉的出現(xiàn),以及持幣不出塊等問題。另一方面,在聯(lián)盟鏈系統(tǒng)中,以IBM的Fabric平臺(tái)為例使用的為PBFT算法,其吞吐量能夠比公有鏈系統(tǒng)高出上千倍,并且不需要后續(xù)6個(gè)區(qū)塊的確認(rèn)交易不可逆轉(zhuǎn)。在聯(lián)盟鏈系統(tǒng)中,交易一旦打包即可被認(rèn)為不可逆,但隨著系統(tǒng)中節(jié)點(diǎn)的增多,為了達(dá)成共識(shí)其系統(tǒng)中需要進(jìn)行的通信量也將上升,不具備很好的擴(kuò)展性。文獻(xiàn)[3-4]嘗試從兩種途徑對(duì)PBFT算法進(jìn)行改進(jìn),一個(gè)是引入gossip協(xié)議,另外一個(gè)是引入信用機(jī)制。文獻(xiàn)[7]提出一種交替式的共識(shí)算法進(jìn)行交替出塊,文獻(xiàn)[8]提出了一種RMBC的區(qū)塊鏈?zhǔn)褂肈BFT共識(shí)算法,嘗試以分組的形式提高用戶節(jié)點(diǎn)進(jìn)入?yún)^(qū)塊鏈的數(shù)量。文獻(xiàn)[10]嘗試分析Pow類的共識(shí)算法以及BFT類的共識(shí)算法。

由于現(xiàn)行區(qū)塊鏈技術(shù)存在的瓶頸,并不適用于當(dāng)今的物聯(lián)網(wǎng)技術(shù),現(xiàn)行的物聯(lián)網(wǎng)技術(shù)都是廠商各自定義的標(biāo)準(zhǔn),彼此之間并不能互聯(lián),數(shù)據(jù)不能打通,而區(qū)塊具有可信任、不可篡改等特性,因此可以嘗試將其應(yīng)用于物聯(lián)網(wǎng)系統(tǒng)中,用于處理涉及到兩個(gè)物聯(lián)網(wǎng)域的問題。

本文嘗試從共識(shí)算法出發(fā),提出一種兩個(gè)階段式的區(qū)塊鏈共識(shí)算法,并以此算法提出一種物聯(lián)網(wǎng)設(shè)備互聯(lián)的架構(gòu)。

1 預(yù)備知識(shí)

1.1 盲簽名

盲簽名[9]因?yàn)榫哂忻ば赃@一特點(diǎn),可以有效保護(hù)所簽署的具體內(nèi)容,廣泛應(yīng)用于電子選舉的實(shí)現(xiàn)中。投票者先將自己所投的選票進(jìn)行盲化,然后讓簽名者對(duì)于盲化信息進(jìn)行簽名。在投票系統(tǒng)中,盲化后的信息即為選票。

對(duì)簽名進(jìn)行盲化處理:

盲化消息:m′=mre(modN)

(1)

簽名消息:s′=(m′)d(modN)

(2)

除盲信息:s=s′×r-1(modN)

(3)

原理為:

red≡r(modN)

s≡s′×r-1≡(m′)dr-1≡mdredr-1≡mdrr-1≡md(modN)

盲簽名的盲化、簽署及除盲過程如圖1所示。

圖1 盲簽名的盲化、簽署以及除盲過程

1.2 實(shí)用拜占庭算法(PBFT)

文獻(xiàn)[5]提出實(shí)用拜占庭算法,用于解決分布式系統(tǒng)中出現(xiàn)的拜占庭問題,其容錯(cuò)率為:f≤(n-1)/3。其中:n為系統(tǒng)的總節(jié)點(diǎn)數(shù);f為出現(xiàn)故障的節(jié)點(diǎn)數(shù)。

該算法的主要流程分為3個(gè)階段:

pre-prepare:主節(jié)點(diǎn)向所有備份節(jié)點(diǎn)發(fā)送準(zhǔn)備消息,此時(shí)節(jié)點(diǎn)狀態(tài)為pre-prepare。

prepare:包括主節(jié)點(diǎn)在內(nèi)的所有備份節(jié)點(diǎn)在收到準(zhǔn)備消息后,確定無誤,向外廣播信息,并且進(jìn)入prepare階段。

commit:當(dāng)收到若干個(gè)來自其他副本的prepare信息后即可進(jìn)入commit階段。

實(shí)用拜占庭算法相對(duì)簡單高效,但隨著節(jié)點(diǎn)數(shù)目的增多,其通信量會(huì)急速上升,不適用于大規(guī)模的聯(lián)盟鏈環(huán)境。文獻(xiàn)[6]嘗試在Fabric平臺(tái)中對(duì)其進(jìn)行測(cè)試節(jié)點(diǎn)與性能的關(guān)系,文獻(xiàn)[13]嘗試改造Fabric的架構(gòu),以此提高其吞吐量。

2 算法設(shè)計(jì)

2.1 算法介紹

整個(gè)算法大致分為三個(gè)階段,前期階段為進(jìn)入該系統(tǒng),然后將各節(jié)點(diǎn)分配到每個(gè)組中。第一階段使用盲簽名投票的形式進(jìn)行主節(jié)點(diǎn)的選取。第二階段使用實(shí)用拜占庭算法從上一個(gè)階段中勝利的節(jié)點(diǎn)中選出主節(jié)點(diǎn)進(jìn)行區(qū)塊的生成。

第一階段中,參與競(jìng)選的i到i+4節(jié)點(diǎn),將其選票以盲化的形式(盲化內(nèi)容為競(jìng)選者的地址),連同區(qū)塊信息傳遞至下一個(gè)節(jié)點(diǎn),后續(xù)節(jié)點(diǎn)首先對(duì)區(qū)塊信息進(jìn)行驗(yàn)證,然后對(duì)各個(gè)節(jié)點(diǎn)盲化后的信息進(jìn)行簽署。

由于經(jīng)過盲處理各個(gè)節(jié)點(diǎn)并不知道其為哪個(gè)節(jié)點(diǎn)投票,只需要對(duì)交易記錄進(jìn)行驗(yàn)證與傳遞。等到區(qū)塊信息回到i至i+4節(jié)點(diǎn),i至i+4節(jié)點(diǎn)則可進(jìn)行除盲處理,根據(jù)選票選出勝利節(jié)點(diǎn),并且廣播獲勝信息,將交易數(shù)據(jù)連同簽署信息寫入?yún)^(qū)塊鏈中。在傳播的過程中,投票節(jié)點(diǎn)并不知道到底投的是i到i+4中的哪一個(gè)節(jié)點(diǎn)。

1) 前期階段。區(qū)塊鏈網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)都保存著一份列表,列表上面會(huì)出現(xiàn)一個(gè)聯(lián)盟內(nèi)節(jié)點(diǎn)的地址,這個(gè)地址標(biāo)識(shí)著這些節(jié)點(diǎn)之間為一個(gè)聯(lián)盟。此聯(lián)盟內(nèi)節(jié)點(diǎn)數(shù)存在一個(gè)上限,下文假設(shè)為M。

新加入到網(wǎng)絡(luò)中的節(jié)點(diǎn)a,向周邊發(fā)放自己的公鑰P,然后進(jìn)入等待狀態(tài),網(wǎng)絡(luò)中的其他節(jié)點(diǎn)b收到來自a的請(qǐng)求加入信息后,確定自己的聯(lián)盟內(nèi)節(jié)點(diǎn)數(shù)目仍未到達(dá)上限,將接受加入信息附帶上時(shí)間戳,以及本節(jié)點(diǎn)的公鑰S,使用P加密,并以報(bào)文的形式傳送,表示該節(jié)點(diǎn)已被加入至本聯(lián)盟。

在收到確定報(bào)文后(可能同時(shí)會(huì)收到多個(gè)報(bào)文,以時(shí)間戳最早的為主), 確定加入該聯(lián)盟,并且發(fā)送回執(zhí)報(bào)文,使用S加密,表示接收成功。b收到報(bào)文后向全組節(jié)點(diǎn)廣播,更新聯(lián)盟節(jié)點(diǎn)列表,并向節(jié)點(diǎn)a同步最新的節(jié)點(diǎn)列表,a隨即同步全網(wǎng)中區(qū)塊的所有數(shù)據(jù)。

2) 第一階段。聯(lián)盟中的節(jié)點(diǎn)以某種環(huán)的形式進(jìn)行連接,如圖2所示。

圖2 節(jié)點(diǎn)以環(huán)的形式進(jìn)行連接

(1) 從聯(lián)盟中隨機(jī)選取一個(gè)節(jié)點(diǎn)i作為初始節(jié)點(diǎn),i以及i后序的i+1、i+2、i+3、i+4將作為本輪的候選節(jié)點(diǎn)。

(2) 以環(huán)的形式從i+4開始傳遞其投票信息,后續(xù)每個(gè)節(jié)點(diǎn)將從上寫入其投票狀況,其投票信息使用上文提及的盲簽名進(jìn)行生成,進(jìn)行盲化。

(3) 當(dāng)投票信息傳遞回i節(jié)點(diǎn)時(shí)可確認(rèn)本輪投票結(jié)束,參與競(jìng)選的各節(jié)點(diǎn)依次對(duì)盲簽名結(jié)果進(jìn)行除盲處理,即可統(tǒng)計(jì)得到相應(yīng)的票數(shù)。

(4)i至i+4節(jié)點(diǎn)可觀察到投票的結(jié)果,確定自己是否獲勝,并且對(duì)外傳遞信息。

(5) 參與本輪投票并且成功選出勝利者的節(jié)點(diǎn),將能獲得獎(jiǎng)勵(lì)。

(6) 下一輪的共識(shí)將從i+5開始。

(7) 待下次循環(huán)進(jìn)行至i節(jié)點(diǎn),則可判定一次循環(huán)結(jié)束,重新排列其環(huán)狀結(jié)構(gòu),再次進(jìn)行主節(jié)點(diǎn)的選取。

(8) 勝出節(jié)點(diǎn)進(jìn)入第二階段共識(shí)。

3) 第二階段。由于使用分組的形式,因此將有若干個(gè)勝利節(jié)點(diǎn)進(jìn)入第二階段的共識(shí)。在第二階段中將使用PBFT算法進(jìn)行數(shù)據(jù)的同步,其中主節(jié)點(diǎn)的選取將以j=h%N的形式進(jìn)行選取,h為區(qū)塊鏈的長度,N為參與共識(shí)的節(jié)點(diǎn)個(gè)數(shù),結(jié)束后回到第一輪共識(shí)。

2.2 算法分析

1) 運(yùn)行效率。將此節(jié)點(diǎn)應(yīng)用于規(guī)模較大的聯(lián)盟鏈環(huán)境中,能夠有效降低網(wǎng)絡(luò)中節(jié)點(diǎn)需要進(jìn)行交流的通信量。使用PBFT算法,當(dāng)節(jié)點(diǎn)數(shù)目上升的時(shí)候?qū)?dǎo)致性能的下降。在達(dá)成共識(shí)的過程中,需要進(jìn)行信息的交換,節(jié)點(diǎn)數(shù)目越多需要的數(shù)據(jù)交換量就越多,在未限定節(jié)點(diǎn)數(shù)目的PBFT算法中需要的通信量為O(n2);在節(jié)點(diǎn)數(shù)目為1 000的情況下所需要交換的通信量為1 000 000;改進(jìn)后,由于進(jìn)入PBFT算法的節(jié)點(diǎn)由原來的1 000個(gè)分為現(xiàn)在的5組,每組中只存在一個(gè)節(jié)點(diǎn)的勝出,因此通信量為25,為原本的1/4 000。由于在第一階段中,只需要進(jìn)行一輪投票就能選出勝者,其通信量為O(n)。若基于效率的原因考慮,勝出第一輪進(jìn)入第二輪的節(jié)點(diǎn)可以選擇復(fù)制后續(xù)若干個(gè)區(qū)塊的生成,然后將出塊權(quán)轉(zhuǎn)給下一個(gè)leader節(jié)點(diǎn),此時(shí)整個(gè)系統(tǒng)的運(yùn)行效率與PBFT算法相仿,并且能夠容納更多的節(jié)點(diǎn)。

2) 安全性。由于使用盲簽名的形式進(jìn)行投票,節(jié)點(diǎn)間并不知道彼此間投票的結(jié)果,并且投票結(jié)果不能篡改,這提高了選票結(jié)果的隨機(jī)性。由于投票者并不知道其投票的候選人為哪一位,因此只能隨機(jī)從候選節(jié)點(diǎn)中選取一人進(jìn)行投票,直到最后結(jié)果公布,參與投票的候選節(jié)點(diǎn)才會(huì)知道知道自己所投選的節(jié)點(diǎn)為哪一個(gè)。

3) 獎(jiǎng)勵(lì)機(jī)制。在Pow類型的共識(shí)算法中,獎(jiǎng)勵(lì)機(jī)制是基于挖礦的性質(zhì),節(jié)點(diǎn)進(jìn)行哈希運(yùn)算,成功挖掘出區(qū)塊就能獲得獎(jiǎng)勵(lì)。本文算法由于不存在挖礦這一環(huán)節(jié),可以將獎(jiǎng)勵(lì)的機(jī)制加入至前期投票的過程中,參與投票并且成功票選出勝利的節(jié)點(diǎn)以及勝出節(jié)點(diǎn)將能獲得獎(jiǎng)勵(lì),以降低節(jié)點(diǎn)間的相互競(jìng)爭(zhēng),使系統(tǒng)穩(wěn)定運(yùn)行下去。

4) 硬分叉。由于節(jié)點(diǎn)的最終出塊是基于PBFT算法,因此能夠有效避免分叉的問題。因?yàn)閰^(qū)塊的節(jié)點(diǎn)都是經(jīng)過最終投票來決定的,不存在像Pow算法中節(jié)點(diǎn)同時(shí)挖塊成功所導(dǎo)致的分叉問題。

5) 聯(lián)盟鏈。該算法能在聯(lián)盟鏈環(huán)境下進(jìn)行使用,以此緩解PBFT算法帶來的通信量大的問題,以此容納更多的節(jié)點(diǎn)進(jìn)入網(wǎng)絡(luò)。

6) 使用環(huán)進(jìn)行連接。該算法在分組中使用環(huán)進(jìn)行連接的主要原因在于,分組中的節(jié)點(diǎn)相對(duì)于全網(wǎng)節(jié)點(diǎn),數(shù)量較少,使用環(huán)傳遞數(shù)據(jù)更加高效,若在全網(wǎng)進(jìn)行環(huán)的連接,傳遞投票信息與區(qū)塊信息將受網(wǎng)絡(luò)的嚴(yán)重影響。數(shù)據(jù)的傳遞時(shí)間將隨著節(jié)點(diǎn)數(shù)目的上升而上升,節(jié)點(diǎn)越多這個(gè)環(huán)就越大,不能保證穩(wěn)定的出塊速度。

3 應(yīng) 用

可嘗試將該算法應(yīng)用于物聯(lián)網(wǎng)[11]系統(tǒng)中?,F(xiàn)行的物聯(lián)網(wǎng)系統(tǒng)中,并沒有一個(gè)嚴(yán)格的標(biāo)準(zhǔn),還處于不同的廠商之間互相制定標(biāo)準(zhǔn),并且大多數(shù)為一些性能較弱的設(shè)備。另一方面由于節(jié)點(diǎn)的性能相對(duì)較弱,不能進(jìn)行較為復(fù)雜的共識(shí)算法,如Pow與Pos共識(shí)算法。文獻(xiàn)[2]提出基于物聯(lián)網(wǎng)系統(tǒng)進(jìn)行改造的算法,改變Pow算法的計(jì)算公式,讓節(jié)點(diǎn)更加容易計(jì)算出結(jié)果。我們嘗試從上文中提出的共識(shí)算法出發(fā),提出一種新的基于區(qū)塊鏈物聯(lián)網(wǎng)共識(shí)架構(gòu)。

我們所提出的物聯(lián)網(wǎng)系統(tǒng)將分為兩層:內(nèi)部系統(tǒng)與外部系統(tǒng)。內(nèi)部系統(tǒng)負(fù)責(zé)管理一系列性能相對(duì)較弱的節(jié)點(diǎn),外部系統(tǒng)負(fù)責(zé)管理一系列性能相對(duì)較強(qiáng)的節(jié)點(diǎn)。內(nèi)部系統(tǒng)對(duì)應(yīng)一系列性能較弱的設(shè)備,如:燈、共享自行車等,其主節(jié)點(diǎn)為一系列性能較好的節(jié)點(diǎn),對(duì)應(yīng)一些性能相對(duì)較好、對(duì)于電力不是瓶頸的設(shè)備,如路由器、平板電腦等。

3.1 內(nèi)部系統(tǒng)

內(nèi)部系統(tǒng)的組成為一系列性能相對(duì)較差的節(jié)點(diǎn)以及一部分性能相對(duì)較好的節(jié)點(diǎn),彼此組成環(huán)的形式,其中內(nèi)部系統(tǒng)負(fù)責(zé)維護(hù)一條關(guān)于自身內(nèi)部系統(tǒng)的區(qū)塊鏈用于記錄每一筆交易操作。

性能較差節(jié)點(diǎn):負(fù)責(zé)投票,不負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)以及與外部系統(tǒng)直接交互。若需要數(shù)據(jù),則需向性能較好的節(jié)點(diǎn)發(fā)起查詢操作即可,可部署智能合約,進(jìn)行投票以及數(shù)據(jù)的自動(dòng)轉(zhuǎn)發(fā)至下一個(gè)節(jié)點(diǎn)。當(dāng)發(fā)起主節(jié)點(diǎn)選取時(shí),投票信息在節(jié)點(diǎn)間進(jìn)行傳遞,性能較差的節(jié)點(diǎn)需要調(diào)用智能合約隨機(jī)地從候選地址中進(jìn)行選取,并且對(duì)候選地址生成的信息進(jìn)行盲簽,然后將數(shù)據(jù)傳遞至下一個(gè)節(jié)點(diǎn)中。

性能較好節(jié)點(diǎn):負(fù)責(zé)打包交易,負(fù)責(zé)與外部系統(tǒng)進(jìn)行交互。一般情況下,一個(gè)內(nèi)部系統(tǒng)中將存在若干個(gè)性能較好的節(jié)點(diǎn),彼此間互相參與競(jìng)選成為本回合的勝利節(jié)點(diǎn),彼此對(duì)本系統(tǒng)的所有數(shù)據(jù)進(jìn)行備份,并且與外部系統(tǒng)進(jìn)行交互。基于性能的考慮,一次節(jié)點(diǎn)競(jìng)選成為本回合的勝出節(jié)點(diǎn)后,需要負(fù)責(zé)后續(xù)若干個(gè)區(qū)塊的生成,以此減少節(jié)點(diǎn)間來回投票所帶來的消耗。對(duì)于內(nèi)部系統(tǒng)來說,其效率較高,一旦主節(jié)點(diǎn)被選取成功,后續(xù)任何打包數(shù)據(jù)上鏈的操作,將不需要進(jìn)行耗費(fèi)資源的Pow計(jì)算,只要副本節(jié)點(diǎn)間沒有任何異議,則可直接進(jìn)行數(shù)據(jù)的上鏈。性能較差的節(jié)點(diǎn)只需要接受來自主節(jié)點(diǎn)的指令或者查詢交易記錄即可,無需進(jìn)行數(shù)據(jù)的全量備份。

具體流程如下:

1) 內(nèi)部系統(tǒng)中的每個(gè)節(jié)點(diǎn)將以某種環(huán)的形式進(jìn)行連接,彼此只需知道下一個(gè)節(jié)點(diǎn)的地址。

2) 參與競(jìng)選的i,i+1、i+2、i+3、i+4等若干個(gè)性能較好的節(jié)點(diǎn),發(fā)起競(jìng)選操作,將其公鑰使用盲簽的形式,生成一個(gè)地址,同時(shí)寫進(jìn)一個(gè)區(qū)塊中,連同交易進(jìn)行傳遞。

3) 接收到的節(jié)點(diǎn),將從i到i+4的所生成的數(shù)據(jù)中隨機(jī)選取一個(gè)進(jìn)行盲簽,然后往下一個(gè)區(qū)塊進(jìn)行傳遞。

4) 若下一個(gè)接收到的節(jié)點(diǎn)并不為i,則重復(fù)3)的操作。

5) 當(dāng)區(qū)塊傳遞到i至i+4節(jié)點(diǎn)時(shí),可將區(qū)塊中被盲簽化的數(shù)據(jù)進(jìn)行除盲處理,統(tǒng)計(jì)結(jié)果并選出勝利節(jié)點(diǎn),向網(wǎng)絡(luò)中廣播本輪勝出的節(jié)點(diǎn)。

6) 勝出的節(jié)點(diǎn),將交易進(jìn)行打包,生成區(qū)塊,并且廣播至相鄰的i+1至i+4節(jié)點(diǎn),待若干個(gè)區(qū)塊成功生成后,則重新發(fā)起競(jìng)選操作。

3.2 外部系統(tǒng)

外部系統(tǒng)為一系列性能較好的節(jié)點(diǎn),在這里我們可以理解為不同的系統(tǒng),作為聯(lián)盟間的系統(tǒng)共同維護(hù)著一條聯(lián)盟之間的區(qū)塊間的區(qū)塊鏈。由于節(jié)點(diǎn)數(shù)目相對(duì)內(nèi)部系統(tǒng)較少,因此可直接使用PBFT算法進(jìn)行數(shù)據(jù)的同步與寫入,其中主節(jié)點(diǎn)的選取沿用j=h%N(h仍然為區(qū)塊鏈的長度,N為涉及到的廠商的數(shù)目)的形式進(jìn)行選取。基于視圖切換帶來消耗等原因,假如在外部系統(tǒng)的主節(jié)點(diǎn)不存在作惡的情況下,將負(fù)責(zé)若干個(gè)回合區(qū)塊的生成,再重新選取。

3.3 跨鏈操作

外部系統(tǒng)可作為系統(tǒng)間跨鏈操作的媒介??珂溨傅氖莾蓚€(gè)相互獨(dú)立的區(qū)塊鏈系統(tǒng)進(jìn)行互操作,大多用于虛擬貨幣的交換。文獻(xiàn)[12]指出了區(qū)塊鏈跨鏈系統(tǒng)中架構(gòu),在物聯(lián)網(wǎng)系統(tǒng)中我們可以使用內(nèi)部系統(tǒng)的主節(jié)點(diǎn)作為內(nèi)部系統(tǒng)以及外部系統(tǒng)之間的調(diào)節(jié)點(diǎn)。在此可以理解為兩個(gè)互為獨(dú)立的系統(tǒng)之間的互操作或者兩個(gè)不同的物聯(lián)網(wǎng)系統(tǒng)之間數(shù)據(jù)的傳遞,區(qū)塊鏈技術(shù)保證了數(shù)據(jù)的正確性。由于使用兩層的形式,任何來自外部的指令都能經(jīng)被內(nèi)部系統(tǒng)的主節(jié)點(diǎn)攔截,并且由于使用了區(qū)塊鏈技術(shù)可溯源不可篡改等性質(zhì),保證了交易數(shù)據(jù)的真實(shí)性,操作一旦發(fā)生并且上鏈,將不能被篡改與抵賴,可使用智能合約的形式進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換。

具體流程如下:

1) 首先內(nèi)部系統(tǒng)A中的某一節(jié)點(diǎn)向當(dāng)前的leader節(jié)點(diǎn)發(fā)起一筆向外部節(jié)點(diǎn)進(jìn)行操作。

2) leader將其廣播至外部系統(tǒng)中,涉及到的相關(guān)內(nèi)部系統(tǒng)B的主節(jié)點(diǎn),對(duì)相應(yīng)信息進(jìn)行驗(yàn)證,若無任何異議,則發(fā)送至相應(yīng)的內(nèi)部節(jié)點(diǎn)中進(jìn)行操作。

3) 相應(yīng)的內(nèi)部節(jié)點(diǎn)接收到請(qǐng)求后,若確認(rèn)無誤執(zhí)行操作,并要求主節(jié)點(diǎn)將其交易打包進(jìn)塊,內(nèi)部系統(tǒng)B的主節(jié)點(diǎn)將數(shù)據(jù)打包上鏈,結(jié)果最終寫進(jìn)區(qū)塊鏈中。

4) 外部系統(tǒng)接收到該結(jié)果已被B系統(tǒng)執(zhí)行后,將該交易記錄上鏈,并且通知A系統(tǒng)。

5) A系統(tǒng)將交易上鏈,確定本次跨鏈操作執(zhí)行完畢。

3.4 出錯(cuò)處理

1) 若中間某一環(huán)節(jié)出現(xiàn)錯(cuò)誤,整個(gè)系統(tǒng)將進(jìn)行回滾,若在外部系統(tǒng)中涉及到的相關(guān)節(jié)點(diǎn)將操作回絕,則內(nèi)部系統(tǒng)A將立即得到反饋,并將其反饋至相應(yīng)的內(nèi)部節(jié)點(diǎn)。若此筆操作由于某種原因被取消,交易信息可自行選擇記錄上鏈。

2) 若內(nèi)部系統(tǒng)B中將操作進(jìn)行回絕,則B中的節(jié)點(diǎn)則會(huì)將操作失敗以及其原因回調(diào)給內(nèi)部系統(tǒng)A,后續(xù)操作如1)。

3.5 整體優(yōu)勢(shì)

1) 由于使用了三層區(qū)塊鏈的形式,其操作數(shù)據(jù)將全程上鏈,此時(shí)各個(gè)區(qū)域的節(jié)點(diǎn)都能從區(qū)塊鏈中獲取交易信息,若對(duì)歷史操作記錄存疑,可直接在鏈上進(jìn)行查詢。

2) 該系統(tǒng)相對(duì)穩(wěn)定,若系統(tǒng)出現(xiàn)宕機(jī)或其他問題,則可由其他性能相差無幾的節(jié)點(diǎn)接替其主節(jié)點(diǎn)的位置。性能較差的節(jié)點(diǎn)并不需要進(jìn)行區(qū)塊鏈的維護(hù),只需要接受來自主節(jié)點(diǎn)的指令,以及進(jìn)行主節(jié)點(diǎn)的選取。

3) 由于使用leader節(jié)點(diǎn)代為跟蹤后續(xù)的操作,因此內(nèi)部系統(tǒng)中發(fā)起交易的節(jié)點(diǎn)可以繼續(xù)做相應(yīng)的操作,等待事件執(zhí)行完畢后,會(huì)得到回傳。

4) 使用層層驗(yàn)證的機(jī)制,涉及到三個(gè)環(huán)節(jié)的校驗(yàn):內(nèi)部系統(tǒng)A的主節(jié)點(diǎn),內(nèi)部系統(tǒng)B的主節(jié)點(diǎn),以及內(nèi)部系統(tǒng)相應(yīng)執(zhí)行的節(jié)點(diǎn)。這保證了跨域系統(tǒng)中的節(jié)點(diǎn)不會(huì)頻繁收到惡意的指令。

5) 所有存儲(chǔ)在區(qū)塊上的信息,使用Merkle Tree(默克爾樹)[3]的形式進(jìn)行組織,用于快速驗(yàn)證和快速查找。

6)使用了智能合約進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換,解決不同廠商之間存在的數(shù)據(jù)格式不一致的問題。

7)為了防止節(jié)點(diǎn)的作惡,可使用保證金的形式,每當(dāng)涉及到跨鏈的操作,需要向內(nèi)部系統(tǒng)中的主節(jié)點(diǎn)發(fā)一筆交易以及保證金,其保證金在交易已經(jīng)確定正式被執(zhí)行之前將鎖定。隨著操作記錄的上鏈,保證金將解鎖。在確定交易記錄被上鏈之前,可使用智能合約對(duì)保證金進(jìn)行鎖定。

8) 使用分域的形式,可實(shí)現(xiàn)兩個(gè)物聯(lián)網(wǎng)設(shè)備域之間跨域操作,使用leader節(jié)點(diǎn)進(jìn)行后續(xù)交易的跟蹤,各個(gè)域內(nèi)的其他節(jié)點(diǎn)可繼續(xù)其自身的其他任務(wù),而無需時(shí)刻跟蹤其發(fā)出去的操作,待后序操作成功leader節(jié)點(diǎn)將會(huì)告知。

4 結(jié) 語

本文提出一種兩階段式的共識(shí)算法,在第一階段中使用投票的形式選取勝利節(jié)點(diǎn),在第二階段中進(jìn)行PBFT算法實(shí)現(xiàn)區(qū)塊的生成,解決了PBFT算法無法適用于節(jié)點(diǎn)規(guī)模較大的情況。未來將嘗試從第二階段進(jìn)行改進(jìn)?;诖怂惴ㄌ岢鲆环N物聯(lián)網(wǎng)設(shè)備的架構(gòu)體系,內(nèi)部系統(tǒng)組織性能較低的節(jié)點(diǎn),只負(fù)責(zé)隨機(jī)進(jìn)行投票,選舉出主節(jié)點(diǎn)和執(zhí)行主節(jié)點(diǎn),或者對(duì)外部系統(tǒng)分發(fā)命令,外部系統(tǒng)使用性能較好的節(jié)點(diǎn)管理內(nèi)部系統(tǒng)的數(shù)據(jù)上鏈、外部系統(tǒng)的數(shù)據(jù)上鏈以及跨鏈操作等,使用智能合約進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換,用于解決各個(gè)產(chǎn)商之間數(shù)據(jù)格式不兼容的問題。

猜你喜歡
共識(shí)區(qū)塊聯(lián)網(wǎng)
“身聯(lián)網(wǎng)”等五則
共識(shí) 共進(jìn) 共情 共學(xué):讓“溝通之花”綻放
區(qū)塊鏈:一個(gè)改變未來的幽靈
科學(xué)(2020年5期)2020-11-26 08:19:12
論思想共識(shí)凝聚的文化向度
區(qū)塊鏈:主要角色和衍生應(yīng)用
科學(xué)(2020年6期)2020-02-06 08:59:56
商量出共識(shí)
搶占物聯(lián)網(wǎng)
通信世界(2018年27期)2018-10-16 09:02:56
區(qū)塊鏈+媒體業(yè)的N種可能
讀懂區(qū)塊鏈
別讓“PX共識(shí)”在爆炸中瓦解
武陟县| 青阳县| 雷州市| 永登县| 八宿县| 辉县市| 黔西| 沈丘县| 岳普湖县| 兴宁市| 东城区| 德化县| 阜康市| 阜新市| 招远市| 治多县| 台东县| 定兴县| 平乡县| 通道| 四会市| 儋州市| 全椒县| 历史| 华容县| 新民市| 建水县| 松原市| 巧家县| 怀远县| 玉门市| 平顶山市| 舒兰市| 云阳县| 西城区| 烟台市| 汉中市| 鄂托克旗| 临安市| 福州市| 佳木斯市|