區(qū)塊鏈P2P網(wǎng)絡(luò)協(xié)議的類(lèi)型及演進(jìn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
區(qū)塊鏈技術(shù)的網(wǎng)絡(luò)層通信協(xié)議為點(diǎn)對(duì)點(diǎn)的結(jié)構(gòu),憑借其去中心化及點(diǎn)對(duì)點(diǎn)的獨(dú)特性,可擺脫中心服務(wù)器對(duì)網(wǎng)絡(luò)層的限制與束縛,現(xiàn)階段的主流區(qū)塊鏈技術(shù)包括比特幣,以太坊及超級(jí)賬本三種類(lèi)型,本文著重分析這三種類(lèi)型對(duì)區(qū)塊鏈技術(shù)應(yīng)用的優(yōu)缺點(diǎn)進(jìn)行分析,并為區(qū)塊鏈PP網(wǎng)絡(luò)協(xié)議的進(jìn)一步完善提供參考。
一,區(qū)塊鏈P2P網(wǎng)絡(luò)類(lèi)型
二,P2P網(wǎng)絡(luò)協(xié)議演進(jìn)
1、基于比特幣
比特幣采用了基于互聯(lián)網(wǎng)的點(diǎn)對(duì)點(diǎn)(P2P:peer-to-peer)分布式網(wǎng)絡(luò)架構(gòu)。比特幣網(wǎng)絡(luò)可以認(rèn)為是按照比特幣P2P協(xié)議運(yùn)行的一系列節(jié)點(diǎn)的集合。
比特幣網(wǎng)絡(luò)協(xié)議允許完整節(jié)點(diǎn)為了區(qū)塊和交易的交換協(xié)作維護(hù)P2P網(wǎng)絡(luò)。在把區(qū)塊和交易轉(zhuǎn)發(fā)到其他節(jié)點(diǎn)之前,完整節(jié)點(diǎn)下載和驗(yàn)證每個(gè)區(qū)塊和交易。文檔節(jié)點(diǎn)是存儲(chǔ)了整個(gè)區(qū)塊鏈并且能夠?yàn)槠渌?jié)點(diǎn)提供歷史區(qū)塊的完整節(jié)點(diǎn)。修剪節(jié)點(diǎn)是不存儲(chǔ)整個(gè)區(qū)塊鏈的完整節(jié)點(diǎn)。許多SPV客戶端也使用比特幣網(wǎng)絡(luò)協(xié)議連接到完整節(jié)點(diǎn)。共識(shí)規(guī)則不包含網(wǎng)絡(luò),所以比特幣程序可能使用替代的網(wǎng)絡(luò)和協(xié)議,例如一些礦工使用的高速區(qū)塊轉(zhuǎn)發(fā)網(wǎng)絡(luò)和一些提供SPV級(jí)別安全的錢(qián)包使用的提供交易信息的服務(wù)器。
2、基于以太坊
以太坊底層分布式網(wǎng)絡(luò)即P2P網(wǎng)絡(luò),使用了經(jīng)典的Kademlia網(wǎng)絡(luò),簡(jiǎn)稱(chēng)kad。Kad的路由表是通過(guò)稱(chēng)為K桶的數(shù)據(jù)構(gòu)造而成,K桶記錄了節(jié)點(diǎn)NodeId,distance,endpoint,ip等信息。以太坊K桶按照與target節(jié)點(diǎn)距離進(jìn)行排序,共256個(gè)K桶,每個(gè)K桶包含16個(gè)節(jié)點(diǎn)。
以太坊的P2P網(wǎng)絡(luò),是以比特幣的P2P網(wǎng)絡(luò)解雇為基礎(chǔ)的。以太網(wǎng)建立了分布式信息通訊平臺(tái)及存儲(chǔ)平臺(tái),基于網(wǎng)絡(luò)節(jié)點(diǎn),通過(guò)Kad 協(xié)議實(shí)現(xiàn)對(duì)于其他節(jié)點(diǎn)地址的快速查找及精準(zhǔn)定位。
3、基于超級(jí)賬本
Peers是整個(gè)網(wǎng)絡(luò)的基礎(chǔ),因?yàn)樗琴~本和智能合約的載體。通過(guò)智能合約,賬本以不可篡改的方式記錄了交易的全過(guò)程。在區(qū)塊鏈中,智能合約和賬本被用來(lái)封裝整個(gè)網(wǎng)絡(luò)中的共享處理工程和共享信息。
一個(gè)區(qū)塊鏈網(wǎng)絡(luò)由peer節(jié)點(diǎn)組成,每一個(gè)peer節(jié)點(diǎn)持有一個(gè)或多個(gè)賬本,以及一個(gè)或多個(gè)智能合約。上圖中網(wǎng)絡(luò)N由三個(gè)peer組成P1、P2和P3。每一個(gè)Peer都持有了一個(gè)賬本實(shí)例L1;每個(gè)peer都通過(guò)鏈碼(智能合約)S1去訪問(wèn)各自的賬本副本L1。通過(guò)暴露的一系列接口,可以允許管理員和運(yùn)用程序來(lái)創(chuàng)建、開(kāi)啟、停止、重新配置甚至刪除peer。
正是由于peer持有了賬本和鏈碼,管理員和運(yùn)用程序必須通過(guò)peer才能訪問(wèn)這些資源。正因如此,peer被稱(chēng)作超級(jí)賬本區(qū)塊鏈網(wǎng)絡(luò)中最基礎(chǔ)的模塊。
在比特幣及以太坊的高速發(fā)展的情況下,區(qū)塊鏈技術(shù)也得以快速拓展,超級(jí)賬本可提供企業(yè)級(jí)區(qū)塊鏈服務(wù),在該P(yáng)2P網(wǎng)絡(luò)結(jié)構(gòu)中,網(wǎng)絡(luò)節(jié)點(diǎn)不同,需要經(jīng)過(guò)高級(jí)節(jié)點(diǎn)處理交易。超級(jí)賬本并為實(shí)現(xiàn)去中心化,但節(jié)點(diǎn)的劃分可提升網(wǎng)絡(luò)效率。
三、分布式系統(tǒng)中的共識(shí)問(wèn)題
分布式系統(tǒng)中的共識(shí)問(wèn)題一直是計(jì)算機(jī)科學(xué)領(lǐng)域的一個(gè)重要問(wèn)題。目前人們主要有兩類(lèi)共識(shí)協(xié)議來(lái)解決該問(wèn)題:一類(lèi)是經(jīng)典共識(shí)協(xié)議,另一類(lèi)是中本聰共識(shí)協(xié)議。
1、經(jīng)典共識(shí)協(xié)議
由圖靈獎(jiǎng)得主蘭伯特提出,具有強(qiáng)一致性、高效的特點(diǎn),然而它也存在一 些缺點(diǎn),首先是通信成本,在經(jīng)典共識(shí)協(xié)議下,節(jié)點(diǎn)的個(gè)數(shù)不能超過(guò) 1000 個(gè),因?yàn)橄?統(tǒng)的通信成本會(huì)隨著節(jié)點(diǎn)數(shù)量的增加呈二次指數(shù)形式增長(zhǎng);其次是要求網(wǎng)絡(luò)中所有的節(jié) 點(diǎn)都是可信的,因此節(jié)點(diǎn)無(wú)法自由進(jìn)出。
經(jīng)典共識(shí)協(xié)議工作原理:
2、本聰共識(shí)協(xié)議
這類(lèi)協(xié)議無(wú)法達(dá)到強(qiáng)一致性,但為系統(tǒng)提供了一個(gè)安全的概率保證——在實(shí)際運(yùn)行中,只要達(dá)到一定的參數(shù) 標(biāo)準(zhǔn),共識(shí)就是不可逆的。采用該協(xié)議的系統(tǒng)具有開(kāi)放性,無(wú)權(quán)限的特性,任何節(jié)點(diǎn)都可以隨時(shí)加入網(wǎng)絡(luò),然而也存在成本高昂、浪費(fèi)資源且性能有限的缺陷。
3、Avalanche協(xié)議
Avalanche協(xié)議由四種機(jī)制組成,它們相互建立,共同構(gòu)成更大共識(shí)工具的整個(gè)結(jié)構(gòu)。提議中描述的四種機(jī)制是Slush, Snowflake, Snowball,和Avalanche。
(1) Slush
該算法的靈感來(lái)源于Gossip(流言)協(xié)議,或者也被稱(chēng)為Epidemic(傳染?。﹨f(xié)議,主要用于數(shù)據(jù)同步。
算法流程參見(jiàn)下圖:
(2) Snowflake
Slush算法是無(wú)狀態(tài)記憶的(memoryless),節(jié)點(diǎn)不保存和其他節(jié)點(diǎn)的交互歷史。
Snowflake算法在該基礎(chǔ)上,為每個(gè)節(jié)點(diǎn)增加了一個(gè)查詢計(jì)數(shù)器,用于累積該節(jié)點(diǎn)對(duì)當(dāng)前顏色的信任度。如果連續(xù)β輪都選擇該顏色,則接受該顏色。算法流程參見(jiàn)下
具體修改的部分:
每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)計(jì)數(shù)器
每次顏色發(fā)生變化時(shí),將該計(jì)數(shù)器清零
每次查詢成功(收到αk個(gè)回復(fù)),并且顏色不變時(shí),計(jì)數(shù)器加一
(3) Snowball
Snowflake記憶的狀態(tài)是短暫的,每次顏色變化都會(huì)將計(jì)數(shù)器清零。為了使得系統(tǒng)更加難以被攻擊,Snowball增加了一個(gè)置信度計(jì)數(shù)器,用于記錄每種顏色被選擇的次數(shù)。如果某種顏色被選次數(shù)超過(guò)另一種,則切換到該顏色,并等待查詢計(jì)數(shù)器超過(guò)閾值。算法流程參見(jiàn)下圖:
具體修改的部分:
· 每次查詢成功,增加所選顏色的置信度計(jì)數(shù)器
· 如果某種顏色的置信度變得比另一種低,發(fā)生顏色切換
(4) Avalanche
Avalanche在Snowball的基礎(chǔ)上引入了DAG。這會(huì)帶來(lái)兩點(diǎn)好處:
· 更高效:對(duì)DAG某個(gè)頂點(diǎn)的投票隱含了對(duì)“從創(chuàng)世頂點(diǎn)到該頂點(diǎn)”這整條鏈的認(rèn)可
· 更安全:DAG把各個(gè)交易的命運(yùn)交織在了一起,因此共識(shí)更加難以被逆轉(zhuǎn)(需要更多誠(chéng)實(shí)節(jié)點(diǎn)的認(rèn)可)
算法主流程參見(jiàn)下圖:
“受到八卦算法的啟發(fā),這個(gè)新的家庭通過(guò)一種故意的亞穩(wěn)態(tài)機(jī)制獲得了它的安全性?!本唧w來(lái)說(shuō),系統(tǒng)通過(guò)反復(fù)隨機(jī)采樣網(wǎng)絡(luò),并引導(dǎo)正確的節(jié)點(diǎn)走向相同的結(jié)果來(lái)運(yùn)行。分析表明,亞穩(wěn)態(tài)是一種強(qiáng)大的技術(shù),盡管不是通用的技術(shù):它可以迅速將一個(gè)大的網(wǎng)絡(luò)移動(dòng)到不可逆轉(zhuǎn)的狀態(tài),盡管它并不總是能保證做到這一點(diǎn)。八卦算法是點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中出現(xiàn)的一種通信類(lèi)型,它通常涉及對(duì)連接節(jié)點(diǎn)進(jìn)行隨機(jī)采樣,然后接收信息。Avalanche協(xié)議在很大程度上借鑒了八卦協(xié)議的原理,它還利用網(wǎng)絡(luò)節(jié)點(diǎn)的子采樣來(lái)實(shí)現(xiàn)協(xié)商共識(shí)。
在Avalanche 協(xié)議下,節(jié)點(diǎn)之間達(dá)成共識(shí) 的步驟如下:
(1)所有的節(jié)點(diǎn)在初始時(shí)都是未著色的狀態(tài);
(2)當(dāng)節(jié)點(diǎn)從客戶端接受到交易信息時(shí),未著色的節(jié)點(diǎn) A 將自己的顏色更新為交易所攜帶的顏色,并向其他節(jié)點(diǎn)發(fā)起詢問(wèn)。
(3)如果是未著色節(jié)點(diǎn) B 收到詢問(wèn)請(qǐng)求,那么該節(jié)點(diǎn)就會(huì)染成相同顏色,并對(duì)節(jié)點(diǎn)A 進(jìn)行相同顏色的回復(fù),同時(shí)向另外的其他節(jié)點(diǎn)發(fā)起詢問(wèn);如果是已經(jīng)著色的節(jié)點(diǎn)C 收到 詢問(wèn)請(qǐng)求,那么節(jié)點(diǎn)就對(duì)節(jié)點(diǎn) A 發(fā)出自己顏色的回復(fù);如果節(jié)點(diǎn) A 沒(méi)有在限定時(shí)間內(nèi) 收到 k個(gè)響應(yīng),那么節(jié)點(diǎn) A 就會(huì)從剩余節(jié)點(diǎn)中繼續(xù)選擇一些節(jié)點(diǎn)發(fā)出并發(fā)出請(qǐng)求,直 到收集到 k 個(gè)響應(yīng);
(4)節(jié)點(diǎn) A 收集到 K 個(gè)響應(yīng)后,就會(huì)檢查是否存在相同顏色的樣本數(shù)值/總樣本數(shù)(x), 使αk,這里α是協(xié)議的參數(shù),并且α》0.5;如果 x《αk,那么節(jié)點(diǎn)將會(huì)改變顏色;否 則不改變顏色;
(5)節(jié)點(diǎn)重新返回到查詢步驟,發(fā)起下一輪查詢,像這樣一共查詢 m 輪,在 m 輪結(jié) 束后節(jié)點(diǎn)可決定自己的顏色。
這個(gè)特性被稱(chēng)為亞穩(wěn)性; Avalanche協(xié)議被設(shè)計(jì)成最終降落在一個(gè)選擇上。協(xié)商共識(shí)機(jī)制的全部前提是確保網(wǎng)絡(luò)上各節(jié)點(diǎn)之間達(dá)成一致,并避免可能出現(xiàn)的連接。Avalanche的亞穩(wěn)態(tài)協(xié)議被設(shè)計(jì)成將網(wǎng)絡(luò)引向場(chǎng)景中的一種選擇。
回到顏色選擇示例,隨著每一輪投票,網(wǎng)絡(luò)將開(kāi)始看到節(jié)點(diǎn)傾向于哪個(gè)顏色的模式。隨著每一輪投票的進(jìn)行,網(wǎng)絡(luò)得出這一結(jié)論的速度都比前一輪快。在某一閾值下,網(wǎng)絡(luò)達(dá)到其最終狀態(tài),所有節(jié)點(diǎn)都決定了一種顏色。
利與弊
Avalanche的特點(diǎn)使它能夠支持難以置信的高速。rocket Team聲稱(chēng)只需兩秒鐘就能達(dá)到最終狀態(tài)開(kāi)發(fā)人員還認(rèn)為,Avalanche協(xié)議具有非常高的吞吐量,每秒可以處理1,000到10,000個(gè)事務(wù)。另一個(gè)重要的特性是它的健壯性。Avalanche協(xié)議工作時(shí)不需要知道或同意參與網(wǎng)絡(luò)的節(jié)點(diǎn)的細(xì)節(jié)。網(wǎng)絡(luò)不需要就參與者的身份達(dá)成一致,就能達(dá)成不可否認(rèn)的共識(shí)。Avalanche協(xié)議也是有效的能源。因此,協(xié)商共識(shí)意見(jiàn)是通過(guò)專(zhuān)門(mén)的八卦協(xié)議達(dá)成的,從而消除了在工作證明和其他類(lèi)似機(jī)制中使用同樣大量能源的需要。
此外,由于所有節(jié)點(diǎn)都是相似的,并且具有相同的能力,所以沒(méi)有特殊類(lèi)別的節(jié)點(diǎn),比如比特幣生態(tài)系統(tǒng)中的礦工。這減少了節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)的影響。它還增加了網(wǎng)絡(luò)拜占庭式的容錯(cuò)能力。簡(jiǎn)單地說(shuō),即使網(wǎng)絡(luò)上50%的節(jié)點(diǎn)是不誠(chéng)實(shí)或惡意的,網(wǎng)絡(luò)仍然是安全的。另一個(gè)重要的特性(它可以被看作是優(yōu)點(diǎn)也可以看作缺點(diǎn))是,對(duì)于沖突的事務(wù)沒(méi)有活躍性保證。這意味著,如果一個(gè)不誠(chéng)實(shí)的節(jié)點(diǎn)試圖實(shí)現(xiàn)一個(gè)雙重支出,Avalanche協(xié)議將無(wú)法就這兩個(gè)操作達(dá)成一致。
與經(jīng)典協(xié)議和中本協(xié)議相反,Avalanche協(xié)議不能保證在這種情況下有選擇。缺乏共識(shí)將導(dǎo)致賠錢(qián)。懲罰是任何加密貨幣系統(tǒng)的基本特征,而Avalanche協(xié)議以一種有趣的方式解決了這一問(wèn)題。缺乏活性保證就會(huì)對(duì)任何有意的惡意活動(dòng)產(chǎn)生消極的作用。雖然加密貨幣世界已經(jīng)對(duì)Avalanche協(xié)議表示支持,但是這個(gè)機(jī)制受到了首席開(kāi)發(fā)人員Vlad Zamfir的批評(píng),Casper表達(dá)了他的想法,即協(xié)議并不像它聲稱(chēng)的那樣好或安全。他說(shuō):“它不是異步安全的,而是概率性的?!?/p>