劉 琪,郭榮新*,蔣文賢,馬登極
(1.華僑大學 信息科學與工程學院,福建 廈門 361021;2.華僑大學 計算機科學與技術學院,福建 廈門 361021;3.杭州復雜美科技有限公司,杭州 310061)
中本聰于2008 年11 月1 日發表一篇關于闡述比特幣原理的白皮書《比特幣:一種點對點式(Peer-to-Peer,P2P)的電子現金系統》[1],提出一種基于點對點技術的電子現金系統,使網上支付由一方發起,直接支付給另一方,這個過程沒有通過任何的金融機構。如果在第三方的監督下才能解決雙重支付的問題,那么中本聰提出的這個系統將沒有意義。第三方或者中介機構的信任問題一直存在,區塊鏈[2]的出現旨在解決信任問題,它被稱作是“信任的機器”。
區塊鏈技術包括分布式存儲技術、密碼學技術、智能合約和共識機制等,具有數據不可篡改、信息可追溯、公開透明、集體維護、匿名性等特點。隨著近幾年區塊鏈技術的快速發展,區塊鏈的應用不再局限于金融領域,目前已經滲透于各行各業,比如存證溯源、政務、資產數字化、智慧監管等領域。盡管區塊鏈技術迅猛發展,但是在去中心化的架構下仍然存在性能和交易吞吐量等問題,區塊鏈只有解決此類問題才能有更大規模的落地。Chain33、Polkadot[3]、Cosmos[4]均使用類似的跨鏈技術[5]來解決區塊鏈面臨的性能問題。Cosmos 的技術模式與Chain33 和Polkadot 不同,對于使用者來說門檻更高,每個使用者都要組共識、搭節點,并且鏈上數據維護成本高,而Chain33 成本相對較低可快速部署。Chain33 和Polkadot 都是平行鏈模式均采用平行鏈架構,Polkadot 目前在測試網階段,從Polkadot 發展規劃來看,Chain33 目前已經實現的資產跨鏈流通等功能,相對領先1~2 年。
Polkadot 最早提出平行鏈的概念是為了解決區塊鏈在互操作性、可擴展性以及共享安全性方面存在的弊端,但到目前為止還沒有實際的應用落地。平行鏈的概念最早由杭州復雜美科技有限公司提出,百度等也在白皮書中引入這個概念。Chain33 是由杭州復雜美科技有限公司創建的區塊鏈底層系統,Chain33 首創的平行鏈架構中平行鏈依附于主鏈并且使用主鏈的共識網絡,復雜的功能在平行鏈上完成,主鏈只做數據存儲和共識,即使出現性能問題或者智能合約受到攻擊,也僅破壞平行鏈不會影響主鏈的安全;由于主鏈的安全性極高,因此平行鏈的所有數據可以從主鏈同步回來。同時平行鏈也是在主鏈的基礎上搭建的區塊鏈,可以發展獨立的區塊鏈生態,擁有自己的節點和部分共識、能夠編寫多種智能合約、擁有獨立的錢包、擁有獨立的區塊鏈瀏覽器等;基于主鏈統一的交易共識,不論是平行鏈和主鏈,還是不同的平行鏈之間的跨鏈資產都可以做到無縫轉移,使之前的跨鏈時間從小時分鐘級別縮小到幾秒,跨鏈效率高。Polkadot 與Chain33 平行鏈對比分析如表1 所示。

表1 Polkadot與Chain33平行鏈的對比分析Tab.1 Comparative analysis of Polkadot and Chain33 parallel chain
比特元(BiTYuan,BTY)是一種簡單穩定、可擴展性強的公有鏈網絡。比特元區塊鏈的研發基于Chain33 底層架構,是全球首個實現平行鏈架構的公有鏈網絡。在比特元區塊鏈上,以比特元為主鏈向外延伸多條平行鏈,將不同的交易分散到不同的平行鏈上執行,分擔主鏈的運算負荷,同時提升整個系統的運行效率。比特元上的各條平行鏈既可獨立開發去中心化應用(Decentralized Application,DApp),建設多樣化的應用生態,又可實現多鏈間的跨鏈交易和數據交換功能。在比特元中交易首先發送到主鏈被共識打包,隨后同步到平行鏈上被執行,最后將執行結果的hash 寫回主鏈進行共識,實現交易并行執行提升系統吞吐量TPS(Transactions Per Second),在此過程中BTY 是交易必需的燃料。本文以比特元區塊鏈網絡為例介紹Chain33 平行鏈架構以及結合BLS聚合簽名技術對平行鏈共識算法做優化。
共識機制在去中心化的思想上解決了節點之間相互信任的問題,是區塊鏈能夠穩定持續運行下去的主要力量。目前區塊鏈中常用的共識算法[6]可分為兩大類:公有鏈和許可鏈。公有鏈的典型代表有工作量證明(Proof-of-Work,PoW)[7]、權益證明(Proof-of-Stake,PoS)[8]以及股份授權證明(Delegate Proof of Stake,DPoS)[9-10];許可鏈的典型代表有實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)[11]和(Replicated And Fault Tolerant)[12]。對上述共識算法從去中心化程度、容錯率、資源消耗以及吞吐量等方面作簡單對比分析,如表2 所示。

