• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    區(qū)塊鏈實用拜占庭容錯共識算法的改進(jìn)

    2019-09-04 10:14:27甘俊李強(qiáng)陳子豪張超
    計算機(jī)應(yīng)用 2019年7期

    甘俊 李強(qiáng) 陳子豪 張超

    摘 要:針對應(yīng)用于聯(lián)盟鏈的實用拜占庭容錯(PBFT)共識算法網(wǎng)絡(luò)結(jié)構(gòu)靜態(tài)、主節(jié)點選取隨意和通信開銷較大的問題,提出了一種改進(jìn)的實用拜占庭容錯(EPBFT)共識算法。首先,給共識節(jié)點設(shè)置一系列活動狀態(tài)使得節(jié)點通過狀態(tài)轉(zhuǎn)換在系統(tǒng)中擁有完整生命周期,由此節(jié)點可以動態(tài)地加入和退出,系統(tǒng)擁有動態(tài)的網(wǎng)絡(luò)結(jié)構(gòu)。其次,對PBFT的主節(jié)點選取方式加以改進(jìn),增加以最長鏈為選舉原則的主節(jié)點選舉過程。在主節(jié)點選舉完成之后,通過數(shù)據(jù)同步和主節(jié)點驗證過程進(jìn)一步保證主節(jié)點的可信性。最后,優(yōu)化PBFT算法的共識流程以提高共識效率,使得EPBFT算法的通信開銷在視圖變更較少發(fā)生的情況下降低為PBFT算法的1/2。實驗結(jié)果表明,EPBFT算法具有較好的有效性和實用性。

    關(guān)鍵詞:實用拜占庭容錯;聯(lián)盟鏈;主節(jié)點;選舉

    Abstract: Since Practical Byzantine Fault Tolerance (PBFT) consensus algorithm applied to the alliance chain has the problems of static network structure, random selection of master node and large communication overhead, an Evolution of Practical Byzantine Fault Tolerance (EPBFT) consensus algorithm was proposed. Firstly, a series of activity states were set for consensus nodes, making the nodes have complete life cycle in the system through state transition, so that the nodes were able to dynamically join and exit while the system has a dynamic network structure. Secondly, the selection method of master node of PBFT was improved with adding the election process of master node with the longest chain as the election principle. After the election of master node, the reliability of master node was further ensured through data synchronization and master node verification process. Finally, the consensus process of PBFT algorithm was optimized to improve the consensus efficiency, thus the communication overhead of EPBFT algorithm was reduced to 1/2 of that of PBFT algorithm with little view changes. The experimental results show that EPBFT algorithm has good effectiveness and practicability.

    Key words: Practical Byzantine Fault Tolerance (PBFT); alliance chain; master node; election

    0 引言

    區(qū)塊鏈?zhǔn)且环N新型的去中心化協(xié)議,它通過將數(shù)字加密[1]、共識算法、分布式存儲、時間戳[2]等技術(shù)結(jié)合構(gòu)建去中心化的分布式系統(tǒng),其中共識算法的作用是為了解決拜占庭將軍[3]問題。拜占庭將軍問題抽象于現(xiàn)實世界,在點對點(Peer to Peer, P2P)網(wǎng)絡(luò)[4]中,可能出現(xiàn)硬件故障、網(wǎng)絡(luò)擁堵甚至惡意攻擊等不可預(yù)知的問題。另外系統(tǒng)在任意時刻可能存在多個提案,因為提案的成本很低。共識算法除了要處理這些失效之外,還要完成提案的最終一致性,在區(qū)塊鏈中有著非常重要的作用。

    關(guān)于共識算法的研究很早便已經(jīng)開始,最早由Pease等[5]和Lamport等[6]在20世紀(jì)80年代通過拜占庭將軍問題進(jìn)行描述和分析,提出了著名的拜占庭容錯(Byzantine Fault Tolerance, BFT)算法。不同于比特幣系統(tǒng)“挖礦”的工作量證明(Proof of Work, PoW)[7]系列共識算法(達(dá)成共識的概率上的最終一致),BFT類協(xié)議依靠節(jié)點之間相互傳遞消息對提案達(dá)成確定性共識結(jié)果;然而也是由于這些特性造成節(jié)點間需要兩兩之間遞歸傳遞指數(shù)級復(fù)雜度的消息,不太具有可實際操作性,而且節(jié)點的加入和退出過程需要進(jìn)行特別處理。這些研究起初常被人們忽視。直到區(qū)塊鏈技術(shù)和比特幣的出現(xiàn),BFT算法重新引起關(guān)注,因為這一算法雖然存在很多缺點,但它為解決拜占庭問題提供了一種不同于PoW那樣的需要耗費巨大算力新思路,為以后的實用拜占庭容錯(Practical Byzantine Fault Tolerance, PBFT)算法的出現(xiàn)作出了準(zhǔn)備。

    在1999年,Castro等[8]提出了實用拜占庭容錯(Practical Byzantine Fault Tolerance, PBFT)共識算法,改進(jìn)于BFT算法,繼承了它的優(yōu)點,同時將算法復(fù)雜度由指數(shù)級降為多項式級。由此實用拜占庭容錯算法在實際系統(tǒng)應(yīng)用中變得可行。PBFT算法是基于狀態(tài)機(jī)副本復(fù)制的算法,每個狀態(tài)機(jī)副本保存服務(wù)狀態(tài),實現(xiàn)客戶合法請求,除了交易之外,還可以完成其他類型的操作,應(yīng)用范圍廣泛。在系統(tǒng)中存在(n-1)/3的數(shù)量的錯誤節(jié)點的情況下,仍可保證系統(tǒng)安全性和活性,正確地達(dá)成分布式共識。

    然而現(xiàn)有的PBFT算法還存在一些不足。首先,其網(wǎng)絡(luò)結(jié)構(gòu)是靜態(tài)類型,如果動態(tài)增加節(jié)點,必須重啟應(yīng)用,造成不必要的損失,影響系統(tǒng)可用性,尤其在某些行業(yè),經(jīng)常性的重啟系統(tǒng)是不能忍受的。PBFT算法中主節(jié)點的選舉方式是按編號依次輪流作主節(jié)點,這種主節(jié)點的選舉方式較為隨意,在選舉成功主節(jié)點后也沒有對主節(jié)點的真?zhèn)涡赃M(jìn)行驗證,使得選舉出來的主節(jié)點很有可能是惡意節(jié)點,具有一定的安全隱患,盡管在后續(xù)的共識過程中主節(jié)點的惡意性有可能被從屬節(jié)點識破并通過視圖變更將其推翻,但是仍然會造成一定的損失,頻繁的視圖變更也會增加系統(tǒng)開銷,降低系統(tǒng)效率。三階段廣播過程,需要比較大的網(wǎng)絡(luò)傳輸和通信開銷,要進(jìn)一步優(yōu)化。在主節(jié)點選舉成功后也沒有完善的數(shù)據(jù)同步過程,在每一個視圖變更后,集群中的節(jié)點可能出現(xiàn)保存的副本數(shù)據(jù)有多有少的情況,因為由于網(wǎng)絡(luò)等原因會導(dǎo)致各個節(jié)點的進(jìn)度不一致,從而導(dǎo)致狀態(tài)不一致[9],所謂狀態(tài)一致,即是指交易編號、區(qū)塊高度、視圖號等信息都保持一致,所以在新的主節(jié)點選舉出來以后,需要進(jìn)行集群中節(jié)點的數(shù)據(jù)同步。

    本文針對現(xiàn)有的PBFT算法網(wǎng)絡(luò)結(jié)構(gòu)類型靜態(tài)、主節(jié)點選舉方式隨意、不能保證主節(jié)點可信性、網(wǎng)絡(luò)開銷比較大、缺少完善的數(shù)據(jù)同步過程等問題,提出一種改進(jìn)實用拜占庭容錯(Evolution of Practical Byzantine Fault Tolerance, EPBFT)共識算法模型。參考原子消息廣播算法ZAB(ZooKeeper Atomic Broadcast)[10],針對PBFT算法特點,將集群中的節(jié)點分為領(lǐng)導(dǎo)者與跟隨者兩種角色,依情況使節(jié)點處于不同的狀態(tài),同時依據(jù)節(jié)點狀態(tài)的不同決定節(jié)點是否能夠進(jìn)行共識過程,從而使得集群中可以動態(tài)加入和退出節(jié)點;設(shè)計一種新的選舉方式,在原有的PBFT算法基礎(chǔ)上改變主節(jié)點的選舉方式,不再按照編號選擇主節(jié)點,而是選舉出擁有處理過最大視圖號以及最大編號的請求的節(jié)點作為主節(jié)點,在數(shù)據(jù)同步階段,可以方便進(jìn)行數(shù)據(jù)同步;在主節(jié)點選舉完成之后增加一個數(shù)據(jù)同步及驗證階段,在進(jìn)行數(shù)據(jù)同步的同時對所同步的數(shù)據(jù)進(jìn)行驗證,若驗證的數(shù)據(jù)通過,則可以確定新的主節(jié)點為可信節(jié)點,正式承認(rèn)選舉出的新的主節(jié)點,開始新一輪的共識過程。確認(rèn)階段是對準(zhǔn)備階段的再確認(rèn),防止視圖變更發(fā)生于準(zhǔn)備階段后產(chǎn)生的不一致。在聯(lián)盟鏈的環(huán)境中,節(jié)點有監(jiān)督,網(wǎng)絡(luò)較穩(wěn)定,視圖變更情況并不會頻繁發(fā)生,且在視圖變更后增加了數(shù)據(jù)同步及驗證過程,保證了狀態(tài)一致性,所以可以省略三階段中的最后的確認(rèn)階段。本文貢獻(xiàn)如下:

    1)改進(jìn)PBFT算法中主節(jié)點選舉方式,改原來的依據(jù)節(jié)點編號選舉為擁有處理過最大視圖號以及最大編號的請求的節(jié)點選舉,也就是最長鏈選舉。使得主節(jié)點的選舉方式更加合理,選舉出的主節(jié)點更加可信。

    2)增加數(shù)據(jù)同步及驗證階段,在主節(jié)點選舉完成之后增加數(shù)據(jù)同步及驗證階段,進(jìn)一步驗證新主節(jié)點的可信性,在完成數(shù)據(jù)同步的同時完成對新選舉出的主節(jié)點的真?zhèn)涡赃M(jìn)行驗證,若新的主節(jié)點可信,則開始新一輪的共識;反之,重新進(jìn)行選舉過程。

    3)在前兩點基礎(chǔ)上省去原來的PBFT算法中的確認(rèn)階段,由此可以減少網(wǎng)絡(luò)和時間開銷,使算法更加高效。

    4)改進(jìn)原PBFT靜態(tài)結(jié)構(gòu)為動態(tài)結(jié)構(gòu),設(shè)計一套節(jié)點加入和退出集群以及工作的完整周期,通過給節(jié)點賦予領(lǐng)導(dǎo)者與跟隨者兩種角色,以及不同狀態(tài),使得集群中節(jié)點可以動態(tài)地加入和退出,無需重啟整個集群,提升整個集群的穩(wěn)定性和可用性。

    5)實現(xiàn)本文所寫的改進(jìn)的算法模型,并通過實驗驗證,新的改進(jìn)的PBFT算法模型在保證數(shù)據(jù)可信性和安全性的前提下,有效地降低了共識需要花費的時延,提高了交易吞吐量。

    1 相關(guān)工作

    拜占庭容錯算法的研究很早就已開始,但近年隨著區(qū)塊鏈技術(shù)的落地才在計算機(jī)領(lǐng)域流行起來。特別是由于PBFT的提出使得拜占庭容錯算法擁有較高的效率和安全性,得以應(yīng)用于實際系統(tǒng)中實現(xiàn),針對PBFT算法的改進(jìn)研究明顯增多。對已有的BFT類共識進(jìn)行研究,按照改進(jìn)思路的不同分類,主要可以歸納為3大類方向[11-12]:1)針對非拜占庭錯誤場景優(yōu)化;2)針對拜占庭錯誤場景優(yōu)化;3)為公鏈應(yīng)用優(yōu)化。

    首先是針對假設(shè)系統(tǒng)無拜占庭節(jié)點的場景進(jìn)行優(yōu)化,即假設(shè)系統(tǒng)中基本不存在惡意節(jié)點,允許節(jié)點存在宕機(jī)行為,在這種情況下對BFT算法進(jìn)行簡化或優(yōu)化。最出名便是以Paxos[13]、Raft[14]為代表的傳統(tǒng)分布式一致性算法。Raft算法由Paxos算法簡化而來,經(jīng)過改進(jìn)簡化Raft算法易于實現(xiàn)。HQ(Hybrid Quorum)協(xié)議[15]參考并優(yōu)化了PBFT協(xié)議,針對無競爭的情況簡化通信。如果有競爭,性能也退化為和PBFT類似。應(yīng)用于ZooKeeper中的ZAB算法改進(jìn)自Paxos,共識過程簡單有效,已被廣泛用于分布式協(xié)調(diào)一致性過程,擁有較高的吞吐量和較低的時延;但由于此類算法面向的是分布式系統(tǒng)數(shù)據(jù)庫和日志等存儲領(lǐng)域,不能解決拜占庭容錯問題,所以不適合于區(qū)塊鏈環(huán)境。

    然后是針對拜占庭錯誤場景進(jìn)行優(yōu)化,這類優(yōu)化基本在PBFT的基礎(chǔ)上進(jìn)行改進(jìn),由于要處理拜占庭錯誤節(jié)點,必然要增加相互之間確認(rèn)的通信,出現(xiàn)明顯的性能下降。Tangaroa算法[16]具有Raft簡單易理解的優(yōu)點,同時兼具拜占庭容錯性。由Tangaroa演變出另一種稱為可擴(kuò)展拜占庭容錯協(xié)議——ScalableBFT[17],能夠?qū)崿F(xiàn)比Tangaroa更好的性能。對PBFT改進(jìn)的系列算法多用于聯(lián)盟鏈中。

    在為公鏈應(yīng)用優(yōu)化方面,Tendermint[18]出現(xiàn)于加密貨幣之后,內(nèi)置了簡單的數(shù)字貨幣,以此為基礎(chǔ)實現(xiàn)了股權(quán)證明(Proof of Stake, PoS)與PBFT的結(jié)合,節(jié)點需要繳納保證金,如果作惡保證金就會被沒收。相似地在2016年,小蟻提出的代理拜占庭容錯(delegated Byzantine Fault Tolerant, dBFT)算法,該算法同樣在PBFT的基礎(chǔ)上借鑒了PoS算法,共識節(jié)點按照節(jié)點的權(quán)益來選出,該算法一定程度改進(jìn)了PoS缺乏最終一致性的問題,使其能夠更適合金融場景;但這一方式也受到共識節(jié)點數(shù)量有限、中心化程度高的質(zhì)疑。2016年,Micali等[19]提出了一種快速拜占庭容錯共識算法——AlgoRand,在該算法中,共識的驗證者和領(lǐng)導(dǎo)者通過密碼抽簽技術(shù)選出,同時還構(gòu)想出一個新協(xié)議完成區(qū)塊的共識。

    此外,以比特幣為應(yīng)用的PoW算法不能適應(yīng)一般應(yīng)用的高吞吐量和及時處理的需要。為應(yīng)對PoW要求的高算力帶來的巨大的資源浪費問題,提出權(quán)益證明為代表的共識算法PoS[20],集群由可信度較高的節(jié)點組成,共識節(jié)點的選取標(biāo)準(zhǔn)依情況而定,但都是為了最大限度保證節(jié)點的可信度,但可能導(dǎo)致權(quán)益集中的問題,對交易吞吐量、延遲、區(qū)塊大小等方面也較少關(guān)注。

    可以看出,出現(xiàn)了較多PoW系列算法與PBFT結(jié)合的方式提高共識節(jié)點可信度,但是通過授權(quán)投票產(chǎn)生“超級節(jié)點”的方式會加大系統(tǒng)中心化程度,這顯然和區(qū)塊鏈初衷是相違背的。另外以Paxos、Raft為代表的傳統(tǒng)分布式一致性算法無法應(yīng)對拜占庭容錯問題,但由于其共識效率高的特點,越來越多地被拿來與PBFT相結(jié)合,這給共識算法改進(jìn)帶來新的啟發(fā)。本文提出的改進(jìn)算法同樣是基于聯(lián)盟鏈的前提下,具體的共識節(jié)點的選取可以依照不同的應(yīng)用場景而定。共識節(jié)點的準(zhǔn)入設(shè)置一定程度保證了可信度,同時增加的對主節(jié)點的選舉和驗證過程在不提高系統(tǒng)中心化程度的基礎(chǔ)上保證主節(jié)點的可信度,同時也保證了共識速度不受影響。賦予節(jié)點生命周期使節(jié)點能動態(tài)加入和退出,改進(jìn)三階段廣播流程,縮短交易確認(rèn)時延,提高了區(qū)塊吞吐量。

    2 PBFT算法分析

    2.1 BFT算法及流程

    正PBFT是一種狀態(tài)機(jī)副本復(fù)制算法,也就是將服務(wù)作為狀態(tài)機(jī)來建模,在分布式系統(tǒng)中,狀態(tài)機(jī)在不同的節(jié)點復(fù)制副本,所以,最初PBFT算法是用在分布式系統(tǒng)領(lǐng)域,并不是用在區(qū)塊鏈領(lǐng)域的。在PBFT算法中,一個主節(jié)點領(lǐng)導(dǎo)的共識過程處于一個視圖v之中,視圖是連續(xù)編號的整數(shù),在各個視圖之中,都存在三種角色,分別是客戶端、主節(jié)點、從節(jié)點。主節(jié)點和從節(jié)點都是備份節(jié)點,因為它們都進(jìn)行數(shù)據(jù)備份,它們各自的功能如下。

    1)客戶端??蛻舳薱是請求的發(fā)送方,發(fā)送的請求格式為〈REQUEST,o,t,c〉,其中o是請求執(zhí)行的操作,t是時間戳,用來保證請求的唯一性,只會被執(zhí)行一次,同時還使得客戶端發(fā)送的請求是全排序的,后發(fā)送的請求的時間戳一定比之前發(fā)送的請求的時間戳更高。

    2)主節(jié)點。主節(jié)點主要負(fù)責(zé)接收客戶端發(fā)來的請求,同時對這些請求進(jìn)行排序,分配編號,再向集群中的從節(jié)點廣播請求。

    3)從節(jié)點。從節(jié)點主要負(fù)責(zé)接送收此處是否應(yīng)為接收主節(jié)點和其他從節(jié)點發(fā)來的消息,進(jìn)行相應(yīng)的驗證,只會之后是否應(yīng)為之后再執(zhí)行對應(yīng)的操作,最后將共識結(jié)果發(fā)回客戶端。

    所有節(jié)點組成的集合用大寫字母R表示,那么集合中的每一個副本可以用0到|R|-1的整數(shù)表示,集合的理想節(jié)點數(shù)為:

    其中: f是失效節(jié)點的最大個數(shù);|R|是節(jié)點數(shù),雖然可以部署多于此數(shù)的節(jié)點,但是這樣只會降低系統(tǒng)性能,并不能對共識過程有幫助。

    主節(jié)點的選取由如下公式確定:

    其中:p是副本編號,v是視圖號,當(dāng)主節(jié)點失效或者被從節(jié)點推翻時,啟動視圖變更,依照此公式選取新的主節(jié)點。

    接下來介紹PBFT算法的流程,總共包括五個階段,分別是請求、預(yù)準(zhǔn)備、準(zhǔn)備、確認(rèn)、回復(fù)。其中主要的階段是中間三個,即預(yù)準(zhǔn)備、準(zhǔn)備、確認(rèn)。下面介紹這五個階段:

    1)請求階段。當(dāng)客戶端c向主節(jié)點p發(fā)送請求消息m。

    2)預(yù)準(zhǔn)備階段。主節(jié)點P接收到客戶端c發(fā)來的請求m時,主節(jié)點為消息m分配一個編號n,然后向所有的從節(jié)點廣播預(yù)準(zhǔn)備消息,預(yù)準(zhǔn)備消息的格式為〈〈PRE-PREPARE,v,n,d〉,m〉,其中,v是視圖編號,d是請求消息m的摘要。

    3)準(zhǔn)備階段。節(jié)點在接收到預(yù)準(zhǔn)備消息時會對其進(jìn)行檢驗,如果同意預(yù)準(zhǔn)備消息,則進(jìn)入準(zhǔn)備階段;如果不同意,則什么也不做。節(jié)點在進(jìn)入準(zhǔn)備階段后向除自己以外的其他節(jié)點廣播準(zhǔn)備消息,同時將預(yù)準(zhǔn)備和準(zhǔn)備消息寫入消息日志。準(zhǔn)備消息格式為〈PREPARE,v,n,d,i〉,其中i是節(jié)點自身編號。準(zhǔn)備階段完成的標(biāo)志為收到2f+1個從不同副本節(jié)點收到的與預(yù)準(zhǔn)備消息一致的準(zhǔn)備消息。對副本節(jié)點驗證預(yù)準(zhǔn)備和準(zhǔn)備消息主要檢查有:視圖編號v、消息序號n和摘要d,以及水線,水線作用是防止一個失效節(jié)點使用一個很大的序號消耗序號空間。

    4)確認(rèn)階段。當(dāng)節(jié)點完成準(zhǔn)備階段后,進(jìn)入確認(rèn)階段,此時節(jié)點向除自己以外的所有節(jié)點發(fā)送確認(rèn)消息,確認(rèn)消息格式為〈COMMIT,v,n,D(m),i〉,每個節(jié)點接收確認(rèn)消息進(jìn)行的檢查有:簽名正確,消息的視圖號與當(dāng)前視圖號相同,消息的序號滿足水線的條件。定義確認(rèn)階段完成的條件為節(jié)點i已經(jīng)接收了包括自身在內(nèi)2f+1個確認(rèn)消息且與預(yù)準(zhǔn)備消息一致。

    5)回復(fù)階段。當(dāng)節(jié)點完成確認(rèn)階段后,向客戶端發(fā)送回復(fù)消息〈REPLY,v,t,c,i,r〉,其中r是請求最后的執(zhí)行結(jié)果??蛻舳酥挥惺盏絝+1個不同節(jié)點發(fā)來的同樣響應(yīng)時才認(rèn)為請求正確執(zhí)行成功。

    PBFT完整流程如圖1所示。

    2.2 PBFT算法不足點分析

    從對PBFT流程的詳細(xì)分析可以看出,現(xiàn)有的PBFT算法具有以下幾點不足。

    1)客戶端只能向主節(jié)點發(fā)送請求,若請求消息過多,可能造成主節(jié)點過載,可用性降低,不適合區(qū)塊鏈的P2P網(wǎng)絡(luò)環(huán)境。

    2)主節(jié)點選取方式較為隨意,不保證主節(jié)點正確性,若出現(xiàn)連續(xù)選舉出的主節(jié)點為惡意節(jié)點,則將極大浪費系統(tǒng)資源,降低系統(tǒng)可靠性和安全性;沒有較為完善的備份數(shù)據(jù)的同步過程,隨著時間的推移,不同節(jié)點之間的數(shù)據(jù)差異越來越大。

    3)沒有靈活的共識節(jié)點加入和退出機(jī)制,使得節(jié)點在加入或退出集群時很不靈活,特別是在集群中節(jié)點較多或者節(jié)點變更比較頻繁的情況下,系統(tǒng)將更加難以應(yīng)對,大幅度降低了系統(tǒng)可用性。

    4)三階段廣播,包括一次單節(jié)點廣播,加兩次全節(jié)點全網(wǎng)廣播,特別是后兩次全節(jié)點廣播,非常消耗網(wǎng)絡(luò)帶寬,在區(qū)塊鏈這樣的P2P環(huán)境下,若請求過頻,容易造成網(wǎng)絡(luò)擁堵。假設(shè)全網(wǎng)節(jié)點數(shù)為N,則完成一次三階段共識過程,總共需要進(jìn)行消息傳遞的次數(shù)Z為:

    顯然,當(dāng)集群中節(jié)點較多時,消息傳遞次數(shù)將急劇增加。

    3 EPBFT算法設(shè)計與實現(xiàn)

    3.1 整體思想

    經(jīng)典的PBFT算法基于狀態(tài)機(jī)復(fù)制原理,最初用于分布式文件系統(tǒng)協(xié)調(diào)一致,除了關(guān)注解決拜占庭容錯問題之外,還著重解決所有副本節(jié)點在全局都執(zhí)行相同順序的請求操作序列,所以在將PBFT算法應(yīng)用于區(qū)塊鏈系統(tǒng)中時有諸多地方需要改進(jìn)以適應(yīng)區(qū)塊鏈系統(tǒng)。在聯(lián)盟鏈系統(tǒng)中節(jié)點的進(jìn)入經(jīng)歷了相應(yīng)的身份認(rèn)證機(jī)制,如基于第三方的身份認(rèn)證、純分布式的身份認(rèn)證等結(jié)合密碼學(xué)技術(shù)可以有效防止女巫攻擊問題。根據(jù)第2章對PBFT算法的分析,結(jié)合區(qū)塊鏈系統(tǒng)實際應(yīng)用情況,提出以下幾點主要改進(jìn)方案:

    1)改變客戶端單點提交請求到主節(jié)點方案,而是向全網(wǎng)廣播附上簽名的交易數(shù)據(jù)。這樣的方式更適合P2P環(huán)境。

    2)增加主節(jié)點選舉過程,在主節(jié)點宕機(jī)或者被從節(jié)點“推翻之后”,進(jìn)行主節(jié)點選舉,選舉標(biāo)準(zhǔn)按照最長鏈原則,選取擁有處理過最大視圖號與最大編號請求的節(jié)點為新的主節(jié)點。

    3)增加數(shù)據(jù)同步及驗證過程,在主節(jié)點選舉完成后進(jìn)行數(shù)據(jù)同步,同步時從節(jié)點對同步數(shù)據(jù)進(jìn)行驗證,若驗證通過,才正式承認(rèn)新的主節(jié)點,開始下一輪共識過程。

    4)通過給節(jié)點設(shè)置一系列狀態(tài),在不同的狀態(tài)節(jié)點擁有不同的行為,共識節(jié)點通過在不同狀態(tài)之間的轉(zhuǎn)換從而在集群中擁有完整生命周期,從節(jié)點與主節(jié)點通過心跳保持聯(lián)系,從而使集群中的節(jié)點可以動態(tài)地加入和退出,使得在節(jié)點變動時不必重啟系統(tǒng),增加系統(tǒng)可用性。節(jié)點的狀態(tài)轉(zhuǎn)換過程如圖2所示。

    5)去掉三階段中的確認(rèn)階段,PBFT的確認(rèn)階段作用是確保其他節(jié)點都已經(jīng)收到足夠多的信息來達(dá)成共識。這一階段發(fā)送的COMMIT消息沒有同意或者不同意的信息,只是起一個統(tǒng)計票數(shù)的作用,在PBFT三階段共識過程中那些處于預(yù)準(zhǔn)備和準(zhǔn)備階段的消息在視圖變更發(fā)生后將被丟棄。一個消息完成了確認(rèn)階段說明已經(jīng)有足夠多的節(jié)點都完成了準(zhǔn)備階段,因此確認(rèn)階段保證了PBFT在更換主節(jié)點后減少數(shù)據(jù)同步操作直接可以進(jìn)入下一個視圖狀態(tài)執(zhí)行新的共識過程(這并不能完全消除不一致,因為COMMIT消息同樣可能延遲甚至丟失)。PBFT算法是解決傳統(tǒng)分布式系統(tǒng)容錯,確認(rèn)階段其實是對準(zhǔn)備階段的一種“確認(rèn)”。當(dāng)消息完成準(zhǔn)備階段之后即說明該消息已經(jīng)被合法數(shù)量的節(jié)點驗證通過,即為系統(tǒng)所共識,但是由于存在網(wǎng)絡(luò)延遲等不確定因素,可能存在某些節(jié)點不能同時完成準(zhǔn)備階段,如果在準(zhǔn)備階段之后發(fā)生視圖變更,將會導(dǎo)致不一致性。在聯(lián)盟鏈區(qū)塊鏈環(huán)境,需要保證的是節(jié)點具有相同的初始狀態(tài),也就是具有相同區(qū)塊高度和視圖號,這兩者可以通過區(qū)塊同步和視圖變更保證。另外在聯(lián)盟式區(qū)塊鏈在有監(jiān)督且較穩(wěn)定的環(huán)境中,視圖變更不會也不應(yīng)是常態(tài),為確認(rèn)階段所花費的數(shù)據(jù)傳輸開銷應(yīng)該設(shè)法避免。

    在省略確認(rèn)階段的情況下,消息在完成準(zhǔn)備階段后提交,需要保證在準(zhǔn)備階段之后發(fā)生視圖變更后系統(tǒng)的一致性。本文設(shè)計利用視圖變更過程來保證一致性,在視圖變更時加入了選舉過程與同步驗證過程。選舉過程的作用是選出系統(tǒng)共識節(jié)點中區(qū)塊鏈結(jié)構(gòu)最長的節(jié)點作為待定主節(jié)點,待定主節(jié)點選舉出來后進(jìn)行同步驗證過程,以此消除由于網(wǎng)絡(luò)原因造成的狀態(tài)不一致性。另外待定主節(jié)點在同步過程中可能同步非法區(qū)塊,而利用區(qū)塊鏈的特性可以容易地檢驗區(qū)塊合法性,所以設(shè)計出同步驗證過程,監(jiān)督待定主節(jié)點在同步過程中行為的合法性。如果待定主節(jié)點在同步過程中出現(xiàn)惡意行為,那么將再次選舉新的待定主節(jié)點?;谝陨戏治?,EPBFT所設(shè)計的改進(jìn)的共識流程可以在不影響系統(tǒng)容錯性的情況下降低共識過程的數(shù)據(jù)傳輸量與通信開銷,提升了共識效率。具體情況下的通信開銷在實驗部分論述。一般情況下假設(shè)全網(wǎng)節(jié)點數(shù)為N,此時完成一次共識過程需要進(jìn)行的消息傳遞次數(shù)Z為:

    當(dāng)節(jié)點數(shù)較多時,可以節(jié)省對網(wǎng)絡(luò)帶寬的消耗,縮短共識過程。

    3.2 算法設(shè)計

    3.2.1 算法符號表示

    1)集群中節(jié)點分為兩種,一種是主節(jié)點(master),一種是從節(jié)點(slave),所有節(jié)點集合用集合R表示,兩種節(jié)點都稱為備份節(jié)點,用編號{0,1,…,i,…,|R|-1i的前后兩邊都有點號,書寫正確嗎?請明確?;貜?fù):點號表示省略了編號從1到i和i到R-1的其他節(jié)點編號}表示。

    2)令集合R中最大能容忍的惡意節(jié)點數(shù)為f,則集合R大小必須滿足公式:

    R≥3f+1(5)

    一般情況下,集合數(shù)取3f+1,因為更多的共識節(jié)點不會對共識過程有幫助,反而會降低整體性能。

    3)集合中節(jié)點具有四種狀態(tài),分別命名為:尋找(searching)、待領(lǐng)導(dǎo)(undetermined)、領(lǐng)導(dǎo)(mastering)、服從(slaving)。

    4)視圖編號用整數(shù)v表示,請求編號用整數(shù)n表示,視圖變更或遇到新請求時,v和n加1。在一個視圖中,n必須在水線之間:

    H≥n≥h(6)

    5)兩階段分別命名為快提案階段(fast-proposal)和快確認(rèn)階段(fast-confirm)。

    3.2.2 算法流程

    初始化系統(tǒng)時,先經(jīng)過主節(jié)點選舉過程選舉出主節(jié)點,接下來進(jìn)行數(shù)據(jù)備份與驗證階段,因為在去中心化的區(qū)塊鏈共識系統(tǒng)中,如果要達(dá)到共識的目的,各共識節(jié)點需要開始于相同的狀態(tài)。所謂達(dá)到相同的狀態(tài)就是各個備份節(jié)點存儲的數(shù)據(jù)一致,視圖號和請求編號即區(qū)塊高度、上一塊區(qū)塊哈希值等信息一致。完成數(shù)據(jù)備份與驗證階段后,系統(tǒng)開始預(yù)準(zhǔn)備和準(zhǔn)備兩階段共識過程。在消息傳遞過程中,使用密碼學(xué)技術(shù)保證消息的完整性和真實性,定義Si為消息簽名,Di為消息摘要。

    具體的算法流程如下:

    若系統(tǒng)有主節(jié)點,直接從第三步開始進(jìn)行。直接進(jìn)入快提案階段。此處指代不明確,指哪一步?請調(diào)整語句當(dāng)系統(tǒng)沒有主節(jié)點時,進(jìn)行主節(jié)點選舉過程,所有節(jié)點處于searching狀態(tài),先經(jīng)過主節(jié)點選舉過程選舉出主節(jié)點,此時當(dāng)選的節(jié)點變?yōu)閡ndetermined狀態(tài)。

    接著進(jìn)行數(shù)據(jù)備份與驗證階段,各個從節(jié)點需要從擁有最長鏈的待定主節(jié)點處備份數(shù)據(jù),從節(jié)點在得到備份數(shù)據(jù)后需要對數(shù)據(jù)進(jìn)行驗證,驗證通過后保存。只有超過2f+1的從節(jié)點驗證通過,才算是正式承認(rèn)主節(jié)點,主節(jié)點從undetermined狀態(tài)轉(zhuǎn)變?yōu)閙astering狀態(tài),其余節(jié)點從searching狀態(tài)轉(zhuǎn)變?yōu)閟laving狀態(tài),成為從節(jié)點,視圖號v加1。若主節(jié)點備份數(shù)據(jù)驗證失敗,說明待定主節(jié)點不可信,將該節(jié)點排除出系統(tǒng),重新選舉主節(jié)點。

    交易發(fā)起者c向集群中節(jié)點發(fā)送一個已簽名交易,若接收節(jié)點向全網(wǎng)廣播交易,各共識節(jié)點(包括主節(jié)點)收到交易后驗證交易的合法性,若合法,則緩存起來。主節(jié)點待收到足夠的交易或者到一段時間間隔以后,生成一個區(qū)塊。

    快提案階段 主節(jié)點為產(chǎn)生的區(qū)塊生成快提案消息,分配一個編號n,然后向所有的從節(jié)點廣播快提案消息,快提案消息的格式為〈〈FAST-PROPOSAL,v,n,Si,Di〉,block〉,其中:v是視圖編號,block是需要共識的區(qū)塊。從節(jié)點i∈{0,1,…,|R|-1}在接收到快提案消息是會對其進(jìn)行檢驗,如果同意快提案消息,則進(jìn)入快確認(rèn)階段,如果不同意,則對主節(jié)點表示懷疑,廣播視圖變更消息。副本節(jié)點驗證快提案消息主要檢查有:視圖編號v、消息序號n、簽名和摘要、水線、區(qū)塊交易驗證。

    快確認(rèn)階段 節(jié)點在進(jìn)入快確認(rèn)階段后向除自己以外的其他節(jié)點廣播快確認(rèn)消息,同時將快提案和快確認(rèn)消息寫入消息日志??齑_認(rèn)消息格式為〈FAST-CONFIRM,v,n,Si,Di,i〉,其中i是節(jié)點自身編號??齑_認(rèn)階段完成的標(biāo)志為收到2f+1個從其他不同副本節(jié)點收到的與快提案消息一致的快確認(rèn)消息,若到時間超時為止未收到足夠快確認(rèn)消息,將區(qū)塊丟棄。副本節(jié)點驗證快確認(rèn)消息主要檢查有:視圖編號v、消息序號n、簽名和摘要以及水線。

    當(dāng)共識節(jié)點完成快確認(rèn)階段后,提交請求,保存區(qū)塊,表明該區(qū)塊加入?yún)^(qū)塊鏈尾部。

    算法主要流程如圖3所示。

    3.2.3 主節(jié)點選舉

    主節(jié)點選舉依據(jù)最長鏈原則,選出集群服務(wù)器中最后一個共識完成的擁有最大視圖號的編號最大的服務(wù)器作為主節(jié)點。視圖號與編號合起來用一個long型數(shù)據(jù)存儲,分別占據(jù)高32位和低32位,用vnid(view-number id)表示選舉過程主要分為以下幾種情況(圖34~5此處指代圖4、5吧?請明確括號中三個數(shù)依次為:節(jié)點編號,目標(biāo)節(jié)點編號,目標(biāo)vnid)。

    1)集群初始化主節(jié)點選舉。

    各服務(wù)器初始化后,各共識節(jié)點都處于searching狀態(tài),都投票給自己,并將自己的一票存入自己的票箱,服務(wù)器收到所有外部投票后,進(jìn)行選票PK,相應(yīng)更新自己的選票并廣播出去,并將合適的選票存入自己的票箱。選票PK有三種情況,分別是:

    a)若收到的選票中最大vnid小于自己當(dāng)前主張的vnid,忽略。

    b)若收到的選票中最大vnid等于自己當(dāng)前主張的vnid,若此時節(jié)點編號也相同,將選票存入自己的票箱。否則比較節(jié)點編號,若當(dāng)前主張節(jié)點編號較高,忽略消息;否則清空票箱,相應(yīng)更新自己的選票存入票箱并廣播出去。

    c)若收到的選票中最大vnid大于自己當(dāng)前主張的vnid,清空票箱,更新當(dāng)前主張的vnid,相應(yīng)更新自己的選票存入票箱并廣播出去。

    當(dāng)票箱中有來自不同節(jié)點的2f+1個目標(biāo)一致的選票時,選舉完成,清空票箱,向其目標(biāo)主節(jié)點發(fā)送確認(rèn)消息。被其他節(jié)點認(rèn)同且收到至少2f+1個來自不同節(jié)點的確認(rèn)消息的節(jié)點成為待定主節(jié)點的節(jié)點進(jìn)入undetermined狀態(tài)。選舉過程如圖4~5所示。

    2)slave進(jìn)入集群投票給自己。

    slave進(jìn)入集群,或者發(fā)生網(wǎng)絡(luò)分區(qū)后找不到master,會進(jìn)入searching狀態(tài)并發(fā)起新的一輪投票。集群中其他節(jié)點將告知其當(dāng)前主節(jié)點信息,收到超過來自不同節(jié)點的2f+1個節(jié)點一致信息后,該節(jié)點與當(dāng)前主節(jié)點建立心跳聯(lián)系,進(jìn)入slaving狀態(tài),成為從節(jié)點。如圖65所示。

    master宕機(jī)后,或者在被slave發(fā)起的視圖變更推翻后,將當(dāng)前master排除出集群,進(jìn)入searching狀態(tài)并發(fā)起新的一輪投票,并且都將票投給自己,投票過程與第一種情況相同,此處不再贅述。

    為節(jié)點定義一個完整的生命周期為選舉階段提供基礎(chǔ)的同時,實現(xiàn)了集群中節(jié)點的動態(tài)變更,極大地提高了系統(tǒng)靈活性和可用性。

    3.2.4 數(shù)據(jù)備份與驗證

    當(dāng)選出待定主節(jié)點之后進(jìn)行的數(shù)據(jù)備份與驗證階段,是為了使各節(jié)點狀態(tài)達(dá)到一致,這在前面已有解釋,同時還可以進(jìn)一步驗證待定主節(jié)點是否為惡意節(jié)點。過程如下。

    數(shù)據(jù)同步階段 選舉過程完成后,從節(jié)點向待定主節(jié)點發(fā)送同步請求消息,消息格式為〈SYN-REQUEST,v,vnid,Si,此處有兩個逗號,且均為下標(biāo),是否應(yīng)該為一個逗號,且逗號不應(yīng)該為下標(biāo),請明確。后面仍有此類書寫,請一并核對。i〉,如前所述,v為視圖號,vnid為各自提交的最大事務(wù)號,待定主節(jié)點接收到該消息后首先檢查視圖號是否合法,若是則查看對比自己的末尾區(qū)塊編號與消息中的vnid是否一致,若一致直接發(fā)送同步成功消息〈SYN-SUCCESS,v,Si,i〉給該從節(jié)點;否則根據(jù)其他節(jié)點所擁有的數(shù)據(jù)區(qū)塊的不同,向集群中其他節(jié)點分別發(fā)送同步消息和相應(yīng)的備份數(shù)據(jù)區(qū)塊,消息格式為〈〈SYN-DATA,v,Si,i〉,blocks〉,blocks為相應(yīng)的備份數(shù)據(jù)區(qū)塊。

    數(shù)據(jù)驗證階段 其他的節(jié)點收到待定主節(jié)點的備份數(shù)據(jù)區(qū)塊后,驗證其合法性。如果合法,則保存起來,廣播驗證通過消息,消息格式為〈SYN-ACK,v,Si,i,d〉,d為收到的備份數(shù)據(jù)區(qū)塊中最后一個區(qū)塊的摘要;否則將其丟棄。同時保存收到的來自其他節(jié)點的驗證結(jié)果消息。因為這一過程驗證目標(biāo)明確,所以只需要一次消息廣播過程即可確定待定主節(jié)點的合法性。當(dāng)從節(jié)點收到來自其他不同節(jié)點的2f+1個通過消息且消息中d一致后,驗證成功,這樣可以保證待定主節(jié)點發(fā)送給每個從節(jié)點的備份數(shù)據(jù)區(qū)塊都是一致的。此時從節(jié)點向主節(jié)點發(fā)送〈SYN-ACHIEVE,v,Si,i〉消息。節(jié)點進(jìn)入slaving狀態(tài),成為從節(jié)點;反之,認(rèn)為待定主節(jié)點是惡意節(jié)點,排除該節(jié)點,重新進(jìn)行選舉。

    驗證確認(rèn)階段 當(dāng)待定主節(jié)點收到2f+1的同步完成消息后,表示有足夠的從節(jié)點正式同意自己,且系統(tǒng)中有足夠的共識節(jié)點。這時待定主節(jié)點進(jìn)入mastering狀態(tài),正式成為主節(jié)點。

    該過程如圖76所示。

    3.2.5 切換視圖

    在原算法的基礎(chǔ)上更進(jìn)一步,不止在主節(jié)點失效時觸發(fā)視圖變更,當(dāng)從節(jié)點懷疑主節(jié)點時同樣廣播視圖變更消息,從而可能觸發(fā)視圖變更,推翻主節(jié)點。具體流程如下:

    1)當(dāng)從節(jié)點發(fā)現(xiàn)主節(jié)點失效或者懷疑主節(jié)點是惡意節(jié)點時,向集群中其他節(jié)點廣播視圖變更消息,前文已闡明懷疑過程,此處不再贅述。視圖變更消息格式為(VIEWCHANGE,vnew,vold,Si,i),vnew為新的視圖號,vold為舊的視圖號,i為節(jié)點編號,vnew=vold+1。

    2)其他從節(jié)點在收到視圖變更消息后,驗證消息中的vold是否與當(dāng)前一致,且vnew=vold+1,同時檢查主節(jié)點是否失效:若主節(jié)點未失效且不認(rèn)為主節(jié)點發(fā)來的提案有問題,則忽略該消息;若驗證通過后,廣播視圖變更確認(rèn)消息,消息格式為(VIEWCHANGE-CONFIRM,vnew,vold,Si,i)。

    3)當(dāng)從節(jié)點收到2f+1個來自不同節(jié)點的視圖變更確認(rèn)消息后,切換為searching狀態(tài),進(jìn)入主節(jié)點選舉階段,開始重新選舉主節(jié)點。

    4 實驗分析

    本章從通信開銷、時延、吞吐量和安全性方面對EPBFT進(jìn)行測試,同時與原來的PBFT算法進(jìn)行比較對照,以此驗證改進(jìn)算法的有效性和可用性。實驗網(wǎng)絡(luò)環(huán)境采用實驗室局域網(wǎng)通信,使用6臺配置相同的Windows系統(tǒng)臺式機(jī)作為共識節(jié)點。

    4.1 系統(tǒng)設(shè)計

    為了測試改進(jìn)的算法的有效性和可用性,實現(xiàn)了以改進(jìn)算法為核心的區(qū)塊鏈系統(tǒng)。系統(tǒng)底層為一般區(qū)塊鏈技術(shù)架構(gòu),采用鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),使用P2P網(wǎng)絡(luò)架構(gòu),加密方法采用橢圓曲線非對稱加密,整個系統(tǒng)是去中心化的。整個系統(tǒng)分為數(shù)據(jù)上傳、選舉與同步、共識、數(shù)據(jù)存儲四三此處書寫有誤,“選舉與同步”模塊是“共識”模塊的子模塊,在共識模塊中已有說明。原文“整個系統(tǒng)分為:數(shù)據(jù)上傳,選舉與同步,共識,數(shù)據(jù)存儲四個模塊?!毙薷臑椤罢麄€系統(tǒng)分為:數(shù)據(jù)上傳,共識,數(shù)據(jù)存儲三個模塊。”個模塊。

    數(shù)據(jù)上傳模塊 此模塊負(fù)責(zé)產(chǎn)生模擬交易數(shù)據(jù),并持續(xù)向共識模塊傳遞交易數(shù)據(jù),這些交易將被存入?yún)^(qū)塊并被共識模塊共識,以此測出時延和吞吐量等數(shù)據(jù)。

    共識模塊 此模塊將數(shù)據(jù)上傳模塊傳遞來的交易后,產(chǎn)生區(qū)塊進(jìn)行共識,是整個系統(tǒng)的關(guān)鍵模塊,共識流程采用本文提出的EPBFT算法。其中共識模塊又分為主節(jié)點選舉、數(shù)據(jù)同步及驗證和區(qū)塊共識三個子模塊。主節(jié)點選舉模塊負(fù)責(zé)主節(jié)點的選舉以及所有節(jié)點加入和退出以及狀態(tài)的轉(zhuǎn)換邏輯;數(shù)據(jù)同步及驗證負(fù)責(zé)在選舉出新的主節(jié)點后向其他節(jié)點同步數(shù)據(jù)以及對同步的數(shù)據(jù)進(jìn)行驗證;區(qū)塊共識則是進(jìn)行改進(jìn)后的區(qū)塊共識過程。

    數(shù)據(jù)存儲模塊 此模塊負(fù)責(zé)將完成共識的區(qū)塊進(jìn)行存儲,數(shù)據(jù)同步驗證過程將保證每個節(jié)點在視圖變更后存儲當(dāng)前完整區(qū)塊鏈數(shù)據(jù)。存儲的數(shù)據(jù)可以被查詢顯示,不可被修改。

    整個系統(tǒng)架構(gòu)如圖87所示。

    4.2 性能測試

    理論上在減去了原PBFT共識過程中的確認(rèn)階段的改進(jìn)算法在共識速度上將獲得提升?,F(xiàn)通過基于改進(jìn)算法構(gòu)建的實驗系統(tǒng)對通信開銷、吞吐量、時延和安全性四方面進(jìn)行測試,并與原PBFT算法進(jìn)行比較,從而驗證改進(jìn)算法的有效性和可用性。在測試過程中保證實驗機(jī)器中可能的故障節(jié)點和惡意節(jié)點都是相同的節(jié)點f個,在這里的實驗中采用f=1。因為集群節(jié)點數(shù)至少為3f+1,所以選擇3組對比實驗,分別使用4個節(jié)點,5個節(jié)點與6個節(jié)點作為共識節(jié)點。

    4.2.1 通信開銷分析

    設(shè)現(xiàn)在平臺共識節(jié)點數(shù)為n(n>3),可以利用共識算法流程計算出一次完整的PBFT共識需要的通信次數(shù),計算范圍只包括預(yù)準(zhǔn)備階段、準(zhǔn)備階段和確認(rèn)階段三個主要階段。同時設(shè)視圖變更概率p,p=1/q(平均每q次共識發(fā)生1次視圖變更)。

    1)PBFT通信開銷。

    首先由前文對PBFT共識過程分析知三階段總通信次數(shù)為2n(n-1)。

    對于視圖變更過程,視圖變更階段每個從節(jié)點廣播視圖變更消息,本階段共識網(wǎng)絡(luò)中的通信次數(shù)為(n-1)2。視圖變更確認(rèn)階段新視圖的主節(jié)點收到來自其他從節(jié)點的視圖變更后發(fā)送視圖變更確認(rèn)消息給所有從節(jié)點,本階段共識網(wǎng)絡(luò)中發(fā)生的通信次數(shù)為(n-1),那么系統(tǒng)在p概率下發(fā)生視圖變更時通信總次數(shù)為:

    2)EPBFT通信開銷。

    由前文對EPBFT共識過程分析知二階段總通信次數(shù)為n(n-1)。

    在主節(jié)點選舉過程中,投票第一輪各個從節(jié)點發(fā)送自己的投票給除了自己之外的從節(jié)點。本階段共識網(wǎng)絡(luò)中的通信次數(shù)為(n-1)2。投票第二輪各個從節(jié)點通過選票PK更改投票對象,更改后將投票發(fā)送至除了自己之外的從節(jié)點,該過程通信次數(shù)為(n-1)2。完成選舉的從節(jié)點發(fā)送確認(rèn)消息給待定主節(jié)點,該過程通信次數(shù)為(n-1)。

    在數(shù)據(jù)同步驗證階段中,數(shù)據(jù)同步過程中待定主節(jié)點給每一個從節(jié)點發(fā)送其對應(yīng)的同步消息,該過程次數(shù)為(n-1)。同步驗證過程中所有從節(jié)點發(fā)送驗證通過消息給除了待定主節(jié)點和自己之外的所有從節(jié)點,該過程通信次數(shù)為(n-1)(n-2)。驗證確認(rèn)過程中所有從節(jié)點在同步完成后發(fā)送同步完成消息給待定主節(jié)點,該過程通信次數(shù)為(n-1)。

    所以選舉過程與同步過程總通信次數(shù)為3n2-4n+1。根據(jù)假設(shè),若系統(tǒng)在概率p下發(fā)生視圖變更,則總共的通信次數(shù)為:

    3)通信開銷對比。

    令兩種算法通信開銷比值為I,則在沒有出現(xiàn)視圖變更情況的共識過程中,兩種算法通信次數(shù)比值I1為:

    由式(9)可知I1恒等于2,所以如果系統(tǒng)沒有發(fā)生視圖變更,那么EPBFT算法是PBFT通信次數(shù)的一半,有效降低了共識過程中的網(wǎng)絡(luò)通信次數(shù)。

    而在視圖變更發(fā)生的情況下,兩種算法通信次數(shù)比值I2為:

    經(jīng)過系統(tǒng)實驗驗證,將發(fā)生視圖變更概率P作為自變量,兩種共識算法在節(jié)點數(shù)固定的情況下參與共識下的通信次數(shù)比I。當(dāng)P=0.5時I趨近于1,此時兩種算法的網(wǎng)絡(luò)通信次數(shù)基本相等。當(dāng)P<0.5,也就是每當(dāng)大于兩次共識過程后才可能發(fā)生一次視圖變更時PBFT的網(wǎng)絡(luò)通信次數(shù)大于EPBFT,當(dāng)P越小,I越趨近于2,也就是說視圖變更情況出現(xiàn)概率越小,EPBFT的通信次數(shù)越接近PBFT的一半,因為系統(tǒng)需要為選舉和同步驗證過程所花費通信開銷的情況越少。在聯(lián)盟鏈系統(tǒng)環(huán)境和節(jié)點比較穩(wěn)定的情況下,系統(tǒng)發(fā)生視圖變更的概率是很小的,通信開銷接近為PBFT的一半。如果區(qū)塊鏈平臺每兩次共識就會發(fā)生一次視圖變更,這樣的情況對系統(tǒng)來說是不可接受的,因此,EPBFT算法可以有效減少系統(tǒng)在共識過程中的通信開銷。

    4.2.2 吞吐量測試

    吞吐量一般指單位時間內(nèi)系統(tǒng)處理的事務(wù)數(shù),吞吐量的高低顯示了系統(tǒng)承受負(fù)載,處理事務(wù)或者請求交易的能力。在區(qū)塊鏈領(lǐng)域中,一般用每秒交易數(shù)(Transaction Per Second, TPS)來表示,即:

    其中:TransactionsΔt為出塊時間內(nèi)系統(tǒng)處理交易數(shù),Δt為出塊時間。吞吐量隨著每個區(qū)塊的容量增大相應(yīng)地也會變大,但隨著區(qū)塊容量的增大,共識時間和網(wǎng)絡(luò)負(fù)載也會增大,所以當(dāng)大到一定程度時吞吐量會有所下降。為了便于對照,控制變量,將一個塊中包含的交易數(shù)固定為10個。測試了在4、5、6個共識節(jié)點下的三組對照實驗。多次測試取平均值,得出統(tǒng)計結(jié)果。

    兩種算法在相同條件下吞吐量對比如圖98所示。

    可以看出兩種情況下隨著節(jié)點數(shù)增加,吞吐量都略微減少,但是改進(jìn)的EPBFT算法吞吐量更高,幾乎比原PBFT算法高出一倍,并且隨著交易量的加大,吞吐量提升得更加明顯。

    4.2.3 時延測試

    共識時延(DelayTime)是衡量共識算法運行速度的重要指標(biāo),較低的共識時延使得交易可以快速得到確認(rèn),區(qū)塊鏈安全性更高,同時也能變得更為實用。在本文中測試的共識時延為區(qū)塊完成一次共識過程的時間,即:

    其中:Tconfirm為區(qū)塊完成確認(rèn)時間,Ttransmit為快提案階段開始時間。多次測試取平均值,得出統(tǒng)計結(jié)果。

    兩種算法在相同條件下共識時延對比如圖109所示。

    4.2.4 算法安全性

    為驗證EPBFT的安全性,從兩個方面考慮:一方面是對集群中惡意節(jié)點數(shù)量的控制,二是測試在主節(jié)點為惡意節(jié)點或者失效時系統(tǒng)的反應(yīng)。

    首先在共識節(jié)點中設(shè)置一個惡意節(jié)點的情況下,可以完成共識,當(dāng)在總節(jié)點數(shù)不變,惡意節(jié)點增加以后超出系統(tǒng)所能承受的最大惡意節(jié)點數(shù)量,無法完成共識。

    然后再讓主節(jié)點傳播惡意請求(如將請求序號設(shè)置的很大),系統(tǒng)無法完成共識,發(fā)生視圖變更將存在惡意行為的主節(jié)點“推翻”,重新選舉新主節(jié)點。再驗證新共識算法在主節(jié)點宕機(jī)行為下的安全性與容錯性,設(shè)置主節(jié)點在一次共識過程中宕機(jī)。PBFT算法中從節(jié)點檢測主節(jié)點宕機(jī)后執(zhí)行視圖變更過程的兩個階段,隨后更新視圖號,保證上一輪中完成快確認(rèn)階段的消息全部處理結(jié)束,其他未完成快確認(rèn)階段的請求全部丟棄,之后開始新的共識;EPBFT在檢測到主節(jié)點失效后開始前文所述主節(jié)點選舉過程。選出新主節(jié)點后,主節(jié)點與所有從節(jié)點進(jìn)行同步與驗證階段,保證了在新視圖開始時全局?jǐn)?shù)據(jù)的一致性。同步結(jié)束后開始下一輪共識。

    實驗表明EPBFT共識算法在提高了共識速度并減少共識時延的基礎(chǔ)上與原PBFT共識算法一樣能夠保證分布式系統(tǒng)一致性和安全性,提供f=(n-1)/3的容錯性,證明了改進(jìn)的算法是有效和可靠的。

    5 結(jié)語

    本文提出了一種基于PBFT改進(jìn)的算法模型EPBFT,給集群中節(jié)點定義一個完整的生命周期,使得節(jié)點可以動態(tài)加入和退出;對原PBFT的主節(jié)點選舉方式加以改進(jìn),選舉出的主節(jié)點更為可信;在主節(jié)點選舉完成之后,共識過程執(zhí)行之前增加一個對主節(jié)點是否所拜占庭節(jié)點的主節(jié)點驗證及數(shù)據(jù)過程,增加一個主節(jié)點驗證及數(shù)據(jù)同步過程,判斷主節(jié)點是否為拜占庭節(jié)點,此處語句不通順,需調(diào)整。回復(fù):增加一個對主節(jié)點是否所拜占庭節(jié)點的主節(jié)點驗證及數(shù)據(jù)過程”調(diào)整為“增加一個主節(jié)點驗證及數(shù)據(jù)同步過程,判斷主節(jié)點是否為拜占庭節(jié)點,進(jìn)一步保證主節(jié)點的可信性使全節(jié)點在共識開始時狀態(tài)一致。依據(jù)區(qū)塊鏈環(huán)境優(yōu)化共識過程,加快共識過程。未來工作將繼續(xù)優(yōu)化算法細(xì)節(jié),進(jìn)一步降低網(wǎng)絡(luò)通信量??梢栽谝院笠牍?jié)點評分機(jī)制,綜合選取最優(yōu)節(jié)點。將算法應(yīng)用于某一實際領(lǐng)域的區(qū)塊鏈系統(tǒng)中,為區(qū)塊鏈的應(yīng)用及普及作出貢獻(xiàn)。

    參考文獻(xiàn) (References)

    [1] BONNEAU J, MILLER A, CLARK J, et al. SoK: research perspectives and challenges for bitcoin and cryptocurrencies [C]// Proceedings of the 2015 IEEE Symposium on Security and Privacy. Washington, DC: IEEE Computer Society, 2015: 104-121.

    [2] 蔡維德,郁蓮,王榮,等.基于區(qū)塊鏈的應(yīng)用系統(tǒng)開發(fā)方法研究[J].軟件學(xué)報,2017,28(6):1474-1487.(CAI W D, YU L, WANG R, et al. Blockchain application development techniques[J]. Journal of Software, 2017, 28(6): 1474-1487.)

    [3] EYAL I, CENCER A E, SIRER E G, et al. Bitcoin-NG: a scalable blockchain protocol[C]// Proceedings of the 13th USENIX Symposium on Networked Systems Design and Implementation. Berkeley, CA: USENIX Association, 2016: 45-59.

    [4] AMALARETHINAM D I G, BALAKRISHNAN C, CHARLES A. An improved methodology for fragment re-allocation in peer-to-peer distributed databases[C]// Proceedings of the 4th International Conference on Advances in Recent Technologies in Communication and Computing. Piscataway, NJ: IEEE, 2012: 78-81.

    [5] PEASE M, SHOSTAK R, LAMPORT L. Reaching agreement in the presence of faults[J]. Journal of the ACM, 1980, 27(2): 228-234.

    [6] LAMPORT L, SHOSTAK R, PEASE M. The Byzantine generals problem[J]. ACM Transactions on Programming Languages and Systems, 1982, 4(3): 382-401.

    [7] LI J R, WOLF T. A one-way proof-of-work protocol to protect controllers in software-defined networks[C]// Proceedings of the 2016 Symposium on Architectures for Networking and Communications Systems. New York: ACM, 2016: 123-124.

    [8] CASTRO M, LISKOV B. Practical Byzantine fault tolerance[C]// Proceedings of the 3rd Symposium on Operating Systems Design and Implementation. Berkeley, CA: USENIX Association, 1999: 173-186.

    [9] REITER M K. A secure group membership protocol[J]. IEEE Transactions on Software Engineering, 1996, 22(1): 31-42.

    [10] JUNQUEIRA F, REED B. ZooKeeper分布式過程協(xié)同技術(shù)詳解[M].謝超,周貴卿,譯.北京:機(jī)械工業(yè)出版社,2016:188-193.(JUNQUEIRA F, REED B. Detailed Explanation of Zookeeper Distributed Process Collaboration Technology[M]. XIE C, ZHOU G Q, translated. Beijing: China Machine Press, 2016: 188-193.)

    [11] 袁勇,王飛躍.區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀與展望[J].自動化學(xué)報,2016,42(4):481-494.(YUAN Y, WANG F Y. Blockchain: the state of the art and future trends[J]. Acta Automatica Sinica, 2016, 42(4): 481-494.)

    [12] 韓璇,劉亞敏.區(qū)塊鏈技術(shù)中的共識機(jī)制研究[J].信息網(wǎng)絡(luò)安全,2017(9):147-152.(HAN X, LIU Y M. Research on the consensus mechanisms of blockchain technology[J]. Netinfo Security, 2017(9): 147-152.)

    [13] LAMPORT L. The part-time parliament[J]. ACM Transactions on Computer Systems, 1998, 16(2): 133-169.

    [14] ONGARO D, OUSTERHOUT J. In search of an understandable consensus algorithm[C]// Proceedings of the 2014 USENIX Annual Technical Conference. Berkeley, CA: USENIX Association, 2014: 305-319.

    [15] COWLING J, MYERS D, LISKOV B, et al. HQ replication: a hybrid quorum protocol for Byzantine fault tolerance[C]// Proceedings of the 7th Symposium on Operating Systems Design and Implementation. Berkeley, CA: USENIX Association, 2006: 177-190.

    [16] COPELAND C, ZHONG H. Tangaroa: a Byzantine fault tolerant raft [EB/OL].[2018-10-25]. http://www.scs.stanford.edu/14aucs244b/labs/projects/copeland zhong.pdf.

    [17] MARTINO W. KADENA: the first scalable, high performance private blockchain [EB/OL].[2018-10-25]. http://kadena.io/docs/Kadena ConsensusWhitePaperAug2016.pdf.

    [18] KWON J. Tendermint: consensus without mining[EB/OL]. [ 2018-10-25].https://tendermint.com/static/docs/tendermint.pdf.

    [19] GILAD Y, HEMO R, MICALI S, et al. Scaling Byzantine agreements for cryptocurrencies [EB/OL].[2018-10-25]. http://eprint.iacr.org/2017/454.

    [20] QUANTUM M. Proof of stake [EB/OL].[2018-10-25]. https://en.bitcoin.it/wiki/Proof of Stake.

    黄片大片在线免费观看| 另类亚洲欧美激情| 亚洲综合色网址| 99国产精品免费福利视频| 99国产精品一区二区三区| 国产单亲对白刺激| 日本精品一区二区三区蜜桃| 亚洲国产欧美网| 久久国产精品大桥未久av| 啦啦啦 在线观看视频| 少妇粗大呻吟视频| 一本大道久久a久久精品| 一级毛片女人18水好多| 俄罗斯特黄特色一大片| 国产又爽黄色视频| 激情在线观看视频在线高清 | 免费av中文字幕在线| 女人久久www免费人成看片| 日韩欧美国产一区二区入口| 男男h啪啪无遮挡| 三级毛片av免费| 欧美日韩中文字幕国产精品一区二区三区 | 午夜福利免费观看在线| 国产xxxxx性猛交| 一边摸一边做爽爽视频免费| 国产1区2区3区精品| 制服人妻中文乱码| 久久天躁狠狠躁夜夜2o2o| 国产一区二区三区综合在线观看| 亚洲伊人色综图| 97人妻天天添夜夜摸| 国产精品电影一区二区三区 | 18禁观看日本| 久久精品亚洲熟妇少妇任你| 久久久久久久久免费视频了| 国产精品欧美亚洲77777| 久久99一区二区三区| 美女高潮喷水抽搐中文字幕| 久久久国产欧美日韩av| 女人高潮潮喷娇喘18禁视频| 久久久久久久国产电影| 手机成人av网站| 天天添夜夜摸| 亚洲国产毛片av蜜桃av| 日韩成人在线观看一区二区三区| 国产亚洲精品久久久久久毛片 | tube8黄色片| 国产乱人伦免费视频| 国产乱人伦免费视频| 少妇猛男粗大的猛烈进出视频| 欧美一级毛片孕妇| 成熟少妇高潮喷水视频| 夜夜夜夜夜久久久久| 日本一区二区免费在线视频| 久久精品国产亚洲av高清一级| 国产一区二区激情短视频| 亚洲av美国av| 日韩欧美国产一区二区入口| 伊人久久大香线蕉亚洲五| 丝袜在线中文字幕| 九色亚洲精品在线播放| 成人国语在线视频| 国产熟女午夜一区二区三区| 亚洲国产欧美一区二区综合| 露出奶头的视频| 午夜福利,免费看| 一区二区日韩欧美中文字幕| 成人国产一区最新在线观看| 身体一侧抽搐| 女同久久另类99精品国产91| 色婷婷久久久亚洲欧美| 欧美日韩国产mv在线观看视频| svipshipincom国产片| x7x7x7水蜜桃| 午夜老司机福利片| 在线观看免费日韩欧美大片| 99国产综合亚洲精品| 亚洲,欧美精品.| 天天影视国产精品| 人人妻,人人澡人人爽秒播| 亚洲一区二区三区不卡视频| netflix在线观看网站| 丰满迷人的少妇在线观看| 男人操女人黄网站| 亚洲国产欧美一区二区综合| 狠狠婷婷综合久久久久久88av| 国产亚洲精品久久久久5区| 欧美日韩亚洲综合一区二区三区_| 国产亚洲欧美在线一区二区| 日韩欧美三级三区| 日韩 欧美 亚洲 中文字幕| av在线播放免费不卡| 欧美av亚洲av综合av国产av| 欧美不卡视频在线免费观看 | 亚洲欧美色中文字幕在线| 天天躁狠狠躁夜夜躁狠狠躁| 一区二区三区激情视频| 一级黄色大片毛片| 在线观看66精品国产| 麻豆成人av在线观看| 国产精品1区2区在线观看. | 欧美av亚洲av综合av国产av| 国产精品综合久久久久久久免费 | 老汉色∧v一级毛片| 热re99久久精品国产66热6| 久久久久久久久免费视频了| 校园春色视频在线观看| 狂野欧美激情性xxxx| 国产亚洲欧美98| 午夜老司机福利片| 国产精品秋霞免费鲁丝片| 视频区图区小说| 在线观看免费午夜福利视频| 两性夫妻黄色片| av超薄肉色丝袜交足视频| 亚洲精品自拍成人| 久久中文字幕人妻熟女| 1024香蕉在线观看| av欧美777| 十八禁高潮呻吟视频| 欧美 日韩 精品 国产| 亚洲在线自拍视频| av片东京热男人的天堂| 国产成人精品久久二区二区91| 日韩视频一区二区在线观看| 国产亚洲欧美在线一区二区| 亚洲第一av免费看| 国产一区二区三区视频了| 一区二区三区激情视频| 女人被躁到高潮嗷嗷叫费观| 国产亚洲精品一区二区www | 午夜两性在线视频| 午夜激情av网站| 老熟妇仑乱视频hdxx| 欧美性长视频在线观看| 免费日韩欧美在线观看| 欧美国产精品va在线观看不卡| 亚洲一区中文字幕在线| 久久久久国产精品人妻aⅴ院 | 精品久久久久久久毛片微露脸| 亚洲国产精品一区二区三区在线| 久久99一区二区三区| 黄色女人牲交| 亚洲av成人不卡在线观看播放网| 午夜视频精品福利| 国产深夜福利视频在线观看| tube8黄色片| 日本五十路高清| 亚洲全国av大片| 国产一区在线观看成人免费| 精品视频人人做人人爽| 欧美黑人精品巨大| 免费在线观看完整版高清| 美女高潮到喷水免费观看| 天天添夜夜摸| 一进一出好大好爽视频| 啦啦啦免费观看视频1| 日韩欧美一区视频在线观看| 亚洲成av片中文字幕在线观看| 美女午夜性视频免费| 天天影视国产精品| 80岁老熟妇乱子伦牲交| 国产免费av片在线观看野外av| 久久精品国产清高在天天线| 亚洲精品美女久久久久99蜜臀| 国产精品.久久久| 中文字幕另类日韩欧美亚洲嫩草| 欧美激情高清一区二区三区| 欧美精品人与动牲交sv欧美| a在线观看视频网站| 99热网站在线观看| 欧美日韩福利视频一区二区| 欧美日韩一级在线毛片| 后天国语完整版免费观看| 国产欧美日韩一区二区精品| 久99久视频精品免费| 亚洲人成伊人成综合网2020| 极品人妻少妇av视频| 国产单亲对白刺激| 高清av免费在线| 国产精品免费大片| 色尼玛亚洲综合影院| 中文字幕最新亚洲高清| 人人澡人人妻人| 99精品在免费线老司机午夜| 在线观看舔阴道视频| 国产成人精品久久二区二区免费| 美女福利国产在线| 9热在线视频观看99| 每晚都被弄得嗷嗷叫到高潮| 嫩草影视91久久| 老汉色∧v一级毛片| 亚洲五月色婷婷综合| 伊人久久大香线蕉亚洲五| 国产欧美日韩一区二区三| 琪琪午夜伦伦电影理论片6080| 国产一区二区三区在线臀色熟女| 欧美一区二区亚洲| 国产精品 国内视频| 国内精品久久久久久久电影| 国产精品 欧美亚洲| 中文字幕久久专区| 脱女人内裤的视频| 亚洲在线观看片| 中文资源天堂在线| 国产精品1区2区在线观看.| 日本五十路高清| 波多野结衣高清作品| 俄罗斯特黄特色一大片| 母亲3免费完整高清在线观看| 亚洲成av人片免费观看| 亚洲人成电影免费在线| 法律面前人人平等表现在哪些方面| 淫妇啪啪啪对白视频| 欧美精品啪啪一区二区三区| 91久久精品电影网| 日韩成人在线观看一区二区三区| 中文亚洲av片在线观看爽| 免费看光身美女| 亚洲 欧美 日韩 在线 免费| 午夜福利欧美成人| 少妇人妻一区二区三区视频| 亚洲乱码一区二区免费版| 欧美在线黄色| 美女黄网站色视频| 欧美日韩中文字幕国产精品一区二区三区| 亚洲七黄色美女视频| 欧美zozozo另类| 欧美成狂野欧美在线观看| e午夜精品久久久久久久| 国产97色在线日韩免费| 亚洲男人的天堂狠狠| 国产欧美日韩一区二区精品| bbb黄色大片| 婷婷丁香在线五月| 中文字幕人妻熟人妻熟丝袜美 | 亚洲欧美日韩无卡精品| 精品免费久久久久久久清纯| 亚洲成人久久爱视频| 婷婷丁香在线五月| 一卡2卡三卡四卡精品乱码亚洲| a级一级毛片免费在线观看| www日本在线高清视频| 精品一区二区三区视频在线观看免费| 人人妻,人人澡人人爽秒播| 国产主播在线观看一区二区| 波多野结衣高清作品| 国产伦人伦偷精品视频| 亚洲成人久久爱视频| 久久久久久久亚洲中文字幕 | 日韩大尺度精品在线看网址| 特级一级黄色大片| 成人国产一区最新在线观看| 变态另类丝袜制服| 久久性视频一级片| 婷婷丁香在线五月| av专区在线播放| 少妇的逼水好多| h日本视频在线播放| 波多野结衣高清无吗| 哪里可以看免费的av片| 桃红色精品国产亚洲av| 日本在线视频免费播放| 又黄又粗又硬又大视频| 精品一区二区三区人妻视频| 国产精品久久久久久精品电影| 国产精品 国内视频| 99久久精品国产亚洲精品| 亚洲av成人精品一区久久| 色老头精品视频在线观看| 国产野战对白在线观看| 成人特级av手机在线观看| 久久性视频一级片| 99久国产av精品| 一本精品99久久精品77| 成人永久免费在线观看视频| 此物有八面人人有两片| 亚洲精品粉嫩美女一区| 成人午夜高清在线视频| 欧美成狂野欧美在线观看| aaaaa片日本免费| 国产aⅴ精品一区二区三区波| 国产成+人综合+亚洲专区| 国产一级毛片七仙女欲春2| 国产成人系列免费观看| 亚洲熟妇中文字幕五十中出| 亚洲欧美日韩卡通动漫| bbb黄色大片| e午夜精品久久久久久久| 怎么达到女性高潮| 黄色日韩在线| av天堂在线播放| 亚洲激情在线av| 少妇裸体淫交视频免费看高清| 精品欧美国产一区二区三| 免费看日本二区| 精品久久久久久久久久免费视频| 国产伦在线观看视频一区| 成人特级黄色片久久久久久久| 村上凉子中文字幕在线| 国产精品免费一区二区三区在线| 国内毛片毛片毛片毛片毛片| 毛片女人毛片| 亚洲人成网站在线播| 免费观看精品视频网站| 亚洲色图av天堂| 婷婷精品国产亚洲av在线| 精品国产美女av久久久久小说| 久久精品综合一区二区三区| 99久久无色码亚洲精品果冻| 在线观看免费午夜福利视频| svipshipincom国产片| 国产免费男女视频| 嫩草影视91久久| 国产精品,欧美在线| 听说在线观看完整版免费高清| 一本一本综合久久| 亚洲在线观看片| 三级国产精品欧美在线观看| 18禁黄网站禁片免费观看直播| 日韩欧美三级三区| 母亲3免费完整高清在线观看| www国产在线视频色| 欧美+日韩+精品| 精品人妻偷拍中文字幕| 亚洲熟妇中文字幕五十中出| 午夜老司机福利剧场| 久久伊人香网站| 亚洲专区国产一区二区| 香蕉av资源在线| 中国美女看黄片| 法律面前人人平等表现在哪些方面| 757午夜福利合集在线观看| 国产一级毛片七仙女欲春2| 国产真人三级小视频在线观看| 俄罗斯特黄特色一大片| 中文字幕精品亚洲无线码一区| 久久久久免费精品人妻一区二区| 亚洲成人精品中文字幕电影| 精品免费久久久久久久清纯| 无人区码免费观看不卡| 一本精品99久久精品77| 亚洲国产高清在线一区二区三| 久久中文看片网| 最近最新中文字幕大全免费视频| 免费在线观看成人毛片| 国产探花在线观看一区二区| 国产三级中文精品| 日本免费a在线| 欧美黄色淫秽网站| 国产午夜精品久久久久久一区二区三区 | 中文字幕精品亚洲无线码一区| 午夜精品一区二区三区免费看| 一区二区三区高清视频在线| 亚洲精品国产精品久久久不卡| 高清毛片免费观看视频网站| 一卡2卡三卡四卡精品乱码亚洲| www日本在线高清视频| 日韩 欧美 亚洲 中文字幕| 国产高清有码在线观看视频| 亚洲av电影不卡..在线观看| 又黄又爽又免费观看的视频| 最新中文字幕久久久久| 亚洲精华国产精华精| 精品人妻一区二区三区麻豆 | 一级黄片播放器| 啦啦啦韩国在线观看视频| 熟女电影av网| 亚洲,欧美精品.| 男人的好看免费观看在线视频| 欧美大码av| 日本黄色视频三级网站网址| 精品乱码久久久久久99久播| 午夜福利视频1000在线观看| 国产在线精品亚洲第一网站| 精品国产超薄肉色丝袜足j| 深夜精品福利| 久久午夜亚洲精品久久| 99热精品在线国产| 日韩人妻高清精品专区| 一个人免费在线观看的高清视频| 在线观看免费午夜福利视频| 看片在线看免费视频| 国产三级在线视频| 亚洲av电影在线进入| 国产亚洲欧美98| 少妇熟女aⅴ在线视频| 黄片小视频在线播放| 精品熟女少妇八av免费久了| 亚洲国产日韩欧美精品在线观看 | 国产黄色小视频在线观看| 性欧美人与动物交配| 亚洲av二区三区四区| 色吧在线观看| 国内精品久久久久久久电影| 亚洲色图av天堂| 天堂动漫精品| 51国产日韩欧美| 又黄又粗又硬又大视频| 精华霜和精华液先用哪个| 嫁个100分男人电影在线观看| 国产精品电影一区二区三区| 亚洲乱码一区二区免费版| 久久精品91无色码中文字幕| 亚洲在线观看片| 亚洲精品在线观看二区| 国产一区二区三区在线臀色熟女| 18禁黄网站禁片午夜丰满| 久久久久久久久中文| 亚洲国产精品sss在线观看| 午夜福利视频1000在线观看| 久久久久久久久中文| 草草在线视频免费看| 在线观看日韩欧美| 人人妻人人看人人澡| 搡老岳熟女国产| 亚洲五月婷婷丁香| 中文字幕av在线有码专区| 欧美又色又爽又黄视频| av视频在线观看入口| 久久人妻av系列| 日本五十路高清| 99久久无色码亚洲精品果冻| 啦啦啦韩国在线观看视频| 亚洲成人精品中文字幕电影| 免费看十八禁软件| 99久久精品国产亚洲精品| 中文资源天堂在线| 午夜a级毛片| 在线观看免费午夜福利视频| 两性午夜刺激爽爽歪歪视频在线观看| 成人三级黄色视频| 极品教师在线免费播放| 日韩欧美在线二视频| 国内精品美女久久久久久| 最近视频中文字幕2019在线8| 亚洲国产中文字幕在线视频| 欧美绝顶高潮抽搐喷水| 国产老妇女一区| 精品乱码久久久久久99久播| 可以在线观看的亚洲视频| 国产免费男女视频| www.色视频.com| 中亚洲国语对白在线视频| 啦啦啦观看免费观看视频高清| 日韩精品青青久久久久久| 精品免费久久久久久久清纯| 国产在线精品亚洲第一网站| 日本与韩国留学比较| 亚洲精品久久国产高清桃花| 啦啦啦韩国在线观看视频| 美女大奶头视频| 精品一区二区三区视频在线 | 国产一区二区亚洲精品在线观看| 亚洲国产精品久久男人天堂| 免费在线观看影片大全网站| 午夜亚洲福利在线播放| 亚洲在线观看片| 欧美bdsm另类| 熟女人妻精品中文字幕| 少妇的逼好多水| 欧美中文综合在线视频| 国产精品久久久久久亚洲av鲁大| 日韩高清综合在线| 国产精品99久久久久久久久| 深夜精品福利| 久久精品国产99精品国产亚洲性色| 日韩中文字幕欧美一区二区| 男女之事视频高清在线观看| 亚洲天堂国产精品一区在线| 久久亚洲精品不卡| 非洲黑人性xxxx精品又粗又长| 亚洲成人免费电影在线观看| 18禁美女被吸乳视频| 99精品在免费线老司机午夜| 热99在线观看视频| 精品无人区乱码1区二区| 91九色精品人成在线观看| 他把我摸到了高潮在线观看| 国内精品久久久久久久电影| 在线a可以看的网站| 免费大片18禁| 午夜精品一区二区三区免费看| 日韩 欧美 亚洲 中文字幕| 亚洲成人久久爱视频| 久久国产精品影院| 露出奶头的视频| 亚洲在线观看片| 在线观看一区二区三区| 亚洲人成电影免费在线| 在线a可以看的网站| 日韩欧美免费精品| 国内精品久久久久精免费| 男女下面进入的视频免费午夜| 亚洲人成电影免费在线| 99视频精品全部免费 在线| 成人午夜高清在线视频| 亚洲成av人片在线播放无| 国产成年人精品一区二区| 校园春色视频在线观看| 亚洲精品在线观看二区| 国产亚洲av嫩草精品影院| 亚洲一区二区三区不卡视频| 色吧在线观看| 亚洲人成网站在线播| 人人妻人人澡欧美一区二区| 男插女下体视频免费在线播放| 网址你懂的国产日韩在线| 超碰av人人做人人爽久久 | 成人永久免费在线观看视频| 一二三四社区在线视频社区8| 国产精品久久电影中文字幕| 午夜免费成人在线视频| 男人和女人高潮做爰伦理| 网址你懂的国产日韩在线| 国产精品女同一区二区软件 | 国产精品免费一区二区三区在线| 老司机福利观看| 午夜影院日韩av| 亚洲人成伊人成综合网2020| 亚洲中文字幕一区二区三区有码在线看| 99国产精品一区二区蜜桃av| 欧美日本视频| 天堂动漫精品| 日本三级黄在线观看| 日本与韩国留学比较| 亚洲国产色片| 黄色成人免费大全| 免费观看人在逋| 免费一级毛片在线播放高清视频| 亚洲激情在线av| 色av中文字幕| 精品人妻1区二区| 最近在线观看免费完整版| 亚洲专区国产一区二区| 亚洲av熟女| 成人一区二区视频在线观看| 91麻豆精品激情在线观看国产| 婷婷丁香在线五月| 日本五十路高清| 久99久视频精品免费| 成人特级黄色片久久久久久久| 免费人成视频x8x8入口观看| 欧美乱色亚洲激情| 国产一区二区三区在线臀色熟女| 怎么达到女性高潮| 高清日韩中文字幕在线| 欧美日韩亚洲国产一区二区在线观看| 国产av在哪里看| 18禁黄网站禁片午夜丰满| 成年女人看的毛片在线观看| 最近最新免费中文字幕在线| 国产精品乱码一区二三区的特点| 国产精品女同一区二区软件 | 亚洲,欧美精品.| 国产又黄又爽又无遮挡在线| 国产伦精品一区二区三区视频9 | 一个人看视频在线观看www免费 | 久久人妻av系列| 色综合亚洲欧美另类图片| 欧美日韩亚洲国产一区二区在线观看| 亚洲乱码一区二区免费版| 亚洲欧美激情综合另类| 又粗又爽又猛毛片免费看| 51国产日韩欧美| 亚洲av成人不卡在线观看播放网| 国产麻豆成人av免费视频| 国内少妇人妻偷人精品xxx网站| 国产精品嫩草影院av在线观看 | 久久久成人免费电影| 内地一区二区视频在线| 热99在线观看视频| 欧美中文综合在线视频| 色噜噜av男人的天堂激情| 国产成人欧美在线观看| 午夜福利18| e午夜精品久久久久久久| 婷婷精品国产亚洲av在线| 在线免费观看不下载黄p国产 | 成人av在线播放网站| 精品电影一区二区在线| 熟女人妻精品中文字幕| 在线观看av片永久免费下载| 欧美日韩福利视频一区二区| 精品人妻偷拍中文字幕| 三级毛片av免费| 精品人妻1区二区| 又爽又黄无遮挡网站| 97人妻精品一区二区三区麻豆| 国产97色在线日韩免费| 2021天堂中文幕一二区在线观| 中文字幕精品亚洲无线码一区| 国产三级中文精品| 国产亚洲欧美98| 亚洲精品成人久久久久久| 亚洲精品456在线播放app | 久久久久性生活片| 国产精品影院久久| 无人区码免费观看不卡| 日韩欧美国产一区二区入口| 国产日本99.免费观看| 亚洲美女黄片视频| 久久久国产成人精品二区| 久久精品国产自在天天线| 久久伊人香网站| 久久久久久久久大av| 国产色爽女视频免费观看| 在线免费观看的www视频| 国产成人av激情在线播放| 19禁男女啪啪无遮挡网站| 精品久久久久久久人妻蜜臀av| 久久久久久大精品| 国产伦在线观看视频一区| av视频在线观看入口| 黄色日韩在线|