倪雪莉,馬 卓,王 群
1.江蘇警官學(xué)院計(jì)算機(jī)信息與網(wǎng)絡(luò)安全系,南京 210031
2.南京信息工程大學(xué)計(jì)算機(jī)學(xué)院網(wǎng)絡(luò)空間安全學(xué)院,南京 210044
體系結(jié)構(gòu)和通信協(xié)議是網(wǎng)絡(luò)研究中普遍關(guān)注的兩大核心要素,針對區(qū)塊鏈技術(shù)的研究也是如此。區(qū)塊鏈系統(tǒng)作為一個(gè)構(gòu)建在數(shù)據(jù)通信網(wǎng)絡(luò)基礎(chǔ)上的新型應(yīng)用系統(tǒng),以其去中心化、防篡改、匿名性、自治性、開放性等特征,正在以創(chuàng)新模式影響和改變著傳統(tǒng)網(wǎng)絡(luò)的應(yīng)用,同時(shí)也對傳統(tǒng)網(wǎng)絡(luò)基礎(chǔ)設(shè)施從通信層面提出了新的要求,在應(yīng)用拓展和安全性等方面面臨新的挑戰(zhàn)[1-2]。
在區(qū)塊鏈基礎(chǔ)架構(gòu)模型中,網(wǎng)絡(luò)層位于數(shù)據(jù)層與共識層之間,主要封裝了區(qū)塊鏈系統(tǒng)的組網(wǎng)方式、消息傳輸協(xié)議和數(shù)據(jù)驗(yàn)證機(jī)制等內(nèi)容。具體講,用戶端程序生成交易初始數(shù)據(jù),在成功驗(yàn)證目的節(jié)點(diǎn)地址后,再經(jīng)用戶的私鑰簽名后通過區(qū)塊鏈網(wǎng)絡(luò)發(fā)送給礦工,礦工首先對接收到的交易數(shù)據(jù)進(jìn)行驗(yàn)證,驗(yàn)證無誤后暫時(shí)保存在內(nèi)存中,等待通過共識算法打包進(jìn)區(qū)塊;礦工節(jié)點(diǎn)通過共識算法競爭系統(tǒng)的記賬權(quán),當(dāng)其中的礦工挖出一個(gè)新區(qū)塊后,為了將區(qū)塊鏈接到主鏈上以便獲得系統(tǒng)的獎(jiǎng)勵(lì),則需要將經(jīng)簽名的區(qū)塊盡快通過區(qū)塊鏈網(wǎng)絡(luò)廣播給其他礦工,其他礦工在驗(yàn)證了新區(qū)塊的合法性和正確性后,立即將該區(qū)塊鏈接到區(qū)塊鏈上,并在該區(qū)塊的基礎(chǔ)上繼續(xù)挖下一個(gè)區(qū)塊[3]。由此可以看出,一筆新交易或一個(gè)新區(qū)塊產(chǎn)生后,都需要通過區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行廣播,以便于實(shí)現(xiàn)新交易的打包和新區(qū)塊的上鏈操作。區(qū)塊鏈網(wǎng)絡(luò)的性能在很大程度上決定著交易被打包進(jìn)區(qū)塊的效率以及礦工的競爭優(yōu)勢,區(qū)塊鏈網(wǎng)絡(luò)的安全性也在不同程度上影響著區(qū)塊鏈挖礦的安全性。
P2P(peer-to-peer,點(diǎn)對點(diǎn))網(wǎng)絡(luò)是區(qū)塊鏈系統(tǒng)的核心,為區(qū)塊鏈系統(tǒng)中的價(jià)值轉(zhuǎn)移與信息交換提供基礎(chǔ)保障。目前,針對區(qū)塊鏈P2P網(wǎng)絡(luò)及其安全性的研究動因主要體現(xiàn)在以下幾個(gè)方面:(1)P2P 網(wǎng)絡(luò)作為區(qū)塊鏈架構(gòu)中網(wǎng)絡(luò)層的重點(diǎn)組成部分,為交易和區(qū)塊數(shù)據(jù)的傳輸提供了保障,為上層共識結(jié)果的最終達(dá)成、激勵(lì)機(jī)制的實(shí)現(xiàn)、腳本或智能合約的正常運(yùn)行以及各類應(yīng)用系統(tǒng)的開發(fā)提供了底層技術(shù)支撐,所以對區(qū)塊鏈P2P網(wǎng)絡(luò)的研究具有基礎(chǔ)性。(2)P2P 網(wǎng)絡(luò)是構(gòu)建在傳統(tǒng)互聯(lián)網(wǎng)基礎(chǔ)上的一類覆蓋網(wǎng)絡(luò),在資源管理、節(jié)點(diǎn)接入與退出、網(wǎng)絡(luò)抖動等方面具有其特殊性。另外,隨著區(qū)塊鏈應(yīng)用領(lǐng)域的不斷擴(kuò)展,比特幣、以太坊、超級賬本等典型區(qū)塊鏈項(xiàng)目分別對P2P網(wǎng)絡(luò)在功能實(shí)現(xiàn)上提出了新的要求,從而形成了具有獨(dú)特功能的區(qū)塊鏈P2P網(wǎng)絡(luò)。為此,有必要針對區(qū)塊鏈技術(shù)和應(yīng)用發(fā)展,對區(qū)塊鏈P2P網(wǎng)絡(luò)進(jìn)行深入研究。(3)近年來,隨著以以太坊為代表的區(qū)塊鏈2.0時(shí)代的出現(xiàn),智能合約技術(shù)催生了大量區(qū)塊鏈應(yīng)用,同時(shí)區(qū)塊鏈技術(shù)向著加密數(shù)字貨幣之外的其他領(lǐng)域快速滲透。在區(qū)塊鏈應(yīng)用顯現(xiàn)出百花齊放之時(shí),區(qū)塊鏈安全問題成為影響區(qū)塊鏈應(yīng)用發(fā)展的關(guān)鍵因素。其中,在眾多的安全領(lǐng)域,因區(qū)塊鏈P2P網(wǎng)絡(luò)在區(qū)塊鏈架構(gòu)中所處的重要位置以及傳統(tǒng)互聯(lián)網(wǎng)安全問題對區(qū)塊鏈P2P 網(wǎng)絡(luò)帶來的威脅,所以針對區(qū)塊鏈P2P網(wǎng)絡(luò)安全的研究更加重要和緊迫。
本文重點(diǎn)對P2P網(wǎng)絡(luò)進(jìn)行研究,在系統(tǒng)闡述P2P網(wǎng)絡(luò)的工作機(jī)理和關(guān)鍵技術(shù)的基礎(chǔ)上,重點(diǎn)討論區(qū)塊鏈P2P網(wǎng)絡(luò)的實(shí)現(xiàn)機(jī)制和特征,在此基礎(chǔ)上進(jìn)一步分析區(qū)塊鏈P2P網(wǎng)絡(luò)安全問題。
P2P 網(wǎng)絡(luò)是傳統(tǒng)互聯(lián)網(wǎng)發(fā)展過程中由應(yīng)用需求促動產(chǎn)生的一種網(wǎng)絡(luò)層服務(wù),最早主要用于解決多媒體服務(wù)和管理,后來在比特幣原型系統(tǒng)中將P2P網(wǎng)絡(luò)作為底層的網(wǎng)絡(luò)通信協(xié)議并一直應(yīng)用至今。區(qū)塊鏈系統(tǒng)采用了P2P 網(wǎng)絡(luò)來傳輸交易和區(qū)塊等數(shù)據(jù),全面系統(tǒng)研究P2P 網(wǎng)絡(luò)對進(jìn)一步研究區(qū)塊鏈技術(shù)及應(yīng)用起著至關(guān)重要的作用。
作為一個(gè)分布式應(yīng)用體系架構(gòu),P2P網(wǎng)絡(luò)的設(shè)計(jì)初衷和思想是通過節(jié)點(diǎn)之間的協(xié)同來提供一種新型網(wǎng)絡(luò)服務(wù)能力,以適應(yīng)互聯(lián)網(wǎng)發(fā)展過程中出現(xiàn)的應(yīng)用需求[4]。P2P 網(wǎng)絡(luò)打破了傳統(tǒng)C/S(client/server,客戶端/服務(wù)器)架構(gòu)模式,節(jié)點(diǎn)在一個(gè)去中心化環(huán)境中主動將自身的算力、網(wǎng)絡(luò)和存儲資源提供給其他節(jié)點(diǎn)使用,每個(gè)節(jié)點(diǎn)既是資源的提供者(服務(wù)器),也是資源的訪問者(客戶端),根據(jù)不同節(jié)點(diǎn)之間的通信需要,任一節(jié)點(diǎn)只需要與相鄰的一部分節(jié)點(diǎn)之間建立連接。由于P2P 網(wǎng)絡(luò)具有可擴(kuò)展性強(qiáng)、利于實(shí)現(xiàn)負(fù)載均衡、網(wǎng)絡(luò)的健壯性和可用性較高,同時(shí)提供了較好的通信匿名性等特點(diǎn),所以P2P 網(wǎng)絡(luò)在流媒體、算力共享、分布式存儲等領(lǐng)域得到了普遍應(yīng)用[5]。
網(wǎng)絡(luò)架構(gòu)描述的是分布式系統(tǒng)中各計(jì)算節(jié)點(diǎn)之間的物理或邏輯關(guān)系,是確定系統(tǒng)通信模式的重要依據(jù)。P2P 網(wǎng)絡(luò)通常是指構(gòu)建在物理拓?fù)渲系奶摂M覆蓋網(wǎng)絡(luò),在應(yīng)用層節(jié)點(diǎn)通過相應(yīng)的索引和節(jié)點(diǎn)發(fā)現(xiàn)算法建立邏輯拓?fù)洌瑪?shù)據(jù)傳輸仍然采用底層的TCP/ⅠP結(jié)構(gòu),一般采用UDP 發(fā)送控制信息,采用TCP 來傳輸數(shù)據(jù)。根據(jù)網(wǎng)絡(luò)中節(jié)點(diǎn)之間的連接方式以及資源的定位和索引方式的不同,P2P 網(wǎng)絡(luò)一般可以分為非結(jié)構(gòu)化對等網(wǎng)絡(luò)、結(jié)構(gòu)化對等網(wǎng)絡(luò)和混合式對等網(wǎng)絡(luò)3種類型,不同類型的功能描述及主要性能比較如表1所示。
表1 P2P網(wǎng)絡(luò)的3種類型及主要性能比較Table 1 Comparison of three types and main performance of P2P networks
P2P 網(wǎng)絡(luò)涉及的技術(shù)較多,本節(jié)重點(diǎn)對覆蓋網(wǎng)絡(luò)、資源查詢和網(wǎng)絡(luò)抖動等關(guān)鍵技術(shù)進(jìn)行討論。
1.2.1 P2P覆蓋網(wǎng)絡(luò)
覆蓋網(wǎng)絡(luò)(overlay network)[6]是指節(jié)點(diǎn)之間通過構(gòu)建在底層物理鏈路之上的邏輯鏈路進(jìn)行通信,為大規(guī)模P2P應(yīng)用提供基于應(yīng)用層的自組織通信基礎(chǔ)設(shè)施,已成為當(dāng)前網(wǎng)絡(luò)的重要組成部分。覆蓋網(wǎng)絡(luò)由于沒有集中的組織或控制機(jī)制,因此需要一定的資源查詢功能來查找網(wǎng)絡(luò)中的共享資源。目前,針對P2P覆蓋網(wǎng)絡(luò)的典型應(yīng)用和研究主要集中在非結(jié)構(gòu)化對等網(wǎng)絡(luò)和結(jié)構(gòu)化對等網(wǎng)絡(luò)兩個(gè)方面,其中在非結(jié)構(gòu)化對等網(wǎng)絡(luò)(如Guntella)中節(jié)點(diǎn)通過向鄰居節(jié)點(diǎn)泛洪(flooding)資源查詢信息來搜索資源,而在結(jié)構(gòu)化對等網(wǎng)絡(luò)中節(jié)點(diǎn)利用覆蓋網(wǎng)絡(luò)的邏輯拓?fù)洌ㄈ鏑hord使用環(huán)型拓?fù)鋄7],而Kademlia使用樹型拓?fù)鋄8])來管理資源。
結(jié)構(gòu)化對等網(wǎng)絡(luò)采用分布式哈希表(distributed Hash table,DHT)實(shí)現(xiàn)P2P 網(wǎng)絡(luò)中元數(shù)據(jù)的有效共享。由于DHT 具有良好的可擴(kuò)展性、自組織性以及自適應(yīng)性等特點(diǎn),所以可以利用DHT 來組織和管理覆蓋網(wǎng)絡(luò)中的資源并形成相對穩(wěn)定的共享路徑。動態(tài)維護(hù)和消息路由是DHT 拓?fù)錁?gòu)建技術(shù)的核心,其中動態(tài)維護(hù)是指在節(jié)點(diǎn)動態(tài)變化(加入或離開)的不穩(wěn)定網(wǎng)絡(luò)環(huán)境中,通過分布式算法建立節(jié)點(diǎn)之間的邏輯拓?fù)?;而消息路由是指根?jù)目標(biāo)地址,將消息從源節(jié)點(diǎn)路由到目標(biāo)節(jié)點(diǎn)。具體講,P2P網(wǎng)絡(luò)利用DHT以文件形式將用戶需要共享的資源映射成一系列的
1.2.2 資源查詢
在對等網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)維護(hù)著有限的鄰居節(jié)點(diǎn)信息,從而形成一個(gè)應(yīng)用層的覆蓋網(wǎng)絡(luò)。由于節(jié)點(diǎn)之間狀態(tài)的不穩(wěn)定性,在P2P 網(wǎng)絡(luò)中很難形成類似C/S 模式的資源訪問方式,而需要采取相應(yīng)措施有針對性地在動態(tài)環(huán)境中發(fā)現(xiàn)和定位資源。
在結(jié)構(gòu)化對等網(wǎng)絡(luò)中,通過遍歷節(jié)點(diǎn)可以搜索要查詢信息所在的位置。當(dāng)存在n個(gè)節(jié)點(diǎn)時(shí),資源查詢操作步數(shù)為O(logn)。這種方法雖然操作簡單,但效率較低,而且網(wǎng)絡(luò)開銷較大。為了提高結(jié)構(gòu)化對等網(wǎng)絡(luò)中資源的查詢性能,目前采用的方法主要有[13]:一是在搜集鄰居信息的基礎(chǔ)上進(jìn)行節(jié)點(diǎn)信息的交換;二是通過復(fù)制大量的副本信息來提高搜索的命中率。其中,對于訪問頻率較高的資源來說,可以通過數(shù)據(jù)復(fù)制技術(shù)將資源存放在更多節(jié)點(diǎn)上,以便于節(jié)點(diǎn)的快速查詢。但是,數(shù)據(jù)復(fù)制技術(shù)將會帶來存儲空間和網(wǎng)絡(luò)帶寬的額外開銷。
非結(jié)構(gòu)化對等網(wǎng)絡(luò)一般通過轉(zhuǎn)發(fā)查詢消息來匹配本地存儲進(jìn)而實(shí)現(xiàn)資源定位,網(wǎng)絡(luò)中當(dāng)存在n個(gè)節(jié)點(diǎn)時(shí)資源查詢操作步數(shù)為O(n)。當(dāng)采用泛洪模式時(shí),節(jié)點(diǎn)將查詢消息廣播給鄰居節(jié)點(diǎn),并用一個(gè)TTL(time to live,生存時(shí)間)值來控制該查詢消息的轉(zhuǎn)發(fā)次數(shù)。例如,由于無法確定查詢數(shù)據(jù)的位置,所以可以將TTL 設(shè)置為一個(gè)動態(tài)變化的值,搜索者先使用一個(gè)較小的TTL值利用泛洪方式進(jìn)行查詢,在查詢失敗后逐步增加TTL的值,直到查詢成功為止[14]。
另外,在混合式對等網(wǎng)絡(luò)中,由于存在專門負(fù)責(zé)資源目錄服務(wù)和管理的節(jié)點(diǎn),所以查詢操作只需要O(1)步。
1.2.3 網(wǎng)絡(luò)抖動
在P2P 網(wǎng)絡(luò)中,Churn(抖動)特指節(jié)點(diǎn)頻繁加入和退出的現(xiàn)象[15-16]。Churn反映的是P2P網(wǎng)絡(luò)的動態(tài)特征,描述的是網(wǎng)絡(luò)整體的不穩(wěn)定性。Churn 現(xiàn)象的存在對P2P網(wǎng)絡(luò)產(chǎn)生了嚴(yán)重影響:
(1)導(dǎo)致網(wǎng)絡(luò)拓?fù)洳环€(wěn)定。由于節(jié)點(diǎn)的頻繁加入和退出,使節(jié)點(diǎn)的鄰居節(jié)點(diǎn)隨之發(fā)生變化。由于節(jié)點(diǎn)中鄰居信息的更新具有一定滯后性,部分鄰居節(jié)點(diǎn)的退出(失效或下線)和加入,會使節(jié)點(diǎn)中保存的鄰居信息與實(shí)際連接的鄰居節(jié)點(diǎn)不相符。節(jié)點(diǎn)的退出將會導(dǎo)致發(fā)送到該節(jié)點(diǎn)的信息不可達(dá),新節(jié)點(diǎn)的加入因?yàn)樾枰蜞従庸?jié)點(diǎn)廣播自身地址會占用額外的網(wǎng)絡(luò)資源。
(2)導(dǎo)致網(wǎng)絡(luò)性能下降。由于節(jié)點(diǎn)的頻繁加入和退出,使得節(jié)點(diǎn)中維護(hù)的路由表始終處于非穩(wěn)定的收斂過程,這時(shí),在路由傳遞過程中可能會出現(xiàn)網(wǎng)絡(luò)不可達(dá)現(xiàn)象,資源查詢可能會因節(jié)點(diǎn)的失效而無法找到或因資源的重新定位而產(chǎn)生較大延時(shí),數(shù)據(jù)的傳輸可能會因不斷選擇路徑而降低效率。以上現(xiàn)象,都會在不同程度上導(dǎo)致網(wǎng)絡(luò)性能的下降。
(3)導(dǎo)致網(wǎng)絡(luò)的可靠性降低。網(wǎng)絡(luò)的可靠性定義為在給定條件下網(wǎng)絡(luò)以預(yù)設(shè)性能完成預(yù)定功能的能力。網(wǎng)絡(luò)不可達(dá)、數(shù)據(jù)傳輸延時(shí)、資源無法正確定位等都是可靠性降低的表現(xiàn)。另外,Churn 還會使覆蓋網(wǎng)絡(luò)中的某些節(jié)點(diǎn)被隔離,從而產(chǎn)生網(wǎng)絡(luò)分區(qū)問題,尤其是結(jié)構(gòu)化對等網(wǎng)絡(luò)更容易產(chǎn)生網(wǎng)絡(luò)分區(qū)。
針對Churn 對P2P 網(wǎng)絡(luò)帶來的危害,近年來研究人員從節(jié)點(diǎn)鄰居選擇、失效節(jié)點(diǎn)恢復(fù)、數(shù)據(jù)復(fù)制、鏈路生命周期(link lifetime)等方面提出了一些優(yōu)化方案[17],以減小其影響。另外,近年來隨著人工智能技術(shù)應(yīng)用的不斷深入,將機(jī)器學(xué)習(xí)方式用于P2P 網(wǎng)絡(luò)來替代傳統(tǒng)的策略,進(jìn)一步優(yōu)化P2P網(wǎng)絡(luò)環(huán)境[18]。與此同時(shí),P2P網(wǎng)絡(luò)模型以其具有的可靠性、魯棒性和可擴(kuò)展性等特性,與可信計(jì)算、邊緣計(jì)算、人工智能等技術(shù)結(jié)合,開始從傳統(tǒng)的互聯(lián)網(wǎng)進(jìn)入智能電網(wǎng)、智能交通等生產(chǎn)型網(wǎng)絡(luò)[19-20]。
區(qū)塊鏈系統(tǒng)通過內(nèi)嵌的經(jīng)濟(jì)激勵(lì)機(jī)制將大量分布式節(jié)點(diǎn)組織起來實(shí)現(xiàn)共同記賬功能,并維護(hù)系統(tǒng)的安全性以及賬本的一致性和不可篡改性。在區(qū)塊鏈系統(tǒng)中,每個(gè)參與共識的“礦工”節(jié)點(diǎn)具有獨(dú)立的算力和存儲空間,不同節(jié)點(diǎn)之間通過網(wǎng)絡(luò)實(shí)現(xiàn)互操作性。為此,通常情況下將區(qū)塊鏈定義為具有共同記賬功能的分布式系統(tǒng)[21]??紤]到區(qū)塊鏈網(wǎng)絡(luò)研究的完整性,本節(jié)在重點(diǎn)討論區(qū)塊鏈P2P網(wǎng)絡(luò)的基礎(chǔ)上,對區(qū)塊鏈系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)同步和復(fù)制的Gossip協(xié)議進(jìn)行了介紹。
由于P2P 網(wǎng)絡(luò)是構(gòu)建在眾多物理節(jié)點(diǎn)之上的覆蓋網(wǎng)絡(luò),節(jié)點(diǎn)的性能以及扮演的角色對研究區(qū)塊鏈系統(tǒng)具有重要意義。P2P網(wǎng)絡(luò)是區(qū)塊鏈系統(tǒng)的核心組成部分,根據(jù)應(yīng)用需要,節(jié)點(diǎn)上運(yùn)行有錢包、挖礦、完整區(qū)塊鏈賬本和路由等部分或全部功能,并利用賬本數(shù)據(jù)來驗(yàn)證交易記錄[22]。以比特幣系統(tǒng)為例,每個(gè)節(jié)點(diǎn)能夠提供的服務(wù)功能一般包括網(wǎng)絡(luò)路由(network route)、完整區(qū)塊鏈(full blockchain)、礦工(miner)和錢包(wallet)共4 種類型,每個(gè)節(jié)點(diǎn)除具有網(wǎng)絡(luò)路由功能外,還可能根據(jù)需要擔(dān)負(fù)其他的功能(如圖1所示)。根據(jù)提供功能的不同,可以將區(qū)塊鏈系統(tǒng)中的常見節(jié)點(diǎn)分為核心客戶端、完成區(qū)塊鏈節(jié)點(diǎn)、獨(dú)立礦工和輕量級錢包4 種類型,不同類型的功能描述及提供的主要服務(wù)如表2所示。
圖1 區(qū)塊鏈P2P網(wǎng)絡(luò)Fig.1 Blockchain P2P network
表2 區(qū)塊鏈P2P網(wǎng)絡(luò)的節(jié)點(diǎn)類型及提供的主要功能Table 2 Node types of blockchain P2P networks and main functions provided
對交易進(jìn)行驗(yàn)證是區(qū)塊鏈中的一項(xiàng)核心服務(wù)功能。根據(jù)應(yīng)用環(huán)境的不同,區(qū)塊鏈系統(tǒng)中提供驗(yàn)證功能的節(jié)點(diǎn)主要分為全節(jié)點(diǎn)和輕量級SPV(simplified payment verification,簡易支付驗(yàn)證)[23]節(jié)點(diǎn)兩種類型。其中,全節(jié)點(diǎn)中維護(hù)著最新、最完整(最長鏈)的區(qū)塊鏈數(shù)據(jù),能夠?qū)灰转?dú)立地完成驗(yàn)證操作;而輕量級SPV節(jié)點(diǎn)中只存儲區(qū)塊鏈的頭部數(shù)據(jù),可以在節(jié)點(diǎn)沒有存儲完整區(qū)塊鏈賬本數(shù)據(jù)的前提下實(shí)現(xiàn)對交易存在性的驗(yàn)證。另外,在比特幣、以太坊等基于PoW(proof of work,工作量證明)共識機(jī)制的中還提供了用于礦池挖礦的礦池協(xié)議服務(wù)器、與礦池對應(yīng)的挖礦節(jié)點(diǎn)以及輕量級Stratum錢包等節(jié)點(diǎn)[24-25],因這些節(jié)點(diǎn)僅存在于特定的環(huán)境而且數(shù)量有限,故在此不再詳述。
P2P網(wǎng)絡(luò)是一個(gè)分布式應(yīng)用體系架構(gòu),其實(shí)現(xiàn)原理和設(shè)計(jì)思想是把路由選擇、交易和區(qū)塊數(shù)據(jù)驗(yàn)證、區(qū)塊數(shù)據(jù)傳播、新節(jié)點(diǎn)發(fā)現(xiàn)等眾多功能分散到網(wǎng)絡(luò)中不同節(jié)點(diǎn)上,讓每個(gè)參與節(jié)點(diǎn)平等地分擔(dān)任務(wù)和負(fù)載。區(qū)塊鏈P2P 網(wǎng)絡(luò)在繼承了傳統(tǒng)P2P 網(wǎng)絡(luò)功能優(yōu)勢的基礎(chǔ)上,通過對節(jié)點(diǎn)之間數(shù)據(jù)同步、節(jié)點(diǎn)標(biāo)識、資源定位等機(jī)制的優(yōu)化,在共識算法的配合下實(shí)現(xiàn)了所有節(jié)點(diǎn)中賬本數(shù)據(jù)的一致性。體系結(jié)構(gòu)與協(xié)議是組成網(wǎng)絡(luò)的關(guān)鍵,為此,本節(jié)重點(diǎn)從協(xié)議實(shí)現(xiàn)過程分析區(qū)塊鏈P2P 網(wǎng)絡(luò)的工作機(jī)理。首先討論區(qū)塊鏈P2P 網(wǎng)絡(luò)中的數(shù)據(jù)傳輸協(xié)議的工作過程,然后分析應(yīng)用于超級賬本的Gossip協(xié)議。
2.2.1 區(qū)塊鏈P2P網(wǎng)絡(luò)的數(shù)據(jù)傳輸協(xié)議
在其論文“Bitcoin:a peer-to-peer electronic cash system”[26]中使用非結(jié)構(gòu)化對等網(wǎng)絡(luò)來傳輸交易和區(qū)塊數(shù)據(jù),節(jié)點(diǎn)可以自由地加入或退出網(wǎng)絡(luò),通過PoW共識算法實(shí)現(xiàn)各節(jié)點(diǎn)中賬本的一致性,通過基于公鑰密鑰的身份管理機(jī)制實(shí)現(xiàn)交易信息的匿名化,開創(chuàng)了加密數(shù)字貨幣的先河;以太坊(Ethereum)[27]采用結(jié)構(gòu)化對等網(wǎng)絡(luò),將利用ECDSA-secp256k1算法生成的公鑰經(jīng)一系列哈希變換后再通過Base58編碼生成64 Byte的字符串作為節(jié)點(diǎn)ⅠD,統(tǒng)一的編址方案實(shí)現(xiàn)了資源的快速定位;超級賬本(hyperledger)[28]采用混合式對等網(wǎng)絡(luò),所有節(jié)點(diǎn)都是committer(記賬節(jié)點(diǎn)),部分節(jié)點(diǎn)會根據(jù)網(wǎng)絡(luò)運(yùn)行和管理需要擔(dān)負(fù)endorser(背書節(jié)點(diǎn))、leader(領(lǐng)導(dǎo)節(jié)點(diǎn))和anchor(錨節(jié)點(diǎn))的職責(zé)。本節(jié)選擇比特幣P2P 網(wǎng)絡(luò)進(jìn)行具體分析。
比特幣P2P 網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)都會維護(hù)一個(gè)節(jié)點(diǎn)列表(peer list),該列表中存儲著可供連接的鄰居節(jié)點(diǎn)ⅠD,該列表通過基于UDP 協(xié)議的節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制建立和更新,當(dāng)節(jié)點(diǎn)之間需要傳輸數(shù)據(jù)時(shí),節(jié)點(diǎn)通過采用TCP協(xié)議與其他對等節(jié)點(diǎn)進(jìn)行交互。下面,基于區(qū)塊鏈系統(tǒng)的典型運(yùn)行場景,較為系統(tǒng)地分析P2P網(wǎng)絡(luò)的工作機(jī)制,其中version 和verack 消息用于節(jié)點(diǎn)之間建立連接,addr 和getaddr 消息用于鄰居節(jié)點(diǎn)之間交換路由信息,getblocks、inv和getdata消息用于節(jié)點(diǎn)之間的數(shù)據(jù)傳輸,tx消息用于發(fā)送交易數(shù)據(jù)。主要操作過程如下[29]:
(1)新節(jié)點(diǎn)加入。當(dāng)區(qū)塊鏈系統(tǒng)中有新節(jié)點(diǎn)加入時(shí),可以通過類似TCP三次握手機(jī)制建立與相鄰節(jié)點(diǎn)之間的連接。如圖2(a)所示,新加入節(jié)點(diǎn)A 廣播version消息,鄰居節(jié)點(diǎn)B 在接收到該消息后檢查消息內(nèi)容,如果與自己軟件版本相兼容,則向節(jié)點(diǎn)A回復(fù)verack消息,經(jīng)進(jìn)一步交互后新節(jié)點(diǎn)A將建立與節(jié)點(diǎn)B之間的連接。
圖2 區(qū)塊鏈P2P網(wǎng)絡(luò)協(xié)議工作示意圖Fig.2 Blockchain P2P network protocol working diagram
(2)地址告知與獲取。一旦新節(jié)點(diǎn)加入后,新節(jié)點(diǎn)便向鄰居節(jié)點(diǎn)廣播自己的地址addr 消息。鄰居節(jié)點(diǎn)在接收到addr消息后繼續(xù)將其向前廣播,從而使更多節(jié)點(diǎn)學(xué)習(xí)到節(jié)點(diǎn)A 的地址,進(jìn)而知道網(wǎng)絡(luò)中有新節(jié)點(diǎn)加入。新節(jié)點(diǎn)除將自己的地址廣播給其他節(jié)點(diǎn)外,還可根據(jù)地址維護(hù)需要通過getaddr消息來獲取鄰居節(jié)點(diǎn)上保存的地址列表信息,具體交互方式如圖2(b)所示。
(3)區(qū)塊數(shù)據(jù)同步。由于新加入節(jié)點(diǎn)只知道內(nèi)置的創(chuàng)世區(qū)塊(genesis block),所以為了實(shí)現(xiàn)賬本數(shù)據(jù)的一致性,需要同步區(qū)塊高度值最大的區(qū)塊數(shù)據(jù)。如圖2(c)所示,當(dāng)新節(jié)點(diǎn)加入后,與鄰居節(jié)點(diǎn)之間分別通過getblocks消息交換各自的區(qū)塊高度值,其中高度值大的一方將向高度值小的一方發(fā)送僅包含區(qū)塊清單的inv 消息。區(qū)塊高度值大的一方在接收到區(qū)塊高度值小的一方的getdata 請求消息后,將通過block 消息向?qū)Ψ酵扑蛥^(qū)塊數(shù)據(jù),最終實(shí)現(xiàn)兩節(jié)點(diǎn)中區(qū)塊數(shù)據(jù)的完全一致。
需要說明的是:輕量級SPV節(jié)點(diǎn)之間不需要同步完整的區(qū)塊鏈數(shù)據(jù),只需要同步區(qū)塊頭部數(shù)據(jù),具體使用getheaders和headers消息實(shí)現(xiàn),消息交互過程如圖2(d)所示。
(4)交易數(shù)據(jù)的廣播。當(dāng)某一節(jié)點(diǎn)生成一筆交易時(shí),為了盡快將該筆交易打包進(jìn)區(qū)塊從而得到確認(rèn),需要經(jīng)私鑰簽名后再封裝在inv 消息中廣播給鄰居節(jié)點(diǎn)。鄰居節(jié)點(diǎn)通過getdata 響應(yīng)消息請求對方發(fā)送完整的交易數(shù)據(jù),交易生成節(jié)點(diǎn)在接收到getdata響應(yīng)消息后將使用tx發(fā)送交易數(shù)據(jù),鄰居節(jié)點(diǎn)在接收到交易數(shù)據(jù)后利用公鑰對交易數(shù)據(jù)的合法性進(jìn)行驗(yàn)證,通過驗(yàn)證的合法交易數(shù)據(jù)存儲在節(jié)點(diǎn)的內(nèi)存中。此操作將會持續(xù)下去,接收到交易數(shù)據(jù)的節(jié)點(diǎn)使用相同的方式轉(zhuǎn)發(fā)交易數(shù)據(jù),直到轉(zhuǎn)發(fā)給所有節(jié)點(diǎn)。其中,當(dāng)節(jié)點(diǎn)為礦工時(shí),將會把交易打包進(jìn)區(qū)塊,再通過PoW 共識算法基于節(jié)點(diǎn)的算力競爭記賬權(quán)。
(5)探測節(jié)點(diǎn)是否處于存活狀態(tài)。節(jié)點(diǎn)會定期向鄰居節(jié)點(diǎn)發(fā)送ping 消息來探測是否處于存活狀態(tài)。如果接收到鄰居節(jié)點(diǎn)返回的pong 響應(yīng)消息,則說明該鄰居節(jié)點(diǎn)處于存活狀態(tài)。默認(rèn)情況下,在20 min內(nèi)未對ping消息作出響應(yīng)的節(jié)點(diǎn)被認(rèn)為已經(jīng)下線。
2.2.2 Gossip協(xié)議
Gossip協(xié)議[30]也稱為流行病協(xié)議(epidemic protocol)或流言算法、疫情傳播算法等,主要用于分布式數(shù)據(jù)庫系統(tǒng)不同節(jié)點(diǎn)之間副本數(shù)據(jù)的同步。在分布式數(shù)據(jù)庫中,不同節(jié)點(diǎn)組成一個(gè)非結(jié)構(gòu)化對等網(wǎng)絡(luò),Gossip 協(xié)議實(shí)現(xiàn)了在限定時(shí)間范圍內(nèi)同一數(shù)據(jù)在所有節(jié)點(diǎn)上的最終一致性。目前,Gossip 協(xié)議已應(yīng)用在比特幣系統(tǒng)和Fabric等項(xiàng)目中,F(xiàn)acebook開發(fā)的Cassandra[31]通過Gossip協(xié)議實(shí)現(xiàn)了分布式結(jié)構(gòu)化數(shù)據(jù)存儲。在區(qū)塊鏈超級賬本(hyperledger Fabric)中,通過Gossip協(xié)議實(shí)現(xiàn)對節(jié)點(diǎn)發(fā)現(xiàn)、節(jié)點(diǎn)檢測以及節(jié)點(diǎn)上路由列表信息的更新等功能。
Gossip協(xié)議的實(shí)現(xiàn)方式非常多,每一種應(yīng)用場景都可以根據(jù)具體要求對協(xié)議的具體實(shí)現(xiàn)進(jìn)行優(yōu)化或“定制”。通常情況下,Gossip 協(xié)議在執(zhí)行時(shí)是由種子節(jié)點(diǎn)發(fā)起,當(dāng)某一個(gè)種子節(jié)點(diǎn)在自身狀態(tài)發(fā)生變化后需要向其他節(jié)點(diǎn)告知時(shí),會隨機(jī)選擇鄰居節(jié)點(diǎn)進(jìn)行廣播,收到該廣播消息的節(jié)點(diǎn)在更新自己的節(jié)點(diǎn)列表信息的同時(shí),也會將收到的消息繼續(xù)廣播出去。后續(xù)節(jié)點(diǎn)重復(fù)該廣播過程,直至網(wǎng)絡(luò)中所有的節(jié)點(diǎn)接收到該消息。Gossip協(xié)議的消息傳播方式分為反熵(anti-entropy)傳播和謠言(rumor-mongering)傳播,其中反熵以確定的周期隨機(jī)選取某個(gè)節(jié)點(diǎn),然后通過互相交換數(shù)據(jù)的方式實(shí)現(xiàn)兩個(gè)節(jié)點(diǎn)數(shù)據(jù)的一致性;謠言傳播是指某個(gè)節(jié)點(diǎn)有了新消息后立即轉(zhuǎn)換到活躍狀態(tài),并周期性地將該消息發(fā)送給隨機(jī)選取的未被感染的節(jié)點(diǎn)(首次感染),被感染的節(jié)點(diǎn)將接收到的消息發(fā)送給其他未被感染的節(jié)點(diǎn)(二次感染),直至所有的節(jié)點(diǎn)接收到該消息。反熵傳播方式主要用于新加入節(jié)點(diǎn)的數(shù)據(jù)初始化過程,而謠言傳播方式適用于分布式系統(tǒng)中的數(shù)據(jù)同步。以謠言傳播方式為例,如圖3所示為Gossip協(xié)議執(zhí)行的示意圖。首先,源節(jié)點(diǎn)周期性地廣播Gossip 消息;然后,接收節(jié)點(diǎn)(被感染節(jié)點(diǎn))隨機(jī)選擇k個(gè)尚未感染的鄰居節(jié)點(diǎn)繼續(xù)廣播該消息(圖4中每次選擇的鄰居節(jié)點(diǎn)數(shù)為3)。收到消息的節(jié)點(diǎn)不再將該消息廣播給發(fā)送節(jié)點(diǎn),即消息的廣播有單向的;經(jīng)過一段時(shí)間后,網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都將收到該消息,數(shù)據(jù)同步結(jié)束。
圖3 Gossip協(xié)議消息傳播模型示意圖Fig.3 Schematic diagram of Gossip protocol message propagation model
圖4 Fabric區(qū)塊鏈P2P網(wǎng)絡(luò)Fig.4 Fabric blockchain P2P network
Gossip協(xié)議支持節(jié)點(diǎn)頻繁地加入和退出操作,具有良好的分布式容錯(cuò)特性和健壯性,能夠以完全去中心化方式實(shí)現(xiàn)系統(tǒng)狀態(tài)的最終一致性。Gossip 協(xié)議對消息的傳播支持推(push)、拉(pull)和推/拉(push/pull)3種類型。在一個(gè)通信周期內(nèi),每種類型所需要的交互次數(shù)和收斂時(shí)間不同,應(yīng)用效果也不一樣,但目的都要實(shí)現(xiàn)數(shù)據(jù)的最終一致性。但是,Gossip協(xié)議會產(chǎn)生消息傳播的延時(shí)和對網(wǎng)絡(luò)帶寬的占用,不適合要求對消息實(shí)時(shí)傳播的應(yīng)用場景。另外,同一節(jié)點(diǎn)可能會多次接收到相同的消息,存在消息傳播冗余的現(xiàn)象。
對于任一區(qū)塊鏈系統(tǒng)(公有鏈、聯(lián)盟鏈或私有鏈)來說,節(jié)點(diǎn)發(fā)現(xiàn)是節(jié)點(diǎn)加入網(wǎng)絡(luò)的第一個(gè)環(huán)節(jié)。根據(jù)節(jié)點(diǎn)是否為全新節(jié)點(diǎn),將區(qū)塊鏈P2P網(wǎng)絡(luò)中的節(jié)點(diǎn)分為初始節(jié)點(diǎn)和重啟節(jié)點(diǎn)兩種類型。其中,重啟節(jié)點(diǎn)可以利用前期已有的地址信息建立與其他可用節(jié)點(diǎn)之間的連接,而初始節(jié)點(diǎn)需要通過完整的消息交互建立與鄰居節(jié)點(diǎn)之間的聯(lián)系。下面,分別結(jié)合比特幣、以太坊和超級賬本等應(yīng)用場景,分析區(qū)塊鏈P2P網(wǎng)絡(luò)的工作機(jī)理和應(yīng)用特點(diǎn)。結(jié)合比特幣、以太坊和超級賬本3 類典型應(yīng)用場景,本節(jié)分別介紹P2P網(wǎng)絡(luò)在每一類場景中的功能實(shí)現(xiàn)和應(yīng)用特點(diǎn)。
2.3.1 比特幣系統(tǒng)中的P2P網(wǎng)絡(luò)
中本聰在設(shè)計(jì)比特幣系統(tǒng)原型時(shí)就采用了P2P 方式來組織和管理不同的節(jié)點(diǎn),并為去中心化思想的實(shí)現(xiàn)提供了安全保障。同時(shí),比特幣系統(tǒng)中的P2P網(wǎng)絡(luò)更加接近傳統(tǒng)P2P網(wǎng)絡(luò)的特征,尤其是P2P網(wǎng)絡(luò)中節(jié)點(diǎn)的隨機(jī)加入和離開機(jī)制為比特幣系統(tǒng)的開放性奠定了基礎(chǔ)。借鑒了傳統(tǒng)P2P 網(wǎng)絡(luò)的工作機(jī)制,在比特幣系統(tǒng)中,初始節(jié)點(diǎn)發(fā)現(xiàn)一般通過種子節(jié)點(diǎn)(seed node)來實(shí)現(xiàn)。根據(jù)實(shí)現(xiàn)方式的不同,比特幣系統(tǒng)中的種子節(jié)點(diǎn)通常分為DNS 種子節(jié)點(diǎn)和硬編碼(hard code)兩種方式。其中,DNS種子是由比特幣社區(qū)維護(hù)的一個(gè)中心化域名查詢系統(tǒng),如seed.bitcoin.sipa.be;而硬編碼方式是將一些地址(這些地址稱之為“種子”)以代碼形式寫入一些穩(wěn)定的節(jié)點(diǎn),由這些穩(wěn)定節(jié)點(diǎn)為新節(jié)點(diǎn)的加入提供地址發(fā)現(xiàn)服務(wù)。
比特幣系統(tǒng)將一些長期在線的穩(wěn)定節(jié)點(diǎn)配置為種子節(jié)點(diǎn),種子節(jié)點(diǎn)通過硬編碼方式保存有完整的區(qū)塊鏈網(wǎng)絡(luò)地址列表,可以為新加入節(jié)點(diǎn)提供優(yōu)質(zhì)的節(jié)點(diǎn)發(fā)現(xiàn)和路由列表服務(wù)。例如,比特幣系統(tǒng)的種子節(jié)點(diǎn)可以定期通過Net.AdvertiseLocal()方式將本地地址列表以廣播方式主動推送給其他節(jié)點(diǎn),以使其他節(jié)點(diǎn)及時(shí)更新地址列表。另外,比特幣系統(tǒng)中節(jié)點(diǎn)將地址以LevelDB[32]格式存儲在peer.dat 數(shù)據(jù)庫系統(tǒng)中。LevelDB 數(shù)據(jù)庫是一個(gè)“鍵/值”(Key/Value)數(shù)據(jù)庫,主要用于存儲和管理關(guān)聯(lián)性數(shù)組,具有良好的讀寫性能,非常適合對比特幣系統(tǒng)中節(jié)點(diǎn)地址的管理要求。
2.3.2 以太坊系統(tǒng)中的P2P網(wǎng)絡(luò)
與比特幣相比較,以太坊的功能更加強(qiáng)大,應(yīng)用場景更加豐富,相應(yīng)地對節(jié)點(diǎn)的組織管理方式更加靈活和高效。以太坊系統(tǒng)中的P2P 網(wǎng)絡(luò)在借鑒了比特幣系統(tǒng)中P2P網(wǎng)絡(luò)應(yīng)用特點(diǎn)的基礎(chǔ)上,結(jié)合以太坊功能實(shí)現(xiàn)進(jìn)行了一些改進(jìn)和優(yōu)化:
(1)采用結(jié)構(gòu)化對等網(wǎng)絡(luò)模式。通過DHT 方式實(shí)現(xiàn)其結(jié)構(gòu)化功能,任一節(jié)點(diǎn)都擁有全網(wǎng)唯一的哈希列表中的位置ⅠD,以便于其他節(jié)點(diǎn)精準(zhǔn)定位。
(2)具體使用KAD 協(xié)議。為了更好地適應(yīng)網(wǎng)絡(luò)中節(jié)點(diǎn)頻繁加入和退出的需要,以太坊中使用了KAD 協(xié)議。KAD 協(xié)議是一種對DHT 的具體實(shí)現(xiàn),是第三代P2P網(wǎng)絡(luò)中節(jié)點(diǎn)動態(tài)管理和路由的協(xié)議,與其前兩代協(xié)議(如Chord[33]、CAN[34]、Pastry[35])相比,KAD以全局唯一ⅠD 標(biāo)記對等網(wǎng)絡(luò)節(jié)點(diǎn),以節(jié)點(diǎn)ⅠD 異或(XOR)值度量節(jié)點(diǎn)之間的距離,即Dis(M,N)=XOR(M,N)。
(3)種子節(jié)點(diǎn)。與比特幣系統(tǒng)一樣,以太坊系統(tǒng)同樣將穩(wěn)定的節(jié)點(diǎn)配置為種子節(jié)點(diǎn),以便為其他節(jié)點(diǎn)提供更優(yōu)質(zhì)的節(jié)點(diǎn)列表服務(wù)。與比特幣系統(tǒng)一樣,種子節(jié)點(diǎn)的引入,在方便了對新節(jié)點(diǎn)管理的同時(shí),在一定程度上弱化了P2P網(wǎng)絡(luò)的去中心化特征,影響了網(wǎng)絡(luò)的安全性。
(4)地址數(shù)據(jù)庫。以太坊系統(tǒng)采用與比特幣系統(tǒng)相同的LevelDB格式數(shù)據(jù)庫來保存地址信息。
(5)地址查詢。由于以太坊節(jié)點(diǎn)使用全網(wǎng)唯一的結(jié)構(gòu)化編址方案,所以可以根據(jù)KAD 表結(jié)構(gòu)快速定位到待查詢節(jié)點(diǎn)ⅠD的具體位置。
隨著以太坊應(yīng)用范圍的不斷擴(kuò)展,研究人員對以太坊系統(tǒng)中P2P 網(wǎng)絡(luò)的節(jié)點(diǎn)管理方式進(jìn)行了進(jìn)一步分析和優(yōu)化。例如,通過對以太坊的網(wǎng)絡(luò)測量,發(fā)現(xiàn)網(wǎng)絡(luò)中可能影響正常路由的節(jié)點(diǎn)[36],以及礦工的節(jié)點(diǎn)位置對挖礦結(jié)果的影響[37]。
2.3.3 超級賬本中的P2P網(wǎng)絡(luò)
比特幣創(chuàng)造了區(qū)塊鏈技術(shù)應(yīng)用的神話,以太坊以圖靈完備和智能合約使區(qū)塊技術(shù)走出數(shù)字加密貨幣,廣泛服務(wù)于金融、醫(yī)療、公共服務(wù)、供應(yīng)鏈、智能制造、保險(xiǎn)、游戲等眾多領(lǐng)域。比特幣和以太坊系統(tǒng)是公有鏈應(yīng)用的典型,而超級賬本為聯(lián)盟鏈應(yīng)用提供了一個(gè)開源技術(shù)架構(gòu)。目前,主流的超級賬本項(xiàng)目有Monax 和Ⅰntel 的Hyperledge Burrow[38]、Soramitsu 的Hyperledge Ⅰroha[39]、ⅠBM和Digital Asset的Hyperledge Fabric[40]等,其中Fabric是目前主流的開源聯(lián)盟鏈產(chǎn)品之一,主要有Fabric 0.6和Fabric 1.0兩個(gè)版本。
Fabric 1.0 采用半中心化模式,根據(jù)企業(yè)級應(yīng)用的具體需要,基于網(wǎng)絡(luò)中扮演的角色不同,將節(jié)點(diǎn)分為NP(validating peer,驗(yàn)證節(jié)點(diǎn))、NVP(nove validating peer,非驗(yàn)證節(jié)點(diǎn))以及成員管理(membership services)節(jié)點(diǎn)3種類型。其中,成員管理服務(wù)為了適應(yīng)企業(yè)級應(yīng)用,借鑒了傳統(tǒng)身份管理的功能,實(shí)現(xiàn)成員注冊、身份管理、交易審計(jì)等功能,以確保平臺應(yīng)用的安全性;VP節(jié)點(diǎn)負(fù)責(zé)共識達(dá)成、驗(yàn)證和確認(rèn)交易以及維護(hù)賬本數(shù)據(jù)的一致性;NVP節(jié)點(diǎn)主要對從客戶端接收到的交易進(jìn)行驗(yàn)證,并將驗(yàn)證通過的合法交易轉(zhuǎn)發(fā)給VP節(jié)點(diǎn),由VP節(jié)點(diǎn)通過共識算法寫入?yún)^(qū)塊。Fabric 0.6 中VP 和NVP 節(jié)點(diǎn)之間的關(guān)系如圖4(a)所示。
Fabric 1.0中沒有了VP和NVP節(jié)點(diǎn),而是由Orderer(排序)、Endorser(背書)和Committer(記賬)節(jié)點(diǎn)替代,具體如圖4(b)所示。其中,作為企業(yè)級的應(yīng)用,客戶端首先需要向管理成員節(jié)點(diǎn)(一般為企業(yè)CA)申請一個(gè)入網(wǎng)證書用于身份驗(yàn)證和對交易進(jìn)行簽名??蛻舳松梢粋€(gè)提案(proposal)后發(fā)送到背書節(jié)點(diǎn),背書節(jié)點(diǎn)對通過驗(yàn)證的提案交由鏈碼chaincode 進(jìn)行模擬執(zhí)行,并將經(jīng)過背書的結(jié)果返回給客戶端;隨之,客戶端在接收到背書節(jié)點(diǎn)的提案響應(yīng)(proposal response)消息后,將其封裝成一筆交易發(fā)送給排序節(jié)點(diǎn)進(jìn)行排序操作,將創(chuàng)建一個(gè)新的有序交易的區(qū)塊,然后將新區(qū)塊發(fā)送給記賬節(jié)點(diǎn);每個(gè)記賬節(jié)點(diǎn)在收到新區(qū)塊之后會對其驗(yàn)證(包括簽名、背書策略以及讀寫集的校驗(yàn)等),在通過驗(yàn)證后將區(qū)塊鏈接到主鏈的尾部。
另外,F(xiàn)abric 種子節(jié)點(diǎn)并沒有采用比特幣和以太坊中的硬編碼方案,而是通過配置文件加載方式實(shí)現(xiàn)對節(jié)點(diǎn)地址的動態(tài)獲取與管理。具體講,F(xiàn)abric采用了近年來廣受歡迎的開源配置解決方案Viper[41],不但可以動態(tài)獲取本地地址參數(shù),而且可以獲得遠(yuǎn)端節(jié)點(diǎn)的配置文件消息。節(jié)點(diǎn)通過Viper獲取到的信息可以在無需重啟系統(tǒng)的情況下自動生效。另外,F(xiàn)abric采用Gossip協(xié)議實(shí)現(xiàn)P2P網(wǎng)絡(luò)中節(jié)點(diǎn)之間的數(shù)據(jù)交互與最終一致性。
P2P 網(wǎng)絡(luò)為區(qū)塊鏈節(jié)點(diǎn)的安全接入以及節(jié)點(diǎn)之間的通信提供基本保障,具體包括節(jié)點(diǎn)之間的組網(wǎng)模式、通信模式及通信管理等。區(qū)塊鏈系統(tǒng)采用不依賴于第三方的P2P組網(wǎng)通信方式,在全網(wǎng)范圍內(nèi)的不同節(jié)點(diǎn)之間建立聯(lián)系并實(shí)現(xiàn)路由選擇和資源查詢等服務(wù)功能。P2P網(wǎng)絡(luò)的安全問題必然導(dǎo)致區(qū)塊鏈應(yīng)用的安全風(fēng)險(xiǎn),總體來看,區(qū)塊鏈P2P網(wǎng)絡(luò)的安全問題主要反映在漏洞威脅、網(wǎng)絡(luò)分區(qū)和隱私威脅三個(gè)方面[42-43]。
3.1.1 漏洞威脅
漏洞的存在是安全問題產(chǎn)生的主要根源,目前大量網(wǎng)絡(luò)攻擊行為的實(shí)施都是借助漏洞來實(shí)現(xiàn)的。然而,漏洞的存在是不可避免的,只能在發(fā)現(xiàn)后進(jìn)行修復(fù)。對于攻擊者來說,任何已存在但未修復(fù)的漏洞都具有利用的價(jià)值。區(qū)塊鏈P2P網(wǎng)絡(luò)是一種典型的覆蓋網(wǎng)絡(luò),用于為區(qū)塊鏈節(jié)點(diǎn)之間提供一種分布式的自組織連接方式。但是,由于P2P 網(wǎng)絡(luò)中的節(jié)點(diǎn)接入和退出自由,而且不存在身份認(rèn)證和數(shù)據(jù)驗(yàn)證(正常通信情況下,不涉及到挖礦操作)等管理機(jī)制,所以存在較大的安全風(fēng)險(xiǎn):
(1)易遭受惡意攻擊。攻擊節(jié)點(diǎn)可以惡意傳播病毒、木馬、蠕蟲等惡意代碼,破壞正常的網(wǎng)絡(luò)運(yùn)行機(jī)制。也可以對一些重要節(jié)點(diǎn)(如礦工節(jié)點(diǎn)、礦池節(jié)點(diǎn)等)發(fā)起DDoS(distributed denial of service,分布式拒絕服務(wù))攻擊[44],或?qū)χ赶蛱囟ü?jié)點(diǎn)的路由實(shí)施路由攻擊。
(2)攻擊行為難以檢測。傳統(tǒng)的基于邊界安全的防火墻和入侵檢測技術(shù)無法對P2P流量進(jìn)行有效管理,而且針對P2P 網(wǎng)絡(luò)節(jié)點(diǎn)的攻擊源較難進(jìn)行溯源和實(shí)施阻斷。雖然零信任技術(shù)[45]從理論上可以解決這一問題,但是零信任網(wǎng)絡(luò)的大規(guī)模部署目前尚存在較大的困難。
(3)節(jié)點(diǎn)間存在資源和權(quán)限的差異性。任何網(wǎng)絡(luò)都存在物理和邏輯上的邊界,區(qū)塊鏈P2P 網(wǎng)絡(luò)也是如此。區(qū)塊鏈P2P網(wǎng)絡(luò)中,節(jié)點(diǎn)會因?yàn)樵诰W(wǎng)絡(luò)中的具體位置以及加入網(wǎng)絡(luò)的時(shí)間先后,存在對資源占有的不平衡性。一般情況下,位于網(wǎng)絡(luò)中心位置以及較早加入網(wǎng)絡(luò)且運(yùn)行穩(wěn)定(長期在線)的節(jié)點(diǎn)占有資源較多,如果這些重要節(jié)點(diǎn)被惡意控制后,就可能會限制其他節(jié)點(diǎn)享有數(shù)據(jù)資源,或?qū)ζ渌?jié)點(diǎn)的路由及資源查詢進(jìn)行誤導(dǎo)。在區(qū)塊鏈系統(tǒng)中,當(dāng)輕量級SPV節(jié)點(diǎn)需要訪問全節(jié)點(diǎn)中的賬本數(shù)據(jù)時(shí),更容易被全節(jié)點(diǎn)限制訪問。
(4)智能合約安全漏洞的利用。智能合約以其具有的部署靈活、公開透明、調(diào)用便捷等特點(diǎn),豐富了區(qū)塊鏈的應(yīng)用功能。與此同時(shí),智能合約存在的合約安全和隱私安全等問題已嚴(yán)重影響著區(qū)塊鏈應(yīng)用的進(jìn)一步發(fā)展[46]。由于合約部署在公開節(jié)點(diǎn)上,這些節(jié)點(diǎn)自身的安全以及防范外界攻擊的能力對提升P2P 網(wǎng)絡(luò)的安全性顯得極為重要。
針對區(qū)塊鏈P2P 網(wǎng)絡(luò)安全漏洞的產(chǎn)生原因較為復(fù)雜,目前的研究主要集中于協(xié)議設(shè)計(jì)缺陷和軟件實(shí)現(xiàn)中存在的漏洞兩個(gè)方面,其目標(biāo)是在提升P2P網(wǎng)絡(luò)運(yùn)行性能的同時(shí),加強(qiáng)對以P2P網(wǎng)絡(luò)為重點(diǎn)的漏洞檢測技術(shù)的研究。
3.1.2 網(wǎng)絡(luò)分區(qū)
網(wǎng)絡(luò)分區(qū)的概念較早出現(xiàn)在分布式系統(tǒng)中,是分布式系統(tǒng)的一種故障類型[47]。在分布式集群中,受網(wǎng)絡(luò)通信質(zhì)量的影響,部分節(jié)點(diǎn)之間會因?yàn)闊o法建立連接從而使集群中的節(jié)點(diǎn)形成不同的子集,且不同子集之間相互隔離。
區(qū)塊鏈基于P2P 網(wǎng)絡(luò)在共識算法的作用下實(shí)現(xiàn)不同節(jié)點(diǎn)上賬本的一致性。區(qū)塊鏈系統(tǒng)中一旦出現(xiàn)網(wǎng)絡(luò)分區(qū),不同分區(qū)形成不同節(jié)點(diǎn)子集,每個(gè)子集分別維護(hù)各自的賬本,破壞了網(wǎng)絡(luò)中共識算法的一致性。在區(qū)塊鏈網(wǎng)絡(luò)中,全節(jié)點(diǎn)上存儲著完整的賬本數(shù)據(jù),而輕量級SPV節(jié)點(diǎn)只保存有區(qū)塊頭數(shù)據(jù)和交易相關(guān)的細(xì)節(jié)信息,輕量級SPV 節(jié)點(diǎn)需要通過全節(jié)點(diǎn)上的數(shù)據(jù)來更新自身節(jié)點(diǎn)的數(shù)據(jù)。另外,當(dāng)輕量級SPV節(jié)點(diǎn)需要對某一筆交易是否真實(shí)存在進(jìn)行驗(yàn)證時(shí),需要借助周邊的全節(jié)點(diǎn)來完成。區(qū)塊鏈系統(tǒng)的這種工作方式,很容易被攻擊后形成網(wǎng)絡(luò)分區(qū)。攻擊節(jié)點(diǎn)通過主動探測或被動監(jiān)聽方式在獲取到網(wǎng)絡(luò)拓?fù)湫畔⒑?,就可以確定被攻擊的目標(biāo)節(jié)點(diǎn),再控制目標(biāo)節(jié)點(diǎn)周圍的鄰居節(jié)點(diǎn)從而形成網(wǎng)絡(luò)分區(qū),進(jìn)一步控制網(wǎng)絡(luò)路由和資源查詢。
目前的比特幣和以太坊系統(tǒng)都沒有提供有效的防范網(wǎng)絡(luò)分區(qū)的功能,更沒有研究網(wǎng)絡(luò)分區(qū)時(shí)的共識算法優(yōu)化機(jī)制[48]。未來研究仍然集中于P2P 網(wǎng)絡(luò)協(xié)議優(yōu)化和開發(fā)適應(yīng)網(wǎng)絡(luò)分區(qū)環(huán)境的區(qū)塊鏈共識協(xié)議兩個(gè)方面。
3.1.3 隱私威脅
隱私專指用戶不想公開的個(gè)人信息,數(shù)據(jù)安全是實(shí)現(xiàn)隱私保護(hù)的前提[49],用戶不愿意公開的姓名、年齡、家庭住址等信息,都屬于隱私的范疇。隱私的確定并非一成不變的,它會根據(jù)不同的時(shí)間和知悉對象發(fā)生變化,即隱私具有針對性和時(shí)限性。
區(qū)塊鏈系統(tǒng)中的大部分隱私與交易相關(guān)[50]。如圖5所示的是從blockchain.info網(wǎng)站公開顯示的比特系統(tǒng)的一筆交易信息,主要包括交易輸入(From)、交易輸出(To)和元數(shù)據(jù)三部分內(nèi)容,詳細(xì)描述了本筆交易的來源和去向以及相互之間的關(guān)系。
從圖5中可以看出,比特幣系統(tǒng)中與交易相關(guān)的信息都是公開的。雖然這些與用戶身份相關(guān)的公開信息(如交易地址、輸入與輸出地址之間的關(guān)系等)都以假名機(jī)制經(jīng)過了匿名化處理,但由于賬本數(shù)據(jù)的公開性以及交易之間的關(guān)聯(lián)性,攻擊者仍然可能會窺探到用戶隱私。目前,已有大量研究表明,通過對比特幣賬本數(shù)據(jù)的分析,再借助互聯(lián)網(wǎng)節(jié)點(diǎn)對應(yīng)的ⅠP地址及其他公開信息,可以確定交易者的身份。
隱私保護(hù)是目前區(qū)塊鏈研究的重點(diǎn)[51-52],未來研究將主要針對區(qū)塊鏈中的數(shù)據(jù)隱私泄露問題,加強(qiáng)針對P2P網(wǎng)絡(luò)通信隱私以及針對網(wǎng)絡(luò)節(jié)點(diǎn)隱私的研究,同時(shí)結(jié)合區(qū)塊鏈的跨鏈操作需要,對跨鏈操作中產(chǎn)生的隱私泄露風(fēng)險(xiǎn)進(jìn)行分析。在此基礎(chǔ)上,基于系統(tǒng)思維方式,加強(qiáng)區(qū)塊鏈技術(shù)(如智能合約、側(cè)鏈等)和應(yīng)用過程中的隱私保護(hù)研究。
表3從安全威脅的主要表現(xiàn)、安全威脅的主要產(chǎn)生原因以及安全威脅程度等方面,對漏洞威脅、網(wǎng)絡(luò)分區(qū)和隱私威脅進(jìn)行了比較分析。
表3 針對區(qū)塊鏈P2P網(wǎng)絡(luò)主要安全威脅的比較Table 3 Comparison of major security threats to blockchain P2P networks
針對前文分析的區(qū)塊鏈P2P網(wǎng)絡(luò)安全問題,并通過對近年來發(fā)生的區(qū)塊鏈安全事件的分析,本節(jié)重點(diǎn)對區(qū)塊鏈P2P網(wǎng)絡(luò)中的DDoS攻擊、Sybil攻擊和Eclipse攻擊的實(shí)現(xiàn)原理和防范思路進(jìn)行討論。
3.2.1 DDoS攻擊
DDoS 攻擊[53]是指位于不同地點(diǎn)的多個(gè)攻擊者(attacker)聯(lián)合起來向受害主機(jī)(victim)同時(shí)發(fā)起攻擊,或攻擊者在控制了多臺主機(jī)(傀儡主機(jī))后再借助這些受控主機(jī)向受害主機(jī)實(shí)施攻擊。DDoS攻擊是一種基于分布式系統(tǒng)的具有協(xié)同功能的大規(guī)模攻擊方式。隨著P2P 網(wǎng)絡(luò)的流行,DDoS 攻擊方式與P2P 網(wǎng)絡(luò)開始走向融合,出現(xiàn)了專門針對P2P網(wǎng)絡(luò)的DDoS攻擊方式[54]。
如圖6所示的是區(qū)塊鏈P2P網(wǎng)絡(luò)中DDoS攻擊的實(shí)現(xiàn)方式。攻擊者在實(shí)施P2P 網(wǎng)絡(luò)攻擊時(shí),一般情況下,不需要像傳統(tǒng)DDoS 攻擊那樣利用已經(jīng)發(fā)現(xiàn)的漏洞向傀儡機(jī)植入木馬,然后利用構(gòu)建的僵尸網(wǎng)絡(luò)向受害主機(jī)發(fā)起攻擊,而是基于P2P 覆蓋網(wǎng)絡(luò)的特點(diǎn),在應(yīng)用層通過構(gòu)建攻擊報(bào)文并利用反射式攻擊方式發(fā)起攻擊。具體講,攻擊者將受害主機(jī)的ⅠP地址和端口寫入到攻擊報(bào)文的應(yīng)用層消息中,以此將P2P網(wǎng)絡(luò)的節(jié)點(diǎn)流量引向受害主機(jī)。用此方式,可以實(shí)現(xiàn)利用較小的請求報(bào)文來觸發(fā)較大的響應(yīng)報(bào)文,進(jìn)而生成巨大的攻擊數(shù)據(jù)流;同時(shí),攻擊者還可以通過修改P2P網(wǎng)絡(luò)的路由信息,將攻擊數(shù)據(jù)流指向受害主機(jī);另外,攻擊者還可以修改P2P 網(wǎng)絡(luò)中的資源查詢方式,形成匯聚到受害主機(jī)的攻擊流量。
圖6 P2P網(wǎng)絡(luò)中DDoS攻擊示意圖Fig.6 Diagram of DDoS attacks on P2P network
借助P2P網(wǎng)絡(luò)中節(jié)點(diǎn)間的通信方式,可以將P2P網(wǎng)絡(luò)中的DDoS 攻擊分為主動攻擊和被動攻擊兩種類型。其中,主動攻擊是指攻擊者利用P2P 協(xié)議的推(push)機(jī)制,主動向網(wǎng)絡(luò)中發(fā)送大量虛假信息,使得針對這些虛假信息的后續(xù)訪問都指向受害主機(jī);而被動攻擊是指攻擊者利用P2P 協(xié)議的拉(pull)機(jī)制,被動地等待其他節(jié)點(diǎn)來訪問虛構(gòu)的攻擊資源,再利用信息放大措施產(chǎn)生攻擊數(shù)據(jù)流并進(jìn)一步增強(qiáng)攻擊效果。相對來講,主動攻擊具有可控性強(qiáng)、控制面廣、放大效應(yīng)明顯等特點(diǎn),攻擊效果要比被動攻擊好。
針對P2P網(wǎng)絡(luò)中DDoS攻擊的防范方法主要有建立鄰居節(jié)點(diǎn)之間的信任機(jī)制、對產(chǎn)生較大流量的節(jié)點(diǎn)身份進(jìn)行驗(yàn)證,以及加強(qiáng)對重要節(jié)點(diǎn)的保護(hù)等。當(dāng)然,這些方法中部分功能的實(shí)現(xiàn)與區(qū)塊鏈的去中心化、去信任等機(jī)制相悖,這也是在追求安全過程中需要付出的代價(jià)。
3.2.2 Sybil攻擊
Sybil(女巫)來自于一個(gè)故事中的女主角,她患有多重人格障礙癥,不同時(shí)刻會扮演不同的角色。在P2P網(wǎng)絡(luò)中,Sybil 攻擊[55]是指單一節(jié)點(diǎn)具有多個(gè)身份,而且網(wǎng)絡(luò)中的其他節(jié)點(diǎn)對其每一個(gè)身份及其行為都認(rèn)為是合法合規(guī)的。
在區(qū)塊鏈P2P網(wǎng)絡(luò)中,Sybil攻擊主要針對采用拜占庭容錯(cuò)(Byzantine fault tolerance,BFT)共識算法的區(qū)塊鏈系統(tǒng)[56]。由于BFT 協(xié)議要求系統(tǒng)中錯(cuò)誤節(jié)點(diǎn)數(shù)要小于節(jié)點(diǎn)總數(shù)的1/3 才能達(dá)成最終的一致性,為此,在Sybil攻擊中,攻擊者借助P2P網(wǎng)絡(luò)中節(jié)點(diǎn)自由加入的和離開特點(diǎn),通過創(chuàng)建多個(gè)擁有不同身份信息的節(jié)點(diǎn),以此來破壞區(qū)塊鏈系統(tǒng)的共識算法中的投票機(jī)制,從而產(chǎn)生錯(cuò)誤的最終提案,具體操作過程如圖7所示。
圖7 P2P網(wǎng)絡(luò)中Sybil攻擊示意圖Fig.7 Diagram of Sybil attack in P2P network
針對Sybil攻擊的防范方法主要是優(yōu)化區(qū)塊鏈系統(tǒng)共識算法,在算法中增加挖礦節(jié)點(diǎn)的身份識別和驗(yàn)證機(jī)制,確保挖礦節(jié)點(diǎn)的可信性,防止惡意節(jié)點(diǎn)假扮成礦工進(jìn)行共識挖礦。
3.2.3 Eclipse攻擊
Eclipse(日蝕)攻擊[57]主要出現(xiàn)在網(wǎng)絡(luò)分區(qū)中,是攻擊者在獲取到網(wǎng)絡(luò)拓?fù)湫畔⒑?,再利用該拓?fù)湫畔?shí)現(xiàn)網(wǎng)絡(luò)分區(qū)的一種典型的攻擊方式。攻擊者首先獲取到網(wǎng)絡(luò)拓?fù)湫畔?,然后確定受害節(jié)點(diǎn)在網(wǎng)絡(luò)中的具體位置信息,接著通過限制外界與受害節(jié)點(diǎn)之間的通信,甚至使受害節(jié)點(diǎn)完全與外界隔離,使受害節(jié)點(diǎn)無法接收到外部節(jié)點(diǎn)的信息,致使受害節(jié)點(diǎn)所在網(wǎng)絡(luò)中節(jié)點(diǎn)存儲的區(qū)塊鏈賬本數(shù)據(jù)與外界不一致,破壞了區(qū)塊鏈分布式節(jié)點(diǎn)中數(shù)據(jù)的一致性。與此同時(shí),攻擊者還可以有目的地控制受害節(jié)點(diǎn)所在的子網(wǎng)絡(luò),使該子網(wǎng)絡(luò)從整個(gè)網(wǎng)絡(luò)中隔離,形成網(wǎng)絡(luò)分區(qū)。攻擊者通過有效隔離受害節(jié)點(diǎn),控制甚至征用受害節(jié)點(diǎn)的算力,為進(jìn)一步實(shí)施雙花攻擊或自私挖礦(selfish mining)[58]提供條件。
在區(qū)塊鏈P2P網(wǎng)絡(luò)中,完整的路由信息是實(shí)現(xiàn)全網(wǎng)不同節(jié)點(diǎn)之間信息交互的基礎(chǔ)。而在Eclipse 攻擊中,攻擊者不斷向受害節(jié)點(diǎn)的鄰居節(jié)點(diǎn)(傀儡節(jié)點(diǎn))發(fā)送經(jīng)事先偽造的虛假路由更新信息,使鄰居節(jié)點(diǎn)中充斥著大量無效路由信息。當(dāng)鄰居節(jié)點(diǎn)逐個(gè)變成傀儡節(jié)點(diǎn)時(shí),形成一個(gè)以受害節(jié)點(diǎn)為中心的網(wǎng)絡(luò)分區(qū),外界與受害節(jié)點(diǎn)之間的信息交互(路由查詢、資源搜索等)被攻擊者掌控。如圖8 顯示了區(qū)塊鏈P2P 網(wǎng)絡(luò)中Eclipse 攻擊的基本實(shí)現(xiàn)原理。
圖8 P2P網(wǎng)絡(luò)中Eclipse攻擊示意圖Fig.8 Eclipse attack diagram in P2P network
區(qū)塊鏈系統(tǒng)中,針對Eclipse 攻擊的防范方法主要是修改節(jié)點(diǎn)路由信息的更新規(guī)則,對單位時(shí)間內(nèi)更新的路由條目進(jìn)行必要的限制,防止大量虛假路由信息的更新。同時(shí),采用相應(yīng)策略,當(dāng)進(jìn)行路由信息更新時(shí),對新加入路由信息的有效性進(jìn)行測試。還有,限制從單一節(jié)點(diǎn)(一般為攻擊者節(jié)點(diǎn))接收需要頻繁更新的路由信息。
為便于對三類典型攻擊方式的理解,表4分別從主要攻擊對象、主要攻擊目的、主要防范方法、關(guān)聯(lián)攻擊方式和實(shí)施難易度等方面對其進(jìn)行了比較分析。
表4 針對區(qū)塊鏈P2P網(wǎng)絡(luò)的三類典型攻擊方式的比較Table 4 Comparison of 3 types of typical attacks against blockchain P2P networks
區(qū)塊鏈系統(tǒng)中使用的共識機(jī)制、公鑰密鑰算法、P2P網(wǎng)絡(luò)、經(jīng)濟(jì)激勵(lì)和博弈論等理論與技術(shù)都不是專門針對區(qū)塊鏈而開發(fā)的,只是在區(qū)塊鏈技術(shù)中重新找到了自己的價(jià)值,并在應(yīng)用迭代中進(jìn)一步優(yōu)化和完善。P2P網(wǎng)絡(luò)最初也是應(yīng)用在音樂、視頻等多媒體服務(wù)(如目前互聯(lián)網(wǎng)中擁有巨大用戶量的PPS、PPLive網(wǎng)絡(luò)電視等),在中本聰?shù)膮^(qū)塊鏈技術(shù)以及基于該技術(shù)開發(fā)的比特幣系統(tǒng)原型中選擇了P2P網(wǎng)絡(luò)作為底層通信協(xié)議。后來,隨著區(qū)塊鏈技術(shù)在加密數(shù)字貨幣中應(yīng)用的深入以及向其他領(lǐng)域的擴(kuò)展,P2P 網(wǎng)絡(luò)技術(shù)得到了進(jìn)一步發(fā)展和完善。與此同時(shí),區(qū)塊鏈P2P技術(shù)自身以及P2P網(wǎng)絡(luò)的安全性也在一定程度上影響著區(qū)塊鏈的發(fā)展。目前,針對區(qū)塊鏈P2P網(wǎng)絡(luò)和安全問題的研究,主要在以下幾個(gè)方面存在一定的挑戰(zhàn):
(1)針對區(qū)塊鏈P2P網(wǎng)絡(luò)的流量分析。區(qū)塊鏈作為一項(xiàng)實(shí)現(xiàn)去中心化應(yīng)用的底層技術(shù),并非所有應(yīng)用在全球都是合法的,例如,中國政府就嚴(yán)厲打擊比特幣挖礦和交易行為。然而,從技術(shù)層面并不能因?yàn)榻雇诘V就全面禁止其他的區(qū)塊鏈應(yīng)用,反而應(yīng)通過區(qū)塊鏈應(yīng)用創(chuàng)新來促進(jìn)經(jīng)濟(jì)社會高質(zhì)量發(fā)展。為此,需要通過綜合運(yùn)用深度學(xué)習(xí)、大語言模型等技術(shù)和方法,加強(qiáng)對互聯(lián)網(wǎng)流量特征的動態(tài)識別和分析,從技術(shù)層面限制非法應(yīng)用,保護(hù)合法網(wǎng)絡(luò)流量。
(2)技術(shù)研究與應(yīng)用創(chuàng)新。區(qū)塊鏈?zhǔn)且豁?xiàng)繼承和綜合了多項(xiàng)成熟技術(shù)的創(chuàng)新應(yīng)用,強(qiáng)化單一技術(shù)的研究和多技術(shù)之間深度融合是推動區(qū)塊鏈技術(shù)發(fā)展的關(guān)鍵。針對區(qū)塊鏈P2P網(wǎng)絡(luò),需要對覆蓋網(wǎng)絡(luò)路由及不同節(jié)點(diǎn)信息的一致性進(jìn)行優(yōu)化,對P2P網(wǎng)絡(luò)尤其是非結(jié)構(gòu)化對等網(wǎng)絡(luò)中的信息檢索機(jī)制進(jìn)行優(yōu)化,對大型P2P網(wǎng)絡(luò)中因節(jié)點(diǎn)頻繁加入和退出對網(wǎng)絡(luò)產(chǎn)生的抖動特性進(jìn)行研究,對P2P網(wǎng)絡(luò)分區(qū)問題產(chǎn)生的機(jī)理和應(yīng)對策略進(jìn)行系統(tǒng)分析,對基于DHT 的P2P 網(wǎng)絡(luò)中數(shù)據(jù)的冗余機(jī)制和高可用性進(jìn)行研究等。與此同時(shí),需要堅(jiān)持問題導(dǎo)向,在工程實(shí)踐中加強(qiáng)不同技術(shù)之間的協(xié)同和應(yīng)用優(yōu)化,并確保其安全性。
(3)區(qū)塊鏈網(wǎng)絡(luò)安全。安全是一個(gè)基礎(chǔ)問題,也是一個(gè)謀長遠(yuǎn)的問題,區(qū)塊鏈網(wǎng)絡(luò)安全更是如此。一方面,區(qū)塊鏈P2P 網(wǎng)絡(luò)自身持有其安全特質(zhì),如利用P2P網(wǎng)絡(luò)的分布式存儲和處理特征防止單一節(jié)點(diǎn)攻擊,利用數(shù)據(jù)存儲的多副本特征提升系統(tǒng)的容錯(cuò)能力,利用P2P網(wǎng)絡(luò)的拓?fù)涮卣髟鰪?qiáng)系統(tǒng)的兼容性和可擴(kuò)展性等。另一方面,區(qū)塊鏈P2P 網(wǎng)絡(luò)因其具有的網(wǎng)絡(luò)開放性、節(jié)點(diǎn)加入與退出的隨意性、單一節(jié)點(diǎn)對整個(gè)網(wǎng)絡(luò)信息了解的有限性等特點(diǎn),在安全方面存在一定的挑戰(zhàn)。針對這些區(qū)塊鏈P2P 網(wǎng)絡(luò)的安全問題,需要從信任認(rèn)證、惡意節(jié)點(diǎn)檢測、攻擊容忍、攻擊限制、礦池挖礦規(guī)則和算法優(yōu)化等方面進(jìn)行系統(tǒng)研究,盡可能避免區(qū)塊鏈網(wǎng)絡(luò)安全中木桶效應(yīng)現(xiàn)象的出現(xiàn)。
另外,針對區(qū)塊鏈網(wǎng)絡(luò)的用戶隱私保護(hù)也是一個(gè)重要的研究領(lǐng)域,隨著區(qū)塊鏈技術(shù)的不斷發(fā)展和應(yīng)用的不斷普及,以及人們對隱私保護(hù)意識的不斷增強(qiáng),針對區(qū)塊鏈P2P 網(wǎng)絡(luò)及隱私保護(hù)研究的意義和價(jià)值將會進(jìn)一步突顯。同時(shí),無線Mesh 網(wǎng)絡(luò)[59]在區(qū)塊鏈系統(tǒng)中的應(yīng)用也是一個(gè)應(yīng)用和研究熱點(diǎn)。