表2 區塊鏈常用共識算法的對比分析Tab.2 Comparative analysis of commonly used consensus algorithms in blockchain
這些常用的共識算法都可應用于主鏈中,而平行鏈中每個超級節點都會向主鏈提供共識交易。n個超級節點的共識結果在主鏈達成共識,共識的規則是2/3 的超級節點結果一致,第2 章將詳細介紹平行鏈的共識算法。
圖1 展示了主鏈+平行鏈架構,該架構中一條主鏈附屬多條平行鏈,每條平行鏈只與主鏈交互,各條平行鏈之間互相不干涉對方的交易。平行鏈的共識流程為:首先共識交易在主鏈上被打包;緊接著平行鏈上的超級節點從主鏈同步共識交易,并打包交易數據生成區塊同時上傳上鏈請求;然后主鏈上的節點廣播共識交易并驗證共識結果的正確性;最后平行鏈上的所有節點同步交易數據。

圖1 主鏈+平行鏈架構Fig.1 Main chain+parallel chain architecture
主鏈+平行鏈架構具有如下幾個特點:
1)高效性:平行鏈發送共識交易到主鏈上進行共識驗證和數據存儲,多條平行鏈交易并行處理,共識效率大幅提升。
2)穩定性:平行鏈上運行復雜的功能,主鏈只做存證等一些核心功能,整個架構簡單穩定。
3)安全性:平行鏈的安全由主鏈保障,當智能合約或虛擬機被攻擊時僅破壞平行鏈,平行鏈上的所有數據可以快速從主鏈同步,從而保證數據完整不被更改。
4)高擴展性:平行鏈擁有自己的生態,能在鏈上發行自己的通證(token),相當于一條獨立自主的公鏈,并且支持主鏈和平行鏈跨鏈和平行鏈之間的跨鏈交易。
Chain33 平行鏈上的節點有授權節點、超級節點、監督節點和普通節點4 種角色,下面對它們分別進行介紹。
1)授權節點。
授權節點是參與共識、發送共識交易的節點。不是所有的節點都有權限發送共識交易,只有授權節點可以發送共識交易,普通節點沒有權限發送共識交易。
2)普通節點。
普通節點不發送共識交易,只接收共識交易并校驗共識結果,以此體現區塊鏈分布式一致性校驗的設計思路,即授權節點負責共識安全,普通節點保持和授權節點一致,所有節點協同統一。
3)超級節點。
超級節點負責平行鏈的共識安全,并得到一定的挖礦獎勵,每個超級節點都會向主鏈發送共識交易,n個超級節點達成共識的規則是超過2/3 的超級節點共識結果一致;只有有了超級節點共識,平行鏈的跨鏈功能才可以啟用。
4)監督節點。
監督超級節點的共識過程,防止超級節點聯合作弊。當超級節點的共識結果和監督節點的結果不一致時,暫停共識,直到超級節點或監督節點修正共識結果達成共識為止。
主鏈上的共識算法有多種,比如在公有鏈中使用PoS,在聯盟鏈中使用Tendermint 或PBFT,在私鏈中使用RAFT。平行鏈上的共識算法與主鏈使用的共識算法不同,主要的區別是平行鏈依賴于主鏈的共識網絡,主要過程為平行鏈授權節點或超級節點發送共識交易到主鏈上進行共識,然后再同步共識交易到平行鏈進行自共識驗證,共識規則為超過2/3節點共識結果一致則達成共識,自共識不通過的平行鏈節點將停止生成區塊。
表3 詳細描述了平行鏈共識過程之前先設定共識過程中涉及的符號及其含義。

