區(qū)塊鏈課件第四章 區(qū)塊鏈網(wǎng)絡(luò)層_第1頁(yè)
區(qū)塊鏈課件第四章 區(qū)塊鏈網(wǎng)絡(luò)層_第2頁(yè)
區(qū)塊鏈課件第四章 區(qū)塊鏈網(wǎng)絡(luò)層_第3頁(yè)
區(qū)塊鏈課件第四章 區(qū)塊鏈網(wǎng)絡(luò)層_第4頁(yè)
區(qū)塊鏈課件第四章 區(qū)塊鏈網(wǎng)絡(luò)層_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本章內(nèi)容4.1P2P網(wǎng)絡(luò)4.2比特幣網(wǎng)絡(luò)4.3以太坊網(wǎng)絡(luò)4.4網(wǎng)絡(luò)層安全中心化拓?fù)淙植际椒墙Y(jié)構(gòu)化拓?fù)淙植际浇Y(jié)構(gòu)化拓?fù)浒敕植际酵負(fù)?什么是P2P網(wǎng)絡(luò)不同的定義Intel:通過(guò)系統(tǒng)間的直接交換達(dá)成計(jì)算機(jī)資源與信息的共享IBM:由若干互聯(lián)協(xié)作的計(jì)算機(jī)構(gòu)成并具備如下特性之一:系統(tǒng)依存于邊緣化設(shè)備的主動(dòng)協(xié)作;每個(gè)成員同時(shí)扮演客戶端和服務(wù)器的角色;系統(tǒng)應(yīng)用的用戶能意識(shí)到彼此的存在而構(gòu)成一個(gè)虛擬或真實(shí)的群體特點(diǎn)節(jié)點(diǎn)彼此對(duì)等,既作為服務(wù)和資源的提供者,又作為服務(wù)和資源的獲取者1區(qū)塊鏈依靠P2P網(wǎng)絡(luò)可擴(kuò)展性、健壯性P2P網(wǎng)絡(luò)中的所有對(duì)等節(jié)點(diǎn)都可以提供帶寬、存儲(chǔ)空間以及計(jì)算能力等資源,隨著更多節(jié)點(diǎn)的加入,系統(tǒng)整體的資源和服務(wù)能力也在同步地得到擴(kuò)充負(fù)載均衡P2P網(wǎng)絡(luò)的資源分布在多個(gè)節(jié)點(diǎn)上,可以實(shí)現(xiàn)網(wǎng)絡(luò)的負(fù)載均衡去中心化在區(qū)塊鏈系統(tǒng)的P2P網(wǎng)絡(luò)中,節(jié)點(diǎn)是信息的發(fā)送方和接收方,它們共同維護(hù)區(qū)塊鏈2拓?fù)湫问揭恢行幕負(fù)溆梢慌_(tái)中心索引服務(wù)器和多個(gè)客戶端節(jié)點(diǎn)構(gòu)成,并非純粹的P2P網(wǎng)絡(luò)中心索引服務(wù)器用于保存接入節(jié)點(diǎn)的地址信息,向其他節(jié)點(diǎn)提供地址索引服務(wù)特點(diǎn)實(shí)現(xiàn)了文件查詢和文件傳輸?shù)姆蛛x,且維護(hù)簡(jiǎn)單一旦中心索引服務(wù)器發(fā)生了故障,就會(huì)導(dǎo)致整個(gè)網(wǎng)絡(luò)無(wú)法正常工作3拓?fù)湫问蕉植际椒墙Y(jié)構(gòu)化拓?fù)錄](méi)有使用中心索引服務(wù)器,其節(jié)點(diǎn)擁有真正的對(duì)等關(guān)系洪泛(Flooding)數(shù)據(jù)廣播,即節(jié)點(diǎn)會(huì)將接收到的消息向鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā),直到所有節(jié)點(diǎn)都接收到了這個(gè)消息或消息傳播的深度到達(dá)一定的限制特點(diǎn)可能會(huì)出現(xiàn)廣播風(fēng)暴實(shí)現(xiàn)快速的消息傳播和資源查找4拓?fù)湫问饺植际浇Y(jié)構(gòu)化拓?fù)洳捎梅植际缴⒘斜恚―istributedHashTables,簡(jiǎn)稱DHT)來(lái)實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)的尋址和存儲(chǔ),從而結(jié)構(gòu)化地址管理分布式散列表將存儲(chǔ)著網(wǎng)絡(luò)中所有資源信息的散列表劃分成很多不連續(xù)的小塊,分散地存儲(chǔ)在多個(gè)節(jié)點(diǎn)上特點(diǎn)維護(hù)機(jī)制較為復(fù)雜良好的健壯性、可擴(kuò)展性和動(dòng)態(tài)適應(yīng)性5拓?fù)湫问剿陌敕植际酵負(fù)鋵⒕W(wǎng)絡(luò)中性能較高的機(jī)器作為超級(jí)節(jié)點(diǎn),每個(gè)超級(jí)節(jié)點(diǎn)存儲(chǔ)著系統(tǒng)中其他部分節(jié)點(diǎn)的文件信息,執(zhí)行維護(hù)這些節(jié)點(diǎn)的地址、文件索引等工作超級(jí)節(jié)點(diǎn)之間形成一個(gè)高速的轉(zhuǎn)發(fā)層,并與接入的普通節(jié)點(diǎn)形成一個(gè)自治的簇,簇內(nèi)采用中心拓?fù)涞腜2P網(wǎng)絡(luò)特點(diǎn)消除了網(wǎng)絡(luò)擁塞的隱患,并在性能和可擴(kuò)展性上具有一定的優(yōu)勢(shì)對(duì)超級(jí)節(jié)點(diǎn)的依賴性較大6本章內(nèi)容4.1P2P網(wǎng)絡(luò)4.2比特幣網(wǎng)絡(luò)4.3以太坊網(wǎng)絡(luò)4.4網(wǎng)絡(luò)層安全節(jié)點(diǎn)類型及其功能擴(kuò)展比特幣網(wǎng)絡(luò)比特幣節(jié)點(diǎn)通信比特幣中繼網(wǎng)絡(luò)7比特幣網(wǎng)絡(luò)基于全分布式非結(jié)構(gòu)化拓?fù)渚W(wǎng)絡(luò)中的節(jié)點(diǎn)彼此對(duì)等,不存在特權(quán)節(jié)點(diǎn)和索引服務(wù)器,通過(guò)共識(shí)機(jī)制使所有誠(chéng)實(shí)的節(jié)點(diǎn)保存一致的區(qū)塊鏈視圖,從而實(shí)現(xiàn)去中心化控制協(xié)議比特幣網(wǎng)絡(luò)是依照比特幣P2P協(xié)議運(yùn)行的一系列節(jié)點(diǎn)的集合,其P2P協(xié)議建立在傳輸層的TCP協(xié)議之上,采用8333端口作為主網(wǎng)默認(rèn)通信端口比特幣還運(yùn)行著其他協(xié)議,如應(yīng)用于礦池挖礦、輕量級(jí)或移動(dòng)端比特幣錢包中的Stratum協(xié)議。這些協(xié)議由網(wǎng)關(guān)路由服務(wù)器提供,通過(guò)比特幣P2P協(xié)議接入到比特幣網(wǎng)絡(luò),使得運(yùn)行著擴(kuò)展功能的網(wǎng)絡(luò)節(jié)點(diǎn)連接到比特幣主網(wǎng)絡(luò)8節(jié)點(diǎn)類型依照節(jié)點(diǎn)保存區(qū)塊數(shù)據(jù)內(nèi)容和是否能獨(dú)立完成交易驗(yàn)證劃分全節(jié)點(diǎn)(FullNode)擁有完整的區(qū)塊鏈數(shù)據(jù),可以獨(dú)立地進(jìn)行區(qū)塊和交易的驗(yàn)證輕節(jié)點(diǎn)(LightweightNode)只保存區(qū)塊鏈數(shù)據(jù)的部分信息(如:區(qū)塊頭),不能獨(dú)立地進(jìn)行區(qū)塊和交易的驗(yàn)證。它通過(guò)簡(jiǎn)易支付驗(yàn)證(SimplifiedPaymentVerification,簡(jiǎn)稱SPV)方式向其他節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)來(lái)完成支付驗(yàn)證9功能類型依照節(jié)點(diǎn)承載的功能進(jìn)行劃分錢包(Wallet)可以支持比特幣交易、查詢等功能礦工(Miner)可以運(yùn)行工作量證明算法來(lái)爭(zhēng)奪創(chuàng)建新塊的資格,從而賺取系統(tǒng)獎(jiǎng)勵(lì)的比特幣以及交易手續(xù)費(fèi)完整區(qū)塊數(shù)據(jù)存儲(chǔ)(FullBlockchain)存儲(chǔ)著區(qū)塊鏈的完整數(shù)據(jù),可以獨(dú)立地驗(yàn)證所有交易,不需要借助任何外來(lái)參考網(wǎng)絡(luò)路由(NetworkRoutingNode)連接著一定數(shù)量的節(jié)點(diǎn),能幫助轉(zhuǎn)發(fā)交易和區(qū)塊數(shù)據(jù),發(fā)現(xiàn)和維護(hù)節(jié)點(diǎn)間的連接10節(jié)點(diǎn)類型依照節(jié)點(diǎn)的功能進(jìn)行劃分核心客戶端節(jié)點(diǎn)(ReferenceClient(BitcoinCore))包含錢包、礦工、完整區(qū)塊存儲(chǔ)、網(wǎng)絡(luò)路由四種功能全節(jié)點(diǎn)(FullBlockChainNode)擁有完整的區(qū)塊鏈數(shù)據(jù),具有網(wǎng)絡(luò)路由功能獨(dú)立礦工節(jié)點(diǎn)(SoloMiner)擁有完整區(qū)塊鏈數(shù)據(jù),具有路由功能和挖礦能力,能不依賴其他節(jié)點(diǎn)的算力單獨(dú)進(jìn)行挖礦輕量級(jí)錢包(Lightweight(SPV)Wallet)包含錢包與路由轉(zhuǎn)發(fā)功能11擴(kuò)展比特幣網(wǎng)絡(luò)包含比特幣P2P協(xié)議、礦池挖礦協(xié)議、Stratum協(xié)議(礦機(jī)與礦池軟件之間的通信協(xié)議)及其他連接比特幣系統(tǒng)組件的相關(guān)協(xié)議的整體網(wǎng)絡(luò)結(jié)構(gòu)被稱為擴(kuò)展比特幣網(wǎng)絡(luò)常見(jiàn)的擴(kuò)展節(jié)點(diǎn)有礦池協(xié)議服務(wù)器(PoolProtocolServer):常作為比特幣網(wǎng)絡(luò)與其他礦池挖礦節(jié)點(diǎn)的網(wǎng)關(guān)路由挖礦節(jié)點(diǎn)(MiningNode):一種輕量級(jí)節(jié)點(diǎn),包含挖礦功能,但不包含區(qū)塊鏈數(shù)據(jù),必須依賴礦池服務(wù)器維護(hù)的全節(jié)點(diǎn)進(jìn)行工作,通常運(yùn)行Stratum協(xié)議或其他礦池挖礦協(xié)議輕型Stratum協(xié)議錢包(Lightweight(SPV)StratumWallet):運(yùn)行在Stratum協(xié)議下包含錢包功能的節(jié)點(diǎn)12比特幣節(jié)點(diǎn)通信為了能夠參與協(xié)同運(yùn)作,節(jié)點(diǎn)需要發(fā)現(xiàn)網(wǎng)絡(luò)中的其他節(jié)點(diǎn)并與它們建立通信連接新加入的節(jié)點(diǎn)通常采用下面兩種方式進(jìn)行節(jié)點(diǎn)發(fā)現(xiàn)使用“DNS種子”(DNSseeds)來(lái)查詢DNS。比特幣客戶端會(huì)維護(hù)一個(gè)記錄長(zhǎng)期穩(wěn)定運(yùn)行節(jié)點(diǎn)的列表,這些節(jié)點(diǎn)也被稱為種子節(jié)點(diǎn),種子節(jié)點(diǎn)能提供比特幣節(jié)點(diǎn)的IP地址列表。通過(guò)與種子節(jié)點(diǎn)進(jìn)行連接,新節(jié)點(diǎn)可以快速發(fā)現(xiàn)網(wǎng)絡(luò)中的其他節(jié)點(diǎn)通過(guò)-seednode命令指定一個(gè)比特幣節(jié)點(diǎn)的IP地址作為比特幣種子節(jié)點(diǎn)。節(jié)點(diǎn)會(huì)和這個(gè)種子節(jié)點(diǎn)進(jìn)行連接以發(fā)現(xiàn)新節(jié)點(diǎn)13節(jié)點(diǎn)握手節(jié)點(diǎn)發(fā)現(xiàn)之后,節(jié)點(diǎn)間進(jìn)行“握手”連接實(shí)現(xiàn)信息的交換節(jié)點(diǎn)A先向節(jié)點(diǎn)B發(fā)送version信息,包括以下內(nèi)容nVersion:客戶端采用的比特幣P2P協(xié)議版本nLocalServices:一組該節(jié)點(diǎn)支持的本地服務(wù)列表,當(dāng)前僅支持NODE_NETWORKnTime:當(dāng)前時(shí)間addrYou:當(dāng)前節(jié)點(diǎn)可見(jiàn)的遠(yuǎn)程節(jié)點(diǎn)的IP地址(節(jié)點(diǎn)B的IP)addrMe:當(dāng)前節(jié)點(diǎn)的IP地址(節(jié)點(diǎn)A的IP)subver:指示當(dāng)前節(jié)點(diǎn)運(yùn)行的軟件類型的子版本號(hào)BestHeight:當(dāng)前節(jié)點(diǎn)區(qū)塊鏈的區(qū)塊高度(初始為0,即只包含創(chuàng)世區(qū)塊)14地址傳播和發(fā)現(xiàn)當(dāng)節(jié)點(diǎn)A和節(jié)點(diǎn)B的握手連接建立之后,節(jié)點(diǎn)B可以轉(zhuǎn)發(fā)節(jié)點(diǎn)A的地址,讓新節(jié)點(diǎn)被更多節(jié)點(diǎn)接收,并進(jìn)一步向節(jié)點(diǎn)A提供節(jié)點(diǎn)引薦節(jié)點(diǎn)A將一條包含自己IP地址的addr消息發(fā)送給節(jié)點(diǎn)B,節(jié)點(diǎn)B會(huì)將這條addr消息轉(zhuǎn)發(fā)給節(jié)點(diǎn)B的相鄰節(jié)點(diǎn),使得節(jié)點(diǎn)A的信息會(huì)在網(wǎng)絡(luò)中廣播出去,被更多節(jié)點(diǎn)發(fā)現(xiàn)此外,節(jié)點(diǎn)A可以向節(jié)點(diǎn)B發(fā)送getaddr請(qǐng)求,要求節(jié)點(diǎn)B向其發(fā)送已知的其他節(jié)點(diǎn)的IP地址。通過(guò)這種方式,可以實(shí)現(xiàn)比特幣地址的傳播和發(fā)現(xiàn)15地址管理比特幣節(jié)點(diǎn)使用tried和new列表管理網(wǎng)絡(luò)中節(jié)點(diǎn)的IP地址tried列表包含了64個(gè)桶(bucket),每個(gè)桶可以存儲(chǔ)這個(gè)節(jié)點(diǎn)成功建立過(guò)入連接或出連接的64個(gè)不同的地址。tried列表還保存最近一次成功連接到該節(jié)點(diǎn)的時(shí)間戳。當(dāng)插入節(jié)點(diǎn)信息時(shí)遇到桶已滿的情況,如果節(jié)點(diǎn)地址已存在于桶中,可以直接更新時(shí)間戳;否則,會(huì)從桶中隨機(jī)選出四個(gè)節(jié)點(diǎn),其中最遠(yuǎn)一次與節(jié)點(diǎn)成功建立連接的節(jié)點(diǎn)將被替換為新節(jié)點(diǎn)的信息,并被插入到new列表中。new列表包含了256個(gè)桶,每個(gè)桶可以為節(jié)點(diǎn)保存64個(gè)尚未成功發(fā)起連接的節(jié)點(diǎn)地址。節(jié)點(diǎn)會(huì)利用從種子節(jié)點(diǎn)或從addr消息中學(xué)習(xí)的信息來(lái)填充new列表。如果遇到桶已滿的情況,會(huì)遍歷桶中的所有節(jié)點(diǎn),將時(shí)間戳超過(guò)30天或多次嘗試連接不成功的節(jié)點(diǎn)移出桶。16全節(jié)點(diǎn)區(qū)塊同步一個(gè)全節(jié)點(diǎn)在連接到其他節(jié)點(diǎn)以后,需要構(gòu)建完整的區(qū)塊鏈數(shù)據(jù)節(jié)點(diǎn)A先向節(jié)點(diǎn)B發(fā)送version信息,包括以下內(nèi)容在初始握手的version消息中,由于包含了BestHeight字段,節(jié)點(diǎn)可以了解對(duì)等節(jié)點(diǎn)的區(qū)塊高度。然后節(jié)點(diǎn)間交換getblocks消息,其中包含本地區(qū)塊鏈頂端區(qū)塊的哈希值,通過(guò)判斷接收到的哈希值是否屬于頂端區(qū)塊,節(jié)點(diǎn)可以判斷哪一方擁有較多的區(qū)塊信息。接著,擁有較多區(qū)塊信息的一方會(huì)識(shí)別出其他節(jié)點(diǎn)缺少的區(qū)塊數(shù)據(jù),通過(guò)inv消息(每一個(gè)inv消息只包含500個(gè)區(qū)塊的Hash信息,限制每次同步區(qū)塊數(shù)量可以減少新節(jié)點(diǎn)同步區(qū)塊對(duì)網(wǎng)絡(luò)造成的影響)分批將對(duì)等方缺少的區(qū)塊的哈希值傳播出去。擁有較少區(qū)塊的一方會(huì)向所有已連接的節(jié)點(diǎn)發(fā)送getdata信息繼續(xù)請(qǐng)求全區(qū)塊數(shù)據(jù),并根據(jù)inv消息的哈希值找到自己缺少的區(qū)塊數(shù)據(jù)進(jìn)行讀取。17SPV節(jié)點(diǎn)通信一個(gè)全節(jié)點(diǎn)在連接到其他節(jié)點(diǎn)以后,需要構(gòu)建完整的區(qū)塊鏈數(shù)據(jù)借助Merkle樹(shù)算法,可以通過(guò)以下步驟進(jìn)行簡(jiǎn)易支付驗(yàn)證進(jìn)行區(qū)塊頭同步尋找包含該交易哈希的區(qū)塊,驗(yàn)證區(qū)塊頭是否包含在最長(zhǎng)鏈中獲取構(gòu)造Merkle樹(shù)所需的交易哈希,計(jì)算Merkle樹(shù)根的哈希若計(jì)算出的哈希與區(qū)塊中的Merkle樹(shù)根的哈希值相等,則交易存在于區(qū)塊中根據(jù)區(qū)塊頭所處的位置,判斷交易得到的確認(rèn)數(shù)。如果交易已經(jīng)經(jīng)過(guò)六次確認(rèn),則完成對(duì)交易的驗(yàn)證18加密和認(rèn)證連接增加比特幣網(wǎng)絡(luò)的隱私性和安全性的方法Tor網(wǎng)絡(luò)Tor軟件將web請(qǐng)求進(jìn)行多層加密,隨機(jī)發(fā)給一個(gè)入口節(jié)點(diǎn),入口節(jié)點(diǎn)第一次解密后發(fā)給中繼節(jié)點(diǎn)解密經(jīng)過(guò)多次中繼節(jié)點(diǎn)解密,最后到出口節(jié)點(diǎn)出口節(jié)點(diǎn)最后一次解密后發(fā)給目的地址特點(diǎn)只有入口節(jié)點(diǎn)知道發(fā)送地址,出口節(jié)點(diǎn)知道目的地址每一跳都有獨(dú)立密鑰19加密和認(rèn)證連接增加比特幣網(wǎng)絡(luò)的隱私性和安全性的方法P2P對(duì)等認(rèn)證和通信加密請(qǐng)求方發(fā)送AUTHCHALLENGE(含對(duì)等體公鑰哈希)響應(yīng)方驗(yàn)證成功后發(fā)送AUTHREPLY(含簽名)請(qǐng)求方驗(yàn)證成功后發(fā)送AUTHPROPOSE(含客戶端認(rèn)證公鑰哈希)響應(yīng)方驗(yàn)證成功后發(fā)送AUTHCHALLENGE(含客戶端公鑰哈希)請(qǐng)求方驗(yàn)證成功后發(fā)送AUTHREPLY(含簽名)響應(yīng)方驗(yàn)證成功后授予訪問(wèn)權(quán)限20交易池交易池(TransactionPool)每個(gè)節(jié)點(diǎn)會(huì)在本地維護(hù)一個(gè)記錄已被網(wǎng)絡(luò)發(fā)現(xiàn)但未被區(qū)塊鏈所記錄的交易的臨時(shí)列表孤立交易池(OrphanPool)父交易未被節(jié)點(diǎn)所知的且未被記錄在區(qū)塊鏈上的交易,節(jié)點(diǎn)會(huì)將其存入孤立交易池UTXO池(UTXOPool)包含著所有UTXO的集合,且只包含已確認(rèn)交易21比特幣中繼網(wǎng)絡(luò)嘗試最小化礦工之間傳輸塊的延遲的網(wǎng)絡(luò)FIBRE基于UDP的中繼網(wǎng)絡(luò),它通過(guò)發(fā)送額外的數(shù)據(jù)來(lái)補(bǔ)償數(shù)據(jù)包丟失,并基于Bitcoincore客戶端中的壓縮塊進(jìn)一步減少傳輸?shù)臄?shù)據(jù)量和網(wǎng)絡(luò)延遲Falcon通過(guò)傳播塊的部分來(lái)減少網(wǎng)絡(luò)延遲,使得節(jié)點(diǎn)不用一直等待直到接收到完整的塊22本章內(nèi)容4.1P2P網(wǎng)絡(luò)4.2比特幣網(wǎng)絡(luò)4.3以太坊網(wǎng)絡(luò)4.4網(wǎng)絡(luò)層安全Kademlia節(jié)點(diǎn)類型及其功能以太坊節(jié)點(diǎn)通信23以太坊網(wǎng)絡(luò)基于全分布式結(jié)構(gòu)化拓?fù)浠诜植际缴⒘斜砑夹g(shù),可以在分布式環(huán)境下進(jìn)行快速路由和數(shù)據(jù)定位協(xié)議以太坊的P2P網(wǎng)絡(luò)是一個(gè)完全加密的網(wǎng)絡(luò),提供了UDP(主網(wǎng)推薦端口為30301)和TCP(主網(wǎng)默認(rèn)端口為30303)兩種連接方式,其中UDP主要用于P2P節(jié)點(diǎn)發(fā)現(xiàn),TCP主要用于數(shù)據(jù)傳輸與交互24KademliaKad一種分布式散列表技術(shù),能將所有的信息作為哈希表的條目進(jìn)行存儲(chǔ),分散地由各個(gè)節(jié)點(diǎn)來(lái)維護(hù),從而以全網(wǎng)的方式構(gòu)成巨大的分布式散列表,實(shí)現(xiàn)快速路由和準(zhǔn)確定位所有節(jié)點(diǎn)被表示為二叉樹(shù)的葉子節(jié)點(diǎn)每一個(gè)節(jié)點(diǎn)都被分配一個(gè)隨機(jī)生成的160bit的節(jié)點(diǎn)ID作為標(biāo)識(shí)符25網(wǎng)絡(luò)拆分節(jié)點(diǎn)距離假設(shè)ID空間是3bits,那么ID為001和100的節(jié)點(diǎn)的距離為:d(1,4)=d(001,100)=001⊕100=101=5網(wǎng)絡(luò)拆分按ID經(jīng)過(guò)的節(jié)點(diǎn)拆分子樹(shù)通過(guò)遞歸路由,每次得到離目標(biāo)節(jié)點(diǎn)最近的節(jié)點(diǎn),從而不斷逼近并最終到達(dá)目標(biāo)節(jié)點(diǎn)26K桶Kbucket節(jié)點(diǎn)ID空間為nbit,每個(gè)節(jié)點(diǎn)從自己的視角拆分完子樹(shù)后,可以得到最多n個(gè)子樹(shù)每個(gè)節(jié)點(diǎn)需要記錄每個(gè)子樹(shù)的k個(gè)節(jié)點(diǎn),記錄一棵子樹(shù)中k個(gè)節(jié)點(diǎn)的列表被稱為一個(gè)K桶K桶實(shí)際上就是路由表每一個(gè)K桶i,它會(huì)存儲(chǔ)和節(jié)點(diǎn)距離在[2^i,2^(i+1)]范圍內(nèi)的k個(gè)節(jié)點(diǎn)的狀態(tài)信息每個(gè)K桶內(nèi)部信息存放的位置根據(jù)上次訪問(wèn)的時(shí)間順序排列,最早訪問(wèn)的節(jié)點(diǎn)會(huì)放在頭部,最新訪問(wèn)的節(jié)點(diǎn)會(huì)放在尾部以太坊網(wǎng)絡(luò)對(duì)節(jié)點(diǎn)ID(這里指使用Eckey算法生成的512bit的網(wǎng)絡(luò)節(jié)點(diǎn)公鑰)使用sha3算法生成一個(gè)256bit的哈希碼,每個(gè)節(jié)點(diǎn)有256個(gè)K桶,其中K桶的k值是1627節(jié)點(diǎn)類型依照分片后的功能劃分超級(jí)全節(jié)點(diǎn)(Super-fullnode)下載了全部主鏈數(shù)據(jù)和與主鏈中每個(gè)分片有關(guān)的數(shù)據(jù),旨在充分驗(yàn)證一切,可以在單個(gè)分片遭到破壞或攻擊的情況下保持系統(tǒng)的可用性頂級(jí)節(jié)點(diǎn)(Top-levelnode)只處理所有主鏈區(qū)塊,包括分片中的區(qū)塊頭和簽名,不下載分片區(qū)塊上的全部數(shù)據(jù)單分片節(jié)點(diǎn)(Single-shardnode)充當(dāng)頂級(jí)節(jié)點(diǎn)的角色,同時(shí)會(huì)完全下載和驗(yàn)證它關(guān)注的特定分片上的每一個(gè)校驗(yàn)規(guī)則輕節(jié)點(diǎn)(Lightnode)只下載和驗(yàn)證主鏈區(qū)塊的區(qū)塊頭數(shù)據(jù)28節(jié)點(diǎn)通信Kad節(jié)點(diǎn)加入獲取任意一個(gè)已加入Kad網(wǎng)絡(luò)中的節(jié)點(diǎn)的信息,將其加入對(duì)應(yīng)的K桶中,并向該節(jié)點(diǎn)針對(duì)自己的ID發(fā)起查詢請(qǐng)求對(duì)等節(jié)點(diǎn)收到請(qǐng)求后,會(huì)按照與新節(jié)點(diǎn)的距離對(duì)自己的K桶進(jìn)行更新,然后返回k個(gè)與新節(jié)點(diǎn)最近的節(jié)點(diǎn)新節(jié)點(diǎn)收到返回的節(jié)點(diǎn)信息后,將這些節(jié)點(diǎn)加入自己的K桶,并向這些節(jié)點(diǎn)發(fā)送查詢請(qǐng)求,如此往復(fù),從而建立自己的路由表節(jié)點(diǎn)退出節(jié)點(diǎn)在維護(hù)自己的K桶時(shí)會(huì)主動(dòng)把沒(méi)響應(yīng)的節(jié)點(diǎn)從自己的K桶中移除29K桶維護(hù)更新時(shí)基本遵循拋棄最近最少訪問(wèn)節(jié)點(diǎn)的原則計(jì)算節(jié)點(diǎn)本身與新節(jié)點(diǎn)的距離,根據(jù)這個(gè)距離,選擇對(duì)應(yīng)的K桶進(jìn)行操作如果新節(jié)點(diǎn)的信息在這個(gè)K桶中,則將其信息移動(dòng)到列表尾部如果新節(jié)點(diǎn)的信息不在K桶中,則分為兩種情況:在K桶未滿的情況下,直接將該信息添加到列表尾部;在K桶已滿的情況下,先在列表頭部檢查最早訪問(wèn)的節(jié)點(diǎn)是否有響應(yīng)。如果有響應(yīng),則將頭部節(jié)點(diǎn)移動(dòng)到列表尾部,并忽略新節(jié)點(diǎn)信息;如果沒(méi)有響應(yīng),則將頭部節(jié)點(diǎn)信息拋棄,并將新節(jié)點(diǎn)信息添加到列表尾部。保留在線時(shí)間長(zhǎng)的節(jié)點(diǎn)的信息是因?yàn)樵诰€時(shí)間長(zhǎng)的節(jié)點(diǎn)在下一個(gè)時(shí)間段繼續(xù)保持在線的概率可能會(huì)更大30Kad網(wǎng)絡(luò)節(jié)點(diǎn)查詢定義:已知某個(gè)節(jié)點(diǎn)的ID,查找當(dāng)前節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)距離最短的k個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的網(wǎng)絡(luò)信息(不能保證被查找的節(jié)點(diǎn)一定存在在網(wǎng)絡(luò)上)31網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)現(xiàn)四種報(bào)文命令用于探測(cè)對(duì)等節(jié)點(diǎn)是否在線的Ping命令用于響應(yīng)Ping報(bào)文的應(yīng)答命令Pong用于向?qū)Φ裙?jié)點(diǎn)請(qǐng)求查詢鄰居節(jié)點(diǎn)的FindNode命令用于回傳找到的鄰居節(jié)點(diǎn)列表的Neighbors命令六種生命周期發(fā)現(xiàn)狀態(tài)(discovered):引導(dǎo)節(jié)點(diǎn)、從持久化文件加載的節(jié)點(diǎn)、被引薦的節(jié)點(diǎn)、接收到Ping報(bào)文的節(jié)點(diǎn)在線狀態(tài)(alive):在節(jié)點(diǎn)發(fā)現(xiàn)狀態(tài)回復(fù)Pong報(bào)文后,節(jié)點(diǎn)會(huì)被置為在線狀態(tài)活躍狀態(tài)(active):節(jié)點(diǎn)處于K桶時(shí)的狀態(tài)候選狀態(tài)(evictcandidate):K桶滿時(shí),活躍狀態(tài)的節(jié)點(diǎn)被新節(jié)點(diǎn)替代后會(huì)暫時(shí)被置為此狀態(tài)不活躍狀態(tài)(noactive):如果節(jié)點(diǎn)向處于候選狀態(tài)的節(jié)點(diǎn)發(fā)送Ping報(bào)文,且該候選狀態(tài)的節(jié)點(diǎn)長(zhǎng)時(shí)間沒(méi)有響應(yīng),那么候選狀態(tài)的節(jié)點(diǎn)會(huì)被置為不活躍狀態(tài)死亡狀態(tài)(dead):節(jié)點(diǎn)在規(guī)定時(shí)間內(nèi)沒(méi)有返回Pong報(bào)文會(huì)進(jìn)入的狀態(tài),這是最終狀態(tài)32加密和認(rèn)證連接階段一:密鑰交換節(jié)點(diǎn)A生成隨機(jī)密鑰對(duì)和隨機(jī)數(shù),用自己的私鑰對(duì)節(jié)點(diǎn)B的公鑰執(zhí)行ECDH算法,將結(jié)果和隨機(jī)數(shù)異或后使用隨機(jī)生成的私鑰對(duì)其簽名,然后將隨機(jī)數(shù)、簽名、節(jié)點(diǎn)A的公鑰、版本號(hào)打包后用節(jié)點(diǎn)B的公鑰進(jìn)行加密作為請(qǐng)求認(rèn)證的握手報(bào)文進(jìn)行發(fā)送節(jié)點(diǎn)B使用自己的私鑰對(duì)收到的握手報(bào)文進(jìn)行解密,得到節(jié)點(diǎn)A生成的隨機(jī)數(shù)、簽名、公鑰和版本號(hào)。節(jié)點(diǎn)B生成隨機(jī)密鑰對(duì)和隨機(jī)數(shù),用自己的私鑰和節(jié)點(diǎn)A的公鑰執(zhí)行ECDH算法,根據(jù)得到的結(jié)果和簽名推導(dǎo)出節(jié)點(diǎn)A的隨機(jī)公鑰,利用隨機(jī)私鑰和節(jié)點(diǎn)A的隨機(jī)公鑰生成共享密鑰,然后把自己的臨時(shí)公鑰和隨機(jī)數(shù)用發(fā)起者的公鑰進(jìn)行加密并發(fā)送節(jié)點(diǎn)A對(duì)節(jié)點(diǎn)B的消息進(jìn)行解密獲得節(jié)點(diǎn)B的臨時(shí)公鑰和隨機(jī)數(shù),利用ECDH算法計(jì)算出共享密鑰33加密和認(rèn)證連接階段二:身份認(rèn)證與協(xié)議握手節(jié)點(diǎn)A用共享密鑰加密由自己使用的P2P版本號(hào)、端口號(hào)、ID等信息構(gòu)成hello報(bào)文,并將hello報(bào)文向節(jié)點(diǎn)B發(fā)送節(jié)點(diǎn)B使用共享密鑰對(duì)hello報(bào)文進(jìn)行解密,也類似地用共享密鑰對(duì)自己的hello報(bào)文進(jìn)行加密并發(fā)送節(jié)點(diǎn)A完成hello報(bào)文的校驗(yàn)。如果雙方都能接受對(duì)方的協(xié)議版本,雙方開(kāi)始建立通訊34區(qū)塊同步確定同步區(qū)塊-同步區(qū)塊頭-同步區(qū)塊體兩個(gè)節(jié)點(diǎn)進(jìn)行簡(jiǎn)單的握手連接,連接成功后節(jié)點(diǎn)B將自己交易池中的交易信息同步給節(jié)點(diǎn)A,然后各自循環(huán)監(jiān)聽(tīng)對(duì)方的消息節(jié)點(diǎn)A發(fā)送GetBlockHeadersMsg獲取同步區(qū)塊的區(qū)塊頭信息,存入數(shù)據(jù)庫(kù)節(jié)點(diǎn)A依次發(fā)送GetBlockBodiesMsg、GetReceiptsMsg、GetNodeDataMsg請(qǐng)求獲取blockbody、receipt(合約執(zhí)行后的結(jié)果)和state(儲(chǔ)存所有的賬號(hào)狀態(tài),包括余額等信息)數(shù)據(jù),并從回復(fù)的BlockBodiesMsg、ReceiptsMsg、NodeDataMsg報(bào)文中提取數(shù)據(jù)進(jìn)行存儲(chǔ)如果節(jié)點(diǎn)B挖出了新的區(qū)塊,會(huì)向節(jié)點(diǎn)A發(fā)送NewBlockMsg或者NewBlockHashesMsg進(jìn)行區(qū)塊同步(像這種接收到其他節(jié)點(diǎn)的消息,然后進(jìn)行區(qū)塊同步的方式被稱為被動(dòng)同步)如果節(jié)點(diǎn)A收到的是NewBlockMsg,節(jié)點(diǎn)A會(huì)對(duì)消息中的區(qū)塊直接進(jìn)行驗(yàn)證并存入本地;如果收的是NewBlockHashesMsg,節(jié)點(diǎn)A會(huì)通過(guò)請(qǐng)求獲取區(qū)塊頭和區(qū)塊體,然后再組織成完整的區(qū)塊存入本地35本章內(nèi)容4.1P2P網(wǎng)絡(luò)4.2比特幣網(wǎng)絡(luò)4.3以太坊網(wǎng)絡(luò)4.4網(wǎng)絡(luò)層安全分布式拒絕服務(wù)攻擊延展性攻擊女巫攻擊路由攻擊日蝕攻擊36分布式拒絕服務(wù)攻擊將多個(gè)計(jì)算機(jī)聯(lián)合起來(lái)作為攻擊平臺(tái),對(duì)同一個(gè)目標(biāo)發(fā)動(dòng)大量的攻擊請(qǐng)求,從而成倍地提高拒絕服務(wù)攻擊的能力在層疊網(wǎng)絡(luò)(應(yīng)用層)控制區(qū)塊鏈網(wǎng)絡(luò)中的大量在線節(jié)點(diǎn),使其作為一個(gè)發(fā)起大型分布式拒絕服務(wù)攻擊的放大平臺(tái)主動(dòng)攻擊是通過(guò)主動(dòng)向網(wǎng)絡(luò)中的節(jié)點(diǎn)發(fā)送大量的虛假索引信息,使得針對(duì)這些信息的后續(xù)訪問(wèn)都指向被攻擊者被動(dòng)攻擊通過(guò)修改區(qū)塊鏈客戶端或服務(wù)器軟件,被動(dòng)地等待來(lái)自其他節(jié)點(diǎn)的查詢請(qǐng)求,再通過(guò)返回虛假響應(yīng)來(lái)達(dá)到攻擊效果成本不高,但破壞性很強(qiáng)。例如:惡意礦工可以通過(guò)分布式拒絕攻擊耗盡其

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論