亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于BLS聚合簽名技術(shù)的平行鏈共識(shí)算法優(yōu)化方案

        2022-12-18 08:11:04郭榮新蔣文賢馬登極
        計(jì)算機(jī)應(yīng)用 2022年12期
        關(guān)鍵詞:主鏈平行共識(shí)

        劉 琪,郭榮新*,蔣文賢,馬登極

        (1.華僑大學(xué) 信息科學(xué)與工程學(xué)院,福建 廈門 361021;2.華僑大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,福建 廈門 361021;3.杭州復(fù)雜美科技有限公司,杭州 310061)

        0 引言

        中本聰于2008 年11 月1 日發(fā)表一篇關(guān)于闡述比特幣原理的白皮書《比特幣:一種點(diǎn)對(duì)點(diǎn)式(Peer-to-Peer,P2P)的電子現(xiàn)金系統(tǒng)》[1],提出一種基于點(diǎn)對(duì)點(diǎn)技術(shù)的電子現(xiàn)金系統(tǒng),使網(wǎng)上支付由一方發(fā)起,直接支付給另一方,這個(gè)過(guò)程沒(méi)有通過(guò)任何的金融機(jī)構(gòu)。如果在第三方的監(jiān)督下才能解決雙重支付的問(wèn)題,那么中本聰提出的這個(gè)系統(tǒng)將沒(méi)有意義。第三方或者中介機(jī)構(gòu)的信任問(wèn)題一直存在,區(qū)塊鏈[2]的出現(xiàn)旨在解決信任問(wèn)題,它被稱作是“信任的機(jī)器”。

        區(qū)塊鏈技術(shù)包括分布式存儲(chǔ)技術(shù)、密碼學(xué)技術(shù)、智能合約和共識(shí)機(jī)制等,具有數(shù)據(jù)不可篡改、信息可追溯、公開透明、集體維護(hù)、匿名性等特點(diǎn)。隨著近幾年區(qū)塊鏈技術(shù)的快速發(fā)展,區(qū)塊鏈的應(yīng)用不再局限于金融領(lǐng)域,目前已經(jīng)滲透于各行各業(yè),比如存證溯源、政務(wù)、資產(chǎn)數(shù)字化、智慧監(jiān)管等領(lǐng)域。盡管區(qū)塊鏈技術(shù)迅猛發(fā)展,但是在去中心化的架構(gòu)下仍然存在性能和交易吞吐量等問(wèn)題,區(qū)塊鏈只有解決此類問(wèn)題才能有更大規(guī)模的落地。Chain33、Polkadot[3]、Cosmos[4]均使用類似的跨鏈技術(shù)[5]來(lái)解決區(qū)塊鏈面臨的性能問(wèn)題。Cosmos 的技術(shù)模式與Chain33 和Polkadot 不同,對(duì)于使用者來(lái)說(shuō)門檻更高,每個(gè)使用者都要組共識(shí)、搭節(jié)點(diǎn),并且鏈上數(shù)據(jù)維護(hù)成本高,而Chain33 成本相對(duì)較低可快速部署。Chain33 和Polkadot 都是平行鏈模式均采用平行鏈架構(gòu),Polkadot 目前在測(cè)試網(wǎng)階段,從Polkadot 發(fā)展規(guī)劃來(lái)看,Chain33 目前已經(jīng)實(shí)現(xiàn)的資產(chǎn)跨鏈流通等功能,相對(duì)領(lǐng)先1~2 年。

        Polkadot 最早提出平行鏈的概念是為了解決區(qū)塊鏈在互操作性、可擴(kuò)展性以及共享安全性方面存在的弊端,但到目前為止還沒(méi)有實(shí)際的應(yīng)用落地。平行鏈的概念最早由杭州復(fù)雜美科技有限公司提出,百度等也在白皮書中引入這個(gè)概念。Chain33 是由杭州復(fù)雜美科技有限公司創(chuàng)建的區(qū)塊鏈底層系統(tǒng),Chain33 首創(chuàng)的平行鏈架構(gòu)中平行鏈依附于主鏈并且使用主鏈的共識(shí)網(wǎng)絡(luò),復(fù)雜的功能在平行鏈上完成,主鏈只做數(shù)據(jù)存儲(chǔ)和共識(shí),即使出現(xiàn)性能問(wèn)題或者智能合約受到攻擊,也僅破壞平行鏈不會(huì)影響主鏈的安全;由于主鏈的安全性極高,因此平行鏈的所有數(shù)據(jù)可以從主鏈同步回來(lái)。同時(shí)平行鏈也是在主鏈的基礎(chǔ)上搭建的區(qū)塊鏈,可以發(fā)展獨(dú)立的區(qū)塊鏈生態(tài),擁有自己的節(jié)點(diǎn)和部分共識(shí)、能夠編寫多種智能合約、擁有獨(dú)立的錢包、擁有獨(dú)立的區(qū)塊鏈瀏覽器等;基于主鏈統(tǒng)一的交易共識(shí),不論是平行鏈和主鏈,還是不同的平行鏈之間的跨鏈資產(chǎn)都可以做到無(wú)縫轉(zhuǎn)移,使之前的跨鏈時(shí)間從小時(shí)分鐘級(jí)別縮小到幾秒,跨鏈效率高。Polkadot 與Chain33 平行鏈對(duì)比分析如表1 所示。

        表1 Polkadot與Chain33平行鏈的對(duì)比分析Tab.1 Comparative analysis of Polkadot and Chain33 parallel chain

        比特元(BiTYuan,BTY)是一種簡(jiǎn)單穩(wěn)定、可擴(kuò)展性強(qiáng)的公有鏈網(wǎng)絡(luò)。比特元區(qū)塊鏈的研發(fā)基于Chain33 底層架構(gòu),是全球首個(gè)實(shí)現(xiàn)平行鏈架構(gòu)的公有鏈網(wǎng)絡(luò)。在比特元區(qū)塊鏈上,以比特元為主鏈向外延伸多條平行鏈,將不同的交易分散到不同的平行鏈上執(zhí)行,分擔(dān)主鏈的運(yùn)算負(fù)荷,同時(shí)提升整個(gè)系統(tǒng)的運(yùn)行效率。比特元上的各條平行鏈既可獨(dú)立開發(fā)去中心化應(yīng)用(Decentralized Application,DApp),建設(shè)多樣化的應(yīng)用生態(tài),又可實(shí)現(xiàn)多鏈間的跨鏈交易和數(shù)據(jù)交換功能。在比特元中交易首先發(fā)送到主鏈被共識(shí)打包,隨后同步到平行鏈上被執(zhí)行,最后將執(zhí)行結(jié)果的hash 寫回主鏈進(jìn)行共識(shí),實(shí)現(xiàn)交易并行執(zhí)行提升系統(tǒng)吞吐量TPS(Transactions Per Second),在此過(guò)程中BTY 是交易必需的燃料。本文以比特元區(qū)塊鏈網(wǎng)絡(luò)為例介紹Chain33 平行鏈架構(gòu)以及結(jié)合BLS聚合簽名技術(shù)對(duì)平行鏈共識(shí)算法做優(yōu)化。

        1 區(qū)塊鏈中常用的共識(shí)算法

        共識(shí)機(jī)制在去中心化的思想上解決了節(jié)點(diǎn)之間相互信任的問(wèn)題,是區(qū)塊鏈能夠穩(wěn)定持續(xù)運(yùn)行下去的主要力量。目前區(qū)塊鏈中常用的共識(shí)算法[6]可分為兩大類:公有鏈和許可鏈。公有鏈的典型代表有工作量證明(Proof-of-Work,PoW)[7]、權(quán)益證明(Proof-of-Stake,PoS)[8]以及股份授權(quán)證明(Delegate Proof of Stake,DPoS)[9-10];許可鏈的典型代表有實(shí)用拜占庭容錯(cuò)(Practical Byzantine Fault Tolerance,PBFT)[11]和(Replicated And Fault Tolerant)[12]。對(duì)上述共識(shí)算法從去中心化程度、容錯(cuò)率、資源消耗以及吞吐量等方面作簡(jiǎn)單對(duì)比分析,如表2 所示。

        表2 區(qū)塊鏈常用共識(shí)算法的對(duì)比分析Tab.2 Comparative analysis of commonly used consensus algorithms in blockchain

        這些常用的共識(shí)算法都可應(yīng)用于主鏈中,而平行鏈中每個(gè)超級(jí)節(jié)點(diǎn)都會(huì)向主鏈提供共識(shí)交易。n個(gè)超級(jí)節(jié)點(diǎn)的共識(shí)結(jié)果在主鏈達(dá)成共識(shí),共識(shí)的規(guī)則是2/3 的超級(jí)節(jié)點(diǎn)結(jié)果一致,第2 章將詳細(xì)介紹平行鏈的共識(shí)算法。

        2 平行鏈架構(gòu)

        2.1 主鏈+平行鏈架構(gòu)

        圖1 展示了主鏈+平行鏈架構(gòu),該架構(gòu)中一條主鏈附屬多條平行鏈,每條平行鏈只與主鏈交互,各條平行鏈之間互相不干涉對(duì)方的交易。平行鏈的共識(shí)流程為:首先共識(shí)交易在主鏈上被打包;緊接著平行鏈上的超級(jí)節(jié)點(diǎn)從主鏈同步共識(shí)交易,并打包交易數(shù)據(jù)生成區(qū)塊同時(shí)上傳上鏈請(qǐng)求;然后主鏈上的節(jié)點(diǎn)廣播共識(shí)交易并驗(yàn)證共識(shí)結(jié)果的正確性;最后平行鏈上的所有節(jié)點(diǎn)同步交易數(shù)據(jù)。

        圖1 主鏈+平行鏈架構(gòu)Fig.1 Main chain+parallel chain architecture

        主鏈+平行鏈架構(gòu)具有如下幾個(gè)特點(diǎn):

        1)高效性:平行鏈發(fā)送共識(shí)交易到主鏈上進(jìn)行共識(shí)驗(yàn)證和數(shù)據(jù)存儲(chǔ),多條平行鏈交易并行處理,共識(shí)效率大幅提升。

        2)穩(wěn)定性:平行鏈上運(yùn)行復(fù)雜的功能,主鏈只做存證等一些核心功能,整個(gè)架構(gòu)簡(jiǎn)單穩(wěn)定。

        3)安全性:平行鏈的安全由主鏈保障,當(dāng)智能合約或虛擬機(jī)被攻擊時(shí)僅破壞平行鏈,平行鏈上的所有數(shù)據(jù)可以快速?gòu)闹麈溚?,從而保證數(shù)據(jù)完整不被更改。

        4)高擴(kuò)展性:平行鏈擁有自己的生態(tài),能在鏈上發(fā)行自己的通證(token),相當(dāng)于一條獨(dú)立自主的公鏈,并且支持主鏈和平行鏈跨鏈和平行鏈之間的跨鏈交易。

        2.2 平行鏈的節(jié)點(diǎn)設(shè)計(jì)

        Chain33 平行鏈上的節(jié)點(diǎn)有授權(quán)節(jié)點(diǎn)、超級(jí)節(jié)點(diǎn)、監(jiān)督節(jié)點(diǎn)和普通節(jié)點(diǎn)4 種角色,下面對(duì)它們分別進(jìn)行介紹。

        1)授權(quán)節(jié)點(diǎn)。

        授權(quán)節(jié)點(diǎn)是參與共識(shí)、發(fā)送共識(shí)交易的節(jié)點(diǎn)。不是所有的節(jié)點(diǎn)都有權(quán)限發(fā)送共識(shí)交易,只有授權(quán)節(jié)點(diǎn)可以發(fā)送共識(shí)交易,普通節(jié)點(diǎn)沒(méi)有權(quán)限發(fā)送共識(shí)交易。

        2)普通節(jié)點(diǎn)。

        普通節(jié)點(diǎn)不發(fā)送共識(shí)交易,只接收共識(shí)交易并校驗(yàn)共識(shí)結(jié)果,以此體現(xiàn)區(qū)塊鏈分布式一致性校驗(yàn)的設(shè)計(jì)思路,即授權(quán)節(jié)點(diǎn)負(fù)責(zé)共識(shí)安全,普通節(jié)點(diǎn)保持和授權(quán)節(jié)點(diǎn)一致,所有節(jié)點(diǎn)協(xié)同統(tǒng)一。

        3)超級(jí)節(jié)點(diǎn)。

        超級(jí)節(jié)點(diǎn)負(fù)責(zé)平行鏈的共識(shí)安全,并得到一定的挖礦獎(jiǎng)勵(lì),每個(gè)超級(jí)節(jié)點(diǎn)都會(huì)向主鏈發(fā)送共識(shí)交易,n個(gè)超級(jí)節(jié)點(diǎn)達(dá)成共識(shí)的規(guī)則是超過(guò)2/3 的超級(jí)節(jié)點(diǎn)共識(shí)結(jié)果一致;只有有了超級(jí)節(jié)點(diǎn)共識(shí),平行鏈的跨鏈功能才可以啟用。

        4)監(jiān)督節(jié)點(diǎn)。

        監(jiān)督超級(jí)節(jié)點(diǎn)的共識(shí)過(guò)程,防止超級(jí)節(jié)點(diǎn)聯(lián)合作弊。當(dāng)超級(jí)節(jié)點(diǎn)的共識(shí)結(jié)果和監(jiān)督節(jié)點(diǎn)的結(jié)果不一致時(shí),暫停共識(shí),直到超級(jí)節(jié)點(diǎn)或監(jiān)督節(jié)點(diǎn)修正共識(shí)結(jié)果達(dá)成共識(shí)為止。

        2.3 平行鏈共識(shí)算法的過(guò)程分析

        主鏈上的共識(shí)算法有多種,比如在公有鏈中使用PoS,在聯(lián)盟鏈中使用Tendermint 或PBFT,在私鏈中使用RAFT。平行鏈上的共識(shí)算法與主鏈?zhǔn)褂玫墓沧R(shí)算法不同,主要的區(qū)別是平行鏈依賴于主鏈的共識(shí)網(wǎng)絡(luò),主要過(guò)程為平行鏈?zhǔn)跈?quán)節(jié)點(diǎn)或超級(jí)節(jié)點(diǎn)發(fā)送共識(shí)交易到主鏈上進(jìn)行共識(shí),然后再同步共識(shí)交易到平行鏈進(jìn)行自共識(shí)驗(yàn)證,共識(shí)規(guī)則為超過(guò)2/3節(jié)點(diǎn)共識(shí)結(jié)果一致則達(dá)成共識(shí),自共識(shí)不通過(guò)的平行鏈節(jié)點(diǎn)將停止生成區(qū)塊。

        表3 詳細(xì)描述了平行鏈共識(shí)過(guò)程之前先設(shè)定共識(shí)過(guò)程中涉及的符號(hào)及其含義。

        表3 符號(hào)及其含義Tab.3 Symbols and their meanings

        目前平行鏈的共識(shí)算法如下所示。

        1)各參數(shù)的設(shè)定。

        ①設(shè)平行鏈上待共識(shí)的區(qū)塊為B1;

        ②設(shè)第一 平行鏈 為p_chain1(x1,x2,…,xn),其 中x1,x2,…,xn稱為超級(jí)節(jié)點(diǎn),并且滿足n≥3f+1,f∈N+;

        ③設(shè)p_chain1(x1,x2,…,xn) 對(duì)應(yīng)的 主鏈為C1(X1,X2,…,Xn);

        ④ 待共識(shí)的區(qū)塊B1中包含的若干信息有:狀態(tài)哈希s_hash、簽名信息S、待共識(shí)的區(qū)塊高度H和打包各交易的狀態(tài)信息MS;

        ⑤ 各超級(jí)節(jié)點(diǎn)(x1,x2,…,xn)打包B1的若干信息生成區(qū)塊信息BMi={s_hash_i,Hi,Si,MSi};

        ⑥ 達(dá)成共識(shí)的節(jié)點(diǎn)數(shù)設(shè)為Num。

        2)共識(shí)過(guò)程。

        ①x1,x2,…,xn分別將BM1={s_hash_1,H1,S1,MS1},BM2={s_hash_2,H2,S2,MS2},…,BMn={s_hash_n,Hn,Sn,MSn} 發(fā)送至主鏈C1上對(duì)應(yīng)節(jié)點(diǎn)x1,x2,…,xn處。由于發(fā)送1 筆共識(shí)交易將產(chǎn)生0.001 BTY 的手續(xù)費(fèi),因此n個(gè)共識(shí)節(jié)點(diǎn)發(fā)送n筆共識(shí)交易需產(chǎn)生0.001nBTY 的手續(xù)費(fèi)。

        ②x1,x2,…,xn將BM1,BM2,…,BMn記錄到主鏈上并互相廣播。

        ③X1,X2,…,Xn每個(gè)節(jié)點(diǎn)有R1,R2,…,Rn這n筆共識(shí)交易的全部?jī)?nèi)容,由于1 筆共識(shí)交易占用4 KB 的存儲(chǔ)空間,因此n筆共識(shí)交易共占用主鏈4nKB 的存儲(chǔ)空間。

        ④ 此時(shí)進(jìn)行共識(shí)驗(yàn)證,x1,x2,…,xn從C1同步共識(shí)交易Tx={BM1,BM2,…,BMn},此時(shí)p_chain1(x1,x2,…,xn)上每個(gè)節(jié)點(diǎn)都含有其他節(jié)點(diǎn)的共識(shí)交易信息。

        ⑤p_chain1進(jìn)行自共識(shí),若Num≥n*2/3,即{BM1,BM2,…,BMn}中至少有n*2/3 個(gè)區(qū)塊信息相同則達(dá)成共識(shí)。

        ⑥ 假設(shè)滿足閾值,達(dá)成共識(shí),共識(shí)結(jié)果為R={s_hash,H,S,MS}生成的共識(shí)標(biāo)識(shí)為u,共識(shí)高度為H。

        2.4 平行鏈共識(shí)算法的缺陷

        由2.3 節(jié)可知平行鏈的共識(shí)過(guò)程為雙層共識(shí),首先平行鏈交易發(fā)送到主鏈上進(jìn)行共識(shí)打包;然后平行鏈同步主鏈的區(qū)塊并選取與本平行鏈有關(guān)的交易執(zhí)行,再將區(qū)塊哈希發(fā)送到主鏈上做共識(shí);最后平行鏈上的節(jié)點(diǎn)同步主鏈的共識(shí)交易進(jìn)行二次共識(shí)。平行鏈共識(shí)全過(guò)程的缺陷分析如下:

        1)平行鏈上的超級(jí)節(jié)點(diǎn)越多,發(fā)送到主鏈上的共識(shí)交易就越多,多筆相同的共識(shí)交易將占據(jù)主鏈大量的存儲(chǔ)空間;并且多條平行鏈依附于一條主鏈,主鏈上交易記錄的越多,主鏈的交易處理能力[13]就越弱。

        2)平行鏈上的超級(jí)節(jié)點(diǎn)每發(fā)送一次共識(shí)交易到主鏈上就會(huì)產(chǎn)生一筆手續(xù)費(fèi),當(dāng)多個(gè)超級(jí)節(jié)點(diǎn)同時(shí)發(fā)送共識(shí)交易則會(huì)產(chǎn)生多筆手續(xù)費(fèi),同時(shí)消耗大量的資源。

        3 平行鏈共識(shí)算法優(yōu)化設(shè)計(jì)

        3.1 Leader節(jié)點(diǎn)選取算法

        在平行鏈聚合簽名方案中,需要選取一個(gè)Leader 節(jié)點(diǎn)發(fā)送整個(gè)共識(shí)交易,并且支持輪換操作。

        當(dāng)前的一些Leader 節(jié)點(diǎn)選取算法比較復(fù)雜,比如有權(quán)重設(shè)計(jì),或者不支持輪換操作,只讓一個(gè)節(jié)點(diǎn)發(fā)送共識(shí)交易,可能只消耗一個(gè)節(jié)點(diǎn)的手續(xù)費(fèi),不具備公平性。此處通過(guò)對(duì)比RAFT[14]中的Leader 節(jié)點(diǎn)選取方案可知,在RAFT 共識(shí)機(jī)制中,Leader 節(jié)點(diǎn)選舉成功后會(huì)不斷地向follower 跟隨節(jié)點(diǎn)發(fā)送心跳消息,選舉周期將會(huì)一直持續(xù)到某個(gè)follower 節(jié)點(diǎn)沒(méi)有收到心跳消息并成為candidate 候選節(jié)點(diǎn)為止,這時(shí)開啟下一輪Leader 節(jié)點(diǎn)的選舉。由于RAFT 中Leader 節(jié)點(diǎn)任期時(shí)間無(wú)法確定并且不支持輪換操作,每個(gè)節(jié)點(diǎn)消耗的手續(xù)費(fèi)差別大,因此不適用于平行鏈的共識(shí)算法。針對(duì)上述不足,設(shè)計(jì)較為輕量的Leader 節(jié)點(diǎn)選舉和輪換機(jī)制,保證系統(tǒng)穩(wěn)定。

        決定Leader 節(jié)點(diǎn)的因素是高度(height)和偏移(offset),當(dāng)offset=0 時(shí),有關(guān)超級(jí)節(jié)點(diǎn)中Leader 節(jié)點(diǎn)的選舉和輪換機(jī)制如下。

        1)平行鏈各個(gè)超級(jí)節(jié)點(diǎn)配置成功后,順序固定,依次作為L(zhǎng)eader 節(jié)點(diǎn)。

        2)假設(shè)現(xiàn)有超級(jí)節(jié)點(diǎn)A、B、C、D,對(duì)應(yīng)的索引依次為0、1、2、3。

        3)現(xiàn)設(shè)置初始Leader 節(jié)點(diǎn)索引為0,即base=0,每隔一定共識(shí)高度輪換下一個(gè)節(jié)點(diǎn)為L(zhǎng)eader 節(jié)點(diǎn),假設(shè)每隔100 高度做一次輪換。

        4)設(shè)置base=(height/100)%nodes,得到當(dāng)前共識(shí)高度下Leader 節(jié)點(diǎn)的索引,height依次增長(zhǎng),base也依次增長(zhǎng)。

        5)Leader 節(jié)點(diǎn)需要每隔一段時(shí)間比如t=5 s 發(fā)送心跳消息,向其他節(jié)點(diǎn)聲明自己是Leader 節(jié)點(diǎn);同時(shí)其他非Leader 節(jié)點(diǎn)也在等待接收心跳消息。

        6)Leader 節(jié)點(diǎn)每隔5 s 發(fā)送一次心跳消息,只要非Leader節(jié)點(diǎn)在1 min 以內(nèi)能夠收到一次心跳消息就不用做offset偏移;如果非Leader 節(jié)點(diǎn)在1 min 之內(nèi)沒(méi)有收到來(lái)自Leader 節(jié)點(diǎn)的心跳消息,那么設(shè)置一個(gè)offset偏移值,令offset=(offset+1)%nodes,并 且Leader=(offset+base)%nodes可 以唯一確定一個(gè)新的Leader 節(jié)點(diǎn)。

        這種情況又分為以下兩類。

        1)Leader 節(jié)點(diǎn)確實(shí)沒(méi)有發(fā)送心跳消息,非Leader 節(jié)點(diǎn)重新選取下一個(gè)Leader 節(jié)點(diǎn);若本節(jié)點(diǎn)發(fā)現(xiàn)自己是Leader 節(jié)點(diǎn),則廣播心跳消息。

        2)如果僅自己沒(méi)有收到心跳消息,其他非Leader 節(jié)點(diǎn)都收到心跳消息,那么僅該節(jié)點(diǎn)偏移Leader 節(jié)點(diǎn),直到自己是Leader 節(jié)點(diǎn)為止,廣播心跳消息。

        但這樣會(huì)出現(xiàn)兩個(gè)Leader 節(jié)點(diǎn)的情況,如果同時(shí)有多個(gè)不同Leader 節(jié)點(diǎn)的心跳消息,則節(jié)點(diǎn)會(huì)和自己索引作比較。

        ①若兩個(gè)base索引不同,則不處理,說(shuō)明兩個(gè)Leader 節(jié)點(diǎn)不是同樣的共識(shí)高度。

        ②若base相同,offset不同,如果自己的offset索引比較小,則接受大的Leader 節(jié)點(diǎn)索引為L(zhǎng)eader,具體為設(shè)置新的offset;如果自己offset比較大,則不處理。

        這樣在處理一些僵尸節(jié)點(diǎn)的時(shí)候,系統(tǒng)會(huì)自動(dòng)切換到下一個(gè)節(jié)點(diǎn)為L(zhǎng)eader 節(jié)點(diǎn)繼續(xù)服務(wù),發(fā)送共識(shí)消息;因?yàn)楣沧R(shí)height不變,所以此時(shí)base也不變,只是offset改變發(fā)生偏移。

        當(dāng)共識(shí)高度超過(guò)預(yù)先設(shè)置的間隔之后,base才會(huì)發(fā)生改變,從而更新下一個(gè)Leader 節(jié)點(diǎn),保持系統(tǒng)共識(shí)穩(wěn)定。

        3.2 BSL簽名算法

        BLS(Boneh-Lynn-Shacham)簽名算法由Boneh 等[15]提出,BLS 簽名無(wú)需隨機(jī)數(shù)生成器即可實(shí)現(xiàn)聚合多個(gè)簽名以及m-n多重簽名,同時(shí)減少節(jié)點(diǎn)間的多余通信開銷。該簽名算法有兩個(gè)基本概念:曲線哈希和曲線配對(duì)即雙線性映射e函數(shù)[16-17]。

        BLS 簽名算法與橢圓曲線數(shù)字簽名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)和Schnorr 簽名算法不同:在ECDSA 和Schnorr 簽名中對(duì)消息求哈希的結(jié)果是數(shù)值;而在BLS 簽名算法中用新型散列函數(shù)對(duì)消息求哈希,并將得到的結(jié)果映射到橢圓曲線的一個(gè)點(diǎn)上[18]。

        雙線性映射e函數(shù)由六元組η=(G1,G2,GT,n,e,g1,g2)組成,G1和G2是階為p的加法循環(huán)群,GT是具有相同階的乘法循環(huán)群。g1是加法群G1的生成元,g2是加法群G2的生成元。e是雙線性映射,需要進(jìn)行曲線配對(duì),則有G1×G2→GT。設(shè)P,Q為曲線上的兩個(gè)點(diǎn),?a,b∈Zp,則滿足以下性質(zhì):

        可見,配對(duì)函數(shù)對(duì)曲線上的運(yùn)算滿足分配律、交換律和結(jié)合律。

        BLS 簽名過(guò)程如下:假設(shè)待簽名的消息為m,私鑰為k,公鑰P=k*G;求簽名S時(shí),先對(duì)消息m求哈希后映射到橢圓曲線上,得到曲線哈希H(m),再乘以私鑰k即得S=k*H(m)。公鑰P驗(yàn)證簽名S,則有:

        本文采用BLS 聚合簽名技術(shù)對(duì)平行鏈共識(shí)算法進(jìn)行優(yōu)化。假設(shè)Leader 節(jié)點(diǎn)要聚合N個(gè)超級(jí)節(jié)點(diǎn)的簽名,由于平行鏈共識(shí)的特點(diǎn)是簽名不同共識(shí)數(shù)據(jù)相同,因此共識(shí)交易設(shè)為M,對(duì)共識(shí)交易求曲線哈??傻肏(M),ki為私鑰,可得公鑰Pi=ki*G,聚合簽 名Si=ki*H(M),則需驗(yàn) 證e(G,Si)=e(Pi,H(M))成立。驗(yàn)證過(guò)程如下:

        4 平行鏈共識(shí)算法的優(yōu)化方案

        傳統(tǒng)的平行鏈共識(shí)算法是平行鏈的每個(gè)共識(shí)節(jié)點(diǎn)都發(fā)送共識(shí)交易。優(yōu)化方案是平行鏈的共識(shí)節(jié)點(diǎn)先內(nèi)部發(fā)送共識(shí)交易并附上BLS 簽名數(shù)據(jù);再由Leader 節(jié)點(diǎn)整合共識(shí)交易并聚合交易簽名;最后將新的共識(shí)交易發(fā)送到主鏈上驗(yàn)證,同時(shí)結(jié)合BLS 聚合簽名技術(shù)防止篡改的發(fā)生。這種共識(shí)算法既節(jié)省區(qū)塊空間、節(jié)約手續(xù)費(fèi),還能夠保證系統(tǒng)的安全。

        4.1 系統(tǒng)初始化設(shè)置

        設(shè)平行鏈為p_chain_1,平行鏈上的共識(shí)節(jié)點(diǎn)n需滿足n≥3f+1,f∈N+。預(yù)配置的聚合簽名算法為BLS 簽名算法,BLS 簽名是利用雙線性對(duì)構(gòu)造的一種短簽名方案;預(yù)配置授權(quán)賬戶組,根據(jù)x1,x2,…,xn順序依次設(shè)置平行鏈上節(jié)點(diǎn)的索引為0,1,…,n-1(n≥4)。

        4.2 共識(shí)過(guò)程

        共識(shí)算法流程如圖2 所示。

        圖2 優(yōu)化后的平行鏈共識(shí)算法流程Fig.2 Flow chart of parallel chain consensus algorithm after optimization

        1)系統(tǒng)設(shè)置。令q為大素?cái)?shù),加法循環(huán)群G1和乘法循環(huán)群G2為q階,P是G1的生成元,Q是G2的生成元;雙線性映射為e=G1×G2→GT,定義散列函數(shù)H0:{0,1}*→G1。

        2)生成共識(shí)內(nèi)容并提取密鑰。假設(shè)平行鏈待共識(shí)的區(qū)塊為p_block(100),其對(duì)應(yīng)的主鏈區(qū)塊為block(200)。以平行鏈P1上的節(jié)點(diǎn)x1為例說(shuō)明,x1從block(200)同步p_chain_1 的各筆交易Tx=(tx1,tx2,…,txn),x1打包Tx并生成p_block_x1,計(jì) 算p_block_x1獲得共 識(shí)內(nèi)容msg(100)_x1={block_hash,height,bitmap}。BLS 簽名需 要的私鑰為Secp265k1 的1/2,采用Secp265k1 私鑰不斷取hash直到滿足BLS 范圍為止作為BLS 私鑰,令節(jié)點(diǎn)x1的私鑰為xa,則x1的公鑰為Pub_bls_x1=ka*P。

        3)簽名。x1根據(jù)BLS 聚合簽名算法對(duì)msg(100)_x1進(jìn)行簽名獲得簽名數(shù)據(jù)bls_(msg(100)_x1)=ka*H(msg(100)_x1)。

        4)對(duì)交易內(nèi)容求哈希并映射到曲線上。H(msg(100)_x1)=H(block_hash‖height‖bitmap)。

        5)預(yù)設(shè)授權(quán)賬戶組。x1,x2,…,xn按序排列并設(shè)置索引為0,1,…,n-1,一一對(duì)應(yīng)于 BLS 公 鑰Pub_bls_x1,Pub_bls_x2,…,Pub_bls_xn。

        6)廣播。x1將msg(100)_x1+bls_(msg(100)_x1)廣播給其他節(jié)點(diǎn)x2,x3,…,xn;同理x2,x3,…,xn節(jié)點(diǎn)也作如上運(yùn)算操作。在x1,x2,…,xn都正常運(yùn)行的情況下,對(duì)x1而言已收到其他節(jié)點(diǎn)的共識(shí)內(nèi)容和簽名信息{msg(100)_x2+bls_(msg(100)_x2),msg(100)_x3+bls_(msg(100)_x3),…,msg(100)_xn+bls_(msg(100)_xn)} 。

        7)自共識(shí) 。各個(gè)節(jié) 點(diǎn)的共 識(shí)內(nèi)容msg(100)_x1,msg(100)_x2,…,msg(100)_xn在內(nèi)部進(jìn)行自共識(shí)。若x1不同,其余都相同,則Num=n-1 ≥2/3*n(n≥4),達(dá)成共識(shí),共識(shí)內(nèi)容為msg(100)。

        8)聚合簽名。聚合達(dá)成共識(shí)的節(jié)點(diǎn),其簽名數(shù)據(jù)為bls_(msg(100)_x2)+bls_(msg(100)_x3)+… +bls_(msg(100)_xn),在之前設(shè)置好的授權(quán)賬戶組中,令達(dá)成共識(shí)為1,未達(dá)成共識(shí)為0,即bitmap=(0,1,1,1,…,1)。

        9)聚合后 的共識(shí)交易。Tx100={msg(100),bls(msg(100_x2)+bls(msg(100_x3)+… +bls(msg(100_xn)},bitmap=(0,1,1,1,…,1)。

        10)驗(yàn)證聚合簽名正確性。由Leader 節(jié)點(diǎn)將Tx100 發(fā)送至主鏈上,主鏈節(jié) 點(diǎn)根據(jù)bitmap=(0,1,1,1,…,1) 授 權(quán)賬 戶組查找對(duì)應(yīng)的BLS 公鑰可得到{Pub_bls_x2,Pub_bls_x3,…,Pub_bls_xn},聚合簽名公鑰得{Pub_bls_x2+Pub_bls_x3+… +Pub_bls_xn=},結(jié)合共識(shí)內(nèi)容msg(100)判斷:

        是否正確。

        下面給出聚合簽名驗(yàn)證過(guò)程的正確性證明。

        因?yàn)槭剑?)的正確性被成功驗(yàn)證,所以平行鏈上的各個(gè)共識(shí)節(jié)點(diǎn)可以先互相廣播發(fā)送共識(shí)交易達(dá)成共識(shí),再由Leader 節(jié)點(diǎn)將達(dá)成的共識(shí)交易內(nèi)容與各節(jié)點(diǎn)的交易簽名聚合后發(fā)送到主鏈上;主鏈根據(jù)bitmap在預(yù)配置的授權(quán)賬戶組中查找到平行鏈的各共識(shí)節(jié)點(diǎn)所對(duì)應(yīng)的BLS 公鑰,對(duì)聚合簽名驗(yàn)證通過(guò),且公鑰賬戶超過(guò)2/3 共識(shí)閾值,則共識(shí)通過(guò),同時(shí)證明該優(yōu)化算法的可行性。

        5 實(shí)驗(yàn)與結(jié)果分析

        5.1 Leader節(jié)點(diǎn)選取實(shí)驗(yàn)

        Chain33 是一套支持共識(shí)、數(shù)據(jù)庫(kù)、執(zhí)行器等可插拔、易升級(jí)的區(qū)塊鏈架構(gòu),本文基于Chain33 底層架構(gòu)搭建平行鏈架構(gòu),通過(guò)Go 語(yǔ)言實(shí)現(xiàn)平行鏈共識(shí)算法的優(yōu)化。實(shí)驗(yàn)環(huán)境配置如表4 所示。

        表4 實(shí)驗(yàn)環(huán)境配置Tab.4 Experimental environment configuration

        本文實(shí)驗(yàn)中設(shè)置4 個(gè)超級(jí)節(jié)點(diǎn)進(jìn)行Leader 節(jié)點(diǎn)的選取,分別為A、B、C、D,對(duì)應(yīng)的索引號(hào)分別為0、1、2、3,分別對(duì)Leader 節(jié)點(diǎn)選取過(guò)程中出現(xiàn)的3 種情況進(jìn)行分析。

        1)normal:正常情況。

        2)case1-1:Leader 節(jié)點(diǎn)因本身故障在規(guī)定時(shí)間內(nèi)未發(fā)出心跳消息,進(jìn)行offset偏移至下一個(gè)節(jié)點(diǎn)。

        3)case1-2:Leader 節(jié)點(diǎn)因本身故障未在規(guī)定的時(shí)間內(nèi)發(fā)出心跳消息并且進(jìn)行offset偏移至下一個(gè)節(jié)點(diǎn)處時(shí),下一個(gè)節(jié)點(diǎn)仍發(fā)生故障再次進(jìn)行offset偏移操作。

        假設(shè)當(dāng)Leader 節(jié)點(diǎn)為D 索引號(hào)為3 時(shí)未正常發(fā)出心跳消息,Matlab 仿真圖如圖3 所示。

        圖3 Leader節(jié)點(diǎn)選取算法Fig.3 Leader node selection algorithm

        分析圖3 可得,在normal 正常情況下隨著共識(shí)高度的增長(zhǎng)每隔100 共識(shí)高度發(fā)生一次Leader 節(jié)點(diǎn)輪換操作,當(dāng)Leader 節(jié)點(diǎn)為D、索引號(hào)為3 時(shí),下一次輪換又回到節(jié)點(diǎn)為A、索引號(hào)為0 處,一直重復(fù)這種循環(huán);在case1-1 情況下,Leader 節(jié)點(diǎn)為D、索引號(hào)為3 時(shí)發(fā)生故障,此時(shí)進(jìn)行offset偏移至下一個(gè)節(jié)點(diǎn)為A、索引號(hào)為0 處,此時(shí)A 正常;在case1-2情況下,進(jìn)行offset偏移至A,但此時(shí)A 節(jié)點(diǎn)也出了故障,因此再次進(jìn)行offset偏移至下個(gè)節(jié)點(diǎn)。由圖3 可知,無(wú)論發(fā)生哪種情況每個(gè)共識(shí)高度都只有唯一的一個(gè)Leader 節(jié)點(diǎn),保證每次只有一個(gè)Leader 節(jié)點(diǎn)將共識(shí)交易發(fā)送到主鏈上且只收取一次交易手續(xù)費(fèi)。

        5.2 性能測(cè)試

        在平行鏈上分別設(shè)置4、7、10、13、16、19、22 個(gè)超級(jí)節(jié)點(diǎn),從交易手續(xù)費(fèi)、占用主鏈存儲(chǔ)空間、交易吞吐量以及時(shí)延這4 個(gè)方面進(jìn)行測(cè)試,通過(guò)Matlab 對(duì)優(yōu)化前后的平行鏈共識(shí)算法仿真,如圖4 所示。

        圖4 優(yōu)化前后不同指標(biāo)對(duì)比Fig.4 Different indicators comparison before and after optimization

        由圖4(a)可知,優(yōu)化前有n個(gè)超級(jí)節(jié)點(diǎn)發(fā)送n筆共識(shí)交易,收取n筆手續(xù)費(fèi)0.01nBTY;優(yōu)化后僅由Leader 節(jié)點(diǎn)發(fā)送一筆共識(shí)交易,因此無(wú)論有多少個(gè)超級(jí)節(jié)點(diǎn),只收取一筆手續(xù)費(fèi)0.01 BTY。

        由圖4(b)可知,優(yōu)化前n個(gè)共識(shí)節(jié)點(diǎn)會(huì)發(fā)送n筆共識(shí)交易到主鏈上參與共識(shí),多筆共識(shí)交易會(huì)占用大量主鏈空間,n筆將占用4nKB 的存儲(chǔ)空間;優(yōu)化后,最終由Leader 節(jié)點(diǎn)發(fā)送一筆共識(shí)交易至主鏈,因此只占用主鏈區(qū)塊空間4 KB。

        由圖4(c)可知,隨著超級(jí)節(jié)點(diǎn)數(shù)量的增多吞吐量均呈下降趨勢(shì)。優(yōu)化前下降速度更快,當(dāng)超級(jí)節(jié)點(diǎn)更多時(shí)對(duì)其影響更大;優(yōu)化后吞吐量下降比較緩慢,當(dāng)超級(jí)節(jié)點(diǎn)更多時(shí),吞吐量可能僅有細(xì)微變化,最終曲線將接近水平狀態(tài),整體看來(lái)TPS 仍然會(huì)較高。

        由圖4(d)可知,隨著超級(jí)節(jié)點(diǎn)數(shù)量的增多共識(shí)延時(shí)均呈增長(zhǎng)趨勢(shì)。優(yōu)化前增長(zhǎng)劇烈,超級(jí)節(jié)點(diǎn)數(shù)量越多發(fā)送到主鏈上的共識(shí)交易就越多,平行鏈上的節(jié)點(diǎn)進(jìn)行二次共識(shí)的時(shí)間就越長(zhǎng),最終的共識(shí)時(shí)延也越長(zhǎng);而優(yōu)化后雖然增加了BLS 聚合簽名的過(guò)程但該過(guò)程不到1 ms,對(duì)整個(gè)共識(shí)的過(guò)程影響不大,因此共識(shí)時(shí)延增長(zhǎng)緩慢。

        6 結(jié)語(yǔ)

        共識(shí)算法是區(qū)塊鏈的核心技術(shù),本文首先介紹區(qū)塊鏈主鏈的幾種常見共識(shí)算法,包括PoW、PoS、DPoS、PBFT;然后介紹平行鏈+主鏈的架構(gòu),即平行鏈共享于主鏈的共識(shí)網(wǎng)絡(luò),一條主鏈可以附屬多條平行鏈,能夠?qū)崿F(xiàn)交易并行執(zhí)行,保障系統(tǒng)運(yùn)行的穩(wěn)定性和安全性;最后基于該架構(gòu)對(duì)傳統(tǒng)平行鏈共識(shí)算法的缺陷進(jìn)行分析,并且針對(duì)該缺陷設(shè)計(jì)基于BLS 聚合簽名的平行鏈共識(shí)優(yōu)化算法。該算法采用Leader 節(jié)點(diǎn)選取算法和BLS 聚合簽名算法,在保障系統(tǒng)安全性的前提下能夠有效解決多筆共識(shí)交易占用主鏈大量空間和浪費(fèi)手續(xù)費(fèi)的問(wèn)題;同時(shí)在TPS 吞吐量和共識(shí)時(shí)延方面優(yōu)化后的平行鏈共識(shí)算法的性能也是優(yōu)于優(yōu)化前的平行鏈共識(shí)算法。這種優(yōu)化只是平行鏈共識(shí)算法性能提升的一種嘗試,未來(lái)還可以針對(duì)主鏈的共識(shí)算法作進(jìn)一步改進(jìn),以此提升整個(gè)平行鏈架構(gòu)的效率。

        猜你喜歡
        主鏈平行共識(shí)
        “鹵代烴”知識(shí)概要
        向量的平行與垂直
        平行
        逃離平行世界
        共識(shí) 共進(jìn) 共情 共學(xué):讓“溝通之花”綻放
        論思想共識(shí)凝聚的文化向度
        商量出共識(shí)
        WDC主鏈正式啟動(dòng)創(chuàng)世區(qū)塊已誕生
        有機(jī)化合物命名易錯(cuò)題直擊
        “烷烴”的五字命名方針
        天天做天天摸天天爽天天爱| 午夜精品久视频在线观看| 日本在线一区二区三区观看| 日本黄色3级一区二区| 国精品人妻无码一区免费视频电影| 丰满岳乱妇久久久| 在线观看精品视频一区二区三区| 国产精品一品二区三区| 精品午夜福利在线观看| 亚洲一区二区三区成人网站| 亚洲av在线播放观看| 日本高清不卡二区三区| 成 人片 黄 色 大 片| 精品久久久久久中文字幕| 国产亚洲欧美在线播放网站| 一区二区三区在线观看视频精品| 成人爽a毛片免费视频| 无遮挡边吃摸边吃奶边做| 久久久久久国产福利网站| 国产激情综合五月久久| 成午夜精品一区二区三区| 亚洲欧洲高潮| 亚洲国产日韩av一区二区| 亚洲va视频一区二区三区| 色爱无码av综合区| 456亚洲人成影视在线观看| 色青青女同性恋视频日本熟女| 日本一区二区在线免费视频| 手机看片福利一区二区三区| 国产亚洲午夜精品| 亚洲六月丁香色婷婷综合久久| 成人午夜福利视频| 欧美日本日韩aⅴ在线视频| 中文字幕av久久激情亚洲精品| 精品综合一区二区三区| 中日韩精品视频在线观看| 亚洲国产欧美久久香综合| 手机免费高清在线观看av| 国产裸体舞一区二区三区| 一本久到久久亚洲综合| 在线亚洲精品中文字幕美乳色|