表3 符號及其含義Tab.3 Symbols and their meanings
目前平行鏈的共識算法如下所示。
1)各參數的設定。
①設平行鏈上待共識的區塊為B1;
②設第一 平行鏈 為p_chain1(x1,x2,…,xn),其 中x1,x2,…,xn稱為超級節點,并且滿足n≥3f+1,f∈N+;
③設p_chain1(x1,x2,…,xn) 對應的 主鏈為C1(X1,X2,…,Xn);
④ 待共識的區塊B1中包含的若干信息有:狀態哈希s_hash、簽名信息S、待共識的區塊高度H和打包各交易的狀態信息MS;
⑤ 各超級節點(x1,x2,…,xn)打包B1的若干信息生成區塊信息BMi={s_hash_i,Hi,Si,MSi};
⑥ 達成共識的節點數設為Num。
2)共識過程。
①x1,x2,…,xn分別將BM1={s_hash_1,H1,S1,MS1},BM2={s_hash_2,H2,S2,MS2},…,BMn={s_hash_n,Hn,Sn,MSn} 發送至主鏈C1上對應節點x1,x2,…,xn處。由于發送1 筆共識交易將產生0.001 BTY 的手續費,因此n個共識節點發送n筆共識交易需產生0.001nBTY 的手續費。
②x1,x2,…,xn將BM1,BM2,…,BMn記錄到主鏈上并互相廣播。
③X1,X2,…,Xn每個節點有R1,R2,…,Rn這n筆共識交易的全部內容,由于1 筆共識交易占用4 KB 的存儲空間,因此n筆共識交易共占用主鏈4nKB 的存儲空間。
④ 此時進行共識驗證,x1,x2,…,xn從C1同步共識交易Tx={BM1,BM2,…,BMn},此時p_chain1(x1,x2,…,xn)上每個節點都含有其他節點的共識交易信息。
⑤p_chain1進行自共識,若Num≥n*2/3,即{BM1,BM2,…,BMn}中至少有n*2/3 個區塊信息相同則達成共識。
⑥ 假設滿足閾值,達成共識,共識結果為R={s_hash,H,S,MS}生成的共識標識為u,共識高度為H。
由2.3 節可知平行鏈的共識過程為雙層共識,首先平行鏈交易發送到主鏈上進行共識打包;然后平行鏈同步主鏈的區塊并選取與本平行鏈有關的交易執行,再將區塊哈希發送到主鏈上做共識;最后平行鏈上的節點同步主鏈的共識交易進行二次共識。平行鏈共識全過程的缺陷分析如下:
1)平行鏈上的超級節點越多,發送到主鏈上的共識交易就越多,多筆相同的共識交易將占據主鏈大量的存儲空間;并且多條平行鏈依附于一條主鏈,主鏈上交易記錄的越多,主鏈的交易處理能力[13]就越弱。
2)平行鏈上的超級節點每發送一次共識交易到主鏈上就會產生一筆手續費,當多個超級節點同時發送共識交易則會產生多筆手續費,同時消耗大量的資源。
在平行鏈聚合簽名方案中,需要選取一個Leader 節點發送整個共識交易,并且支持輪換操作。
當前的一些Leader 節點選取算法比較復雜,比如有權重設計,或者不支持輪換操作,只讓一個節點發送共識交易,可能只消耗一個節點的手續費,不具備公平性。此處通過對比RAFT[14]中的Leader 節點選取方案可知,在RAFT 共識機制中,Leader 節點選舉成功后會不斷地向follower 跟隨節點發送心跳消息,選舉周期將會一直持續到某個follower 節點沒有收到心跳消息并成為candidate 候選節點為止,這時開啟下一輪Leader 節點的選舉。由于RAFT 中Leader 節點任期時間無法確定并且不支持輪換操作,每個節點消耗的手續費差別大,因此不適用于平行鏈的共識算法。針對上述不足,設計較為輕量的Leader 節點選舉和輪換機制,保證系統穩定。
決定Leader 節點的因素是高度(height)和偏移(offset),當offset=0 時,有關超級節點中Leader 節點的選舉和輪換機制如下。
1)平行鏈各個超級節點配置成功后,順序固定,依次作為Leader 節點。
2)假設現有超級節點A、B、C、D,對應的索引依次為0、1、2、3。
3)現設置初始Leader 節點索引為0,即base=0,每隔一定共識高度輪換下一個節點為Leader 節點,假設每隔100 高度做一次輪換。
4)設置base=(height/100)%nodes,得到當前共識高度下Leader 節點的索引,height依次增長,base也依次增長。
5)Leader 節點需要每隔一段時間比如t=5 s 發送心跳消息,向其他節點聲明自己是Leader 節點;同時其他非Leader 節點也在等待接收心跳消息。
6)Leader 節點每隔5 s 發送一次心跳消息,只要非Leader節點在1 min 以內能夠收到一次心跳消息就不用做offset偏移;如果非Leader 節點在1 min 之內沒有收到來自Leader 節點的心跳消息,那么設置一個offset偏移值,令offset=(offset+1)%nodes,并 且Leader=(offset+base)%nodes可 以唯一確定一個新的Leader 節點。
這種情況又分為以下兩類。
1)Leader 節點確實沒有發送心跳消息,非Leader 節點重新選取下一個Leader 節點;若本節點發現自己是Leader 節點,則廣播心跳消息。
2)如果僅自己沒有收到心跳消息,其他非Leader 節點都收到心跳消息,那么僅該節點偏移Leader 節點,直到自己是Leader 節點為止,廣播心跳消息。
但這樣會出現兩個Leader 節點的情況,如果同時有多個不同Leader 節點的心跳消息,則節點會和自己索引作比較。
①若兩個base索引不同,則不處理,說明兩個Leader 節點不是同樣的共識高度。
②若base相同,offset不同,如果自己的offset索引比較小,則接受大的Leader 節點索引為Leader,具體為設置新的offset;如果自己offset比較大,則不處理。
這樣在處理一些僵尸節點的時候,系統會自動切換到下一個節點為Leader 節點繼續服務,發送共識消息;因為共識height不變,所以此時base也不變,只是offset改變發生偏移。
當共識高度超過預先設置的間隔之后,base才會發生改變,從而更新下一個Leader 節點,保持系統共識穩定。
BLS(Boneh-Lynn-Shacham)簽名算法由Boneh 等[15]提出,BLS 簽名無需隨機數生成器即可實現聚合多個簽名以及m-n多重簽名,同時減少節點間的多余通信開銷。該簽名算法有兩個基本概念:曲線哈希和曲線配對即雙線性映射e函數[16-17]。
BLS 簽名算法與橢圓曲線數字簽名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)和Schnorr 簽名算法不同:在ECDSA 和Schnorr 簽名中對消息求哈希的結果是數值;而在BLS 簽名算法中用新型散列函數對消息求哈希,并將得到的結果映射到橢圓曲線的一個點上[18]。
雙線性映射e函數由六元組η=(G1,G2,GT,n,e,g1,g2)組成,G1和G2是階為p的加法循環群,GT是具有相同階的乘法循環群。g1是加法群G1的生成元,g2是加法群G2的生成元。e是雙線性映射,需要進行曲線配對,則有G1×G2→GT。設P,Q為曲線上的兩個點,?a,b∈Zp,則滿足以下性質:

