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