可見,配對函數對曲線上的運算滿足分配律、交換律和結合律。
BLS 簽名過程如下:假設待簽名的消息為m,私鑰為k,公鑰P=k*G;求簽名S時,先對消息m求哈希后映射到橢圓曲線上,得到曲線哈希H(m),再乘以私鑰k即得S=k*H(m)。公鑰P驗證簽名S,則有:

本文采用BLS 聚合簽名技術對平行鏈共識算法進行優化。假設Leader 節點要聚合N個超級節點的簽名,由于平行鏈共識的特點是簽名不同共識數據相同,因此共識交易設為M,對共識交易求曲線哈希可得H(M),ki為私鑰,可得公鑰Pi=ki*G,聚合簽 名Si=ki*H(M),則需驗 證e(G,Si)=e(Pi,H(M))成立。驗證過程如下:

傳統的平行鏈共識算法是平行鏈的每個共識節點都發送共識交易。優化方案是平行鏈的共識節點先內部發送共識交易并附上BLS 簽名數據;再由Leader 節點整合共識交易并聚合交易簽名;最后將新的共識交易發送到主鏈上驗證,同時結合BLS 聚合簽名技術防止篡改的發生。這種共識算法既節省區塊空間、節約手續費,還能夠保證系統的安全。
設平行鏈為p_chain_1,平行鏈上的共識節點n需滿足n≥3f+1,f∈N+。預配置的聚合簽名算法為BLS 簽名算法,BLS 簽名是利用雙線性對構造的一種短簽名方案;預配置授權賬戶組,根據x1,x2,…,xn順序依次設置平行鏈上節點的索引為0,1,…,n-1(n≥4)。
共識算法流程如圖2 所示。

圖2 優化后的平行鏈共識算法流程Fig.2 Flow chart of parallel chain consensus algorithm after optimization
1)系統設置。令q為大素數,加法循環群G1和乘法循環群G2為q階,P是G1的生成元,Q是G2的生成元;雙線性映射為e=G1×G2→GT,定義散列函數H0:{0,1}*→G1。
2)生成共識內容并提取密鑰。假設平行鏈待共識的區塊為p_block(100),其對應的主鏈區塊為block(200)。以平行鏈P1上的節點x1為例說明,x1從block(200)同步p_chain_1 的各筆交易Tx=(tx1,tx2,…,txn),x1打包Tx并生成p_block_x1,計 算p_block_x1獲得共 識內容msg(100)_x1={block_hash,height,bitmap}。BLS 簽名需 要的私鑰為Secp265k1 的1/2,采用Secp265k1 私鑰不斷取hash直到滿足BLS 范圍為止作為BLS 私鑰,令節點x1的私鑰為xa,則x1的公鑰為Pub_bls_x1=ka*P。
3)簽名。x1根據BLS 聚合簽名算法對msg(100)_x1進行簽名獲得簽名數據bls_(msg(100)_x1)=ka*H(msg(100)_x1)。
4)對交易內容求哈希并映射到曲線上。H(msg(100)_x1)=H(block_hash‖height‖bitmap)。
5)預設授權賬戶組。x1,x2,…,xn按序排列并設置索引為0,1,…,n-1,一一對應于 BLS 公 鑰Pub_bls_x1,Pub_bls_x2,…,Pub_bls_xn。
6)廣播。x1將msg(100)_x1+bls_(msg(100)_x1)廣播給其他節點x2,x3,…,xn;同理x2,x3,…,xn節點也作如上運算操作。在x1,x2,…,xn都正常運行的情況下,對x1而言已收到其他節點的共識內容和簽名信息{msg(100)_x2+bls_(msg(100)_x2),msg(100)_x3+bls_(msg(100)_x3),…,msg(100)_xn+bls_(msg(100)_xn)} 。
7)自共識 。各個節 點的共 識內容msg(100)_x1,msg(100)_x2,…,msg(100)_xn在內部進行自共識。若x1不同,其余都相同,則Num=n-1 ≥2/3*n(n≥4),達成共識,共識內容為msg(100)。
8)聚合簽名。聚合達成共識的節點,其簽名數據為bls_(msg(100)_x2)+bls_(msg(100)_x3)+… +bls_(msg(100)_xn),在之前設置好的授權賬戶組中,令達成共識為1,未達成共識為0,即bitmap=(0,1,1,1,…,1)。
9)聚合后 的共識交易。Tx100={msg(100),bls(msg(100_x2)+bls(msg(100_x3)+… +bls(msg(100_xn)},bitmap=(0,1,1,1,…,1)。
10)驗證聚合簽名正確性。由Leader 節點將Tx100 發送至主鏈上,主鏈節 點根據bitmap=(0,1,1,1,…,1) 授 權賬 戶組查找對應的BLS 公鑰可得到{Pub_bls_x2,Pub_bls_x3,…,Pub_bls_xn},聚合簽名公鑰得{Pub_bls_x2+Pub_bls_x3+… +Pub_bls_xn=},結合共識內容msg(100)判斷:

是否正確。
下面給出聚合簽名驗證過程的正確性證明。

因為式(5)的正確性被成功驗證,所以平行鏈上的各個共識節點可以先互相廣播發送共識交易達成共識,再由Leader 節點將達成的共識交易內容與各節點的交易簽名聚合后發送到主鏈上;主鏈根據bitmap在預配置的授權賬戶組中查找到平行鏈的各共識節點所對應的BLS 公鑰,對聚合簽名驗證通過,且公鑰賬戶超過2/3 共識閾值,則共識通過,同時證明該優化算法的可行性。
Chain33 是一套支持共識、數據庫、執行器等可插拔、易升級的區塊鏈架構,本文基于Chain33 底層架構搭建平行鏈架構,通過Go 語言實現平行鏈共識算法的優化。實驗環境配置如表4 所示。

表4 實驗環境配置Tab.4 Experimental environment configuration
本文實驗中設置4 個超級節點進行Leader 節點的選取,分別為A、B、C、D,對應的索引號分別為0、1、2、3,分別對Leader 節點選取過程中出現的3 種情況進行分析。
1)normal:正常情況。
2)case1-1:Leader 節點因本身故障在規定時間內未發出心跳消息,進行offset偏移至下一個節點。
3)case1-2:Leader 節點因本身故障未在規定的時間內發出心跳消息并且進行offset偏移至下一個節點處時,下一個節點仍發生故障再次進行offset偏移操作。
假設當Leader 節點為D 索引號為3 時未正常發出心跳消息,Matlab 仿真圖如圖3 所示。

圖3 Leader節點選取算法Fig.3 Leader node selection algorithm
分析圖3 可得,在normal 正常情況下隨著共識高度的增長每隔100 共識高度發生一次Leader 節點輪換操作,當Leader 節點為D、索引號為3 時,下一次輪換又回到節點為A、索引號為0 處,一直重復這種循環;在case1-1 情況下,Leader 節點為D、索引號為3 時發生故障,此時進行offset偏移至下一個節點為A、索引號為0 處,此時A 正常;在case1-2情況下,進行offset偏移至A,但此時A 節點也出了故障,因此再次進行offset偏移至下個節點。由圖3 可知,無論發生哪種情況每個共識高度都只有唯一的一個Leader 節點,保證每次只有一個Leader 節點將共識交易發送到主鏈上且只收取一次交易手續費。
在平行鏈上分別設置4、7、10、13、16、19、22 個超級節點,從交易手續費、占用主鏈存儲空間、交易吞吐量以及時延這4 個方面進行測試,通過Matlab 對優化前后的平行鏈共識算法仿真,如圖4 所示。

圖4 優化前后不同指標對比Fig.4 Different indicators comparison before and after optimization
由圖4(a)可知,優化前有n個超級節點發送n筆共識交易,收取n筆手續費0.01nBTY;優化后僅由Leader 節點發送一筆共識交易,因此無論有多少個超級節點,只收取一筆手續費0.01 BTY。
由圖4(b)可知,優化前n個共識節點會發送n筆共識交易到主鏈上參與共識,多筆共識交易會占用大量主鏈空間,n筆將占用4nKB 的存儲空間;優化后,最終由Leader 節點發送一筆共識交易至主鏈,因此只占用主鏈區塊空間4 KB。
由圖4(c)可知,隨著超級節點數量的增多吞吐量均呈下降趨勢。優化前下降速度更快,當超級節點更多時對其影響更大;優化后吞吐量下降比較緩慢,當超級節點更多時,吞吐量可能僅有細微變化,最終曲線將接近水平狀態,整體看來TPS 仍然會較高。
由圖4(d)可知,隨著超級節點數量的增多共識延時均呈增長趨勢。優化前增長劇烈,超級節點數量越多發送到主鏈上的共識交易就越多,平行鏈上的節點進行二次共識的時間就越長,最終的共識時延也越長;而優化后雖然增加了BLS 聚合簽名的過程但該過程不到1 ms,對整個共識的過程影響不大,因此共識時延增長緩慢。
共識算法是區塊鏈的核心技術,本文首先介紹區塊鏈主鏈的幾種常見共識算法,包括PoW、PoS、DPoS、PBFT;然后介紹平行鏈+主鏈的架構,即平行鏈共享于主鏈的共識網絡,一條主鏈可以附屬多條平行鏈,能夠實現交易并行執行,保障系統運行的穩定性和安全性;最后基于該架構對傳統平行鏈共識算法的缺陷進行分析,并且針對該缺陷設計基于BLS 聚合簽名的平行鏈共識優化算法。該算法采用Leader 節點選取算法和BLS 聚合簽名算法,在保障系統安全性的前提下能夠有效解決多筆共識交易占用主鏈大量空間和浪費手續費的問題;同時在TPS 吞吐量和共識時延方面優化后的平行鏈共識算法的性能也是優于優化前的平行鏈共識算法。這種優化只是平行鏈共識算法性能提升的一種嘗試,未來還可以針對主鏈的共識算法作進一步改進,以此提升整個平行鏈架構的效率。