網(wǎng)絡層
網(wǎng)絡層是區(qū)塊鏈平臺信息傳輸?shù)幕A,通過p2p的組網(wǎng)方式、特定的信息傳播協(xié)議和數(shù)據(jù)驗證機制,使得區(qū)塊鏈網(wǎng)絡中的每一個節(jié)點都可以平等地參與共識與記賬。下面詳細介紹區(qū)塊鏈平臺網(wǎng)絡層中的P2P網(wǎng)絡架構、信息傳輸機制和數(shù)據(jù)驗證機制。
P2P網(wǎng)絡架構
區(qū)塊鏈網(wǎng)絡架構一般采用的是基于互聯(lián)網(wǎng)的P2P架構,在P2P網(wǎng)絡中,每臺計算機每個節(jié)點都是對等的,它們共同為全網(wǎng)提供服務。而且,沒有任何中心化的服務端,每臺主機都可以作為服務端相應請求,也可以作為客戶端使用其他節(jié)點所提供的服務。P2P通信不需要從其他實體或CA獲取地址驗證,因此有效地消除了篡改的可能性和第三方欺騙。所以P2P網(wǎng)絡是去中心化和開放的,這也正符合區(qū)塊鏈技術的概念。
在區(qū)塊鏈網(wǎng)絡中,所有的節(jié)點地位均等且以扁平式拓撲結構相互連通和交互,每個節(jié)點都需要承擔網(wǎng)絡路由、驗證區(qū)塊數(shù)據(jù)、傳播區(qū)塊數(shù)據(jù)等功能。在比特幣網(wǎng)絡中,存在著兩類節(jié)點,一類是全節(jié)點,它保存著區(qū)塊鏈上所有的完整數(shù)據(jù)信息,并需要實時地參與區(qū)塊鏈數(shù)據(jù)的校驗和記錄來更新區(qū)塊鏈主鏈。另一類是輕節(jié)點,它只保存著區(qū)塊鏈中的部分信息,通過簡易支付驗證方式向其他相鄰的節(jié)點請求數(shù)據(jù)以便完成數(shù)據(jù)的驗證。
傳輸機制
在新的區(qū)塊鏈數(shù)據(jù)生成后,生成該數(shù)據(jù)的節(jié)點會將其廣播到全網(wǎng)的其他節(jié)點以供驗證。目前的區(qū)塊鏈底層平臺一般都會根據(jù)自身的實際應用需求,在比特幣傳輸機制的基礎上重新設計或者改進出新的傳輸機制,如以太坊區(qū)塊鏈集成鏈所謂的“幽靈協(xié)議”,以解決因區(qū)塊數(shù)據(jù)確認速度快而導致的高區(qū)塊作廢率和隨之而來的安全性風險。這里我們以中本聰設計的比特幣系統(tǒng)為例,列出其傳輸協(xié)議的步驟如下:
1. 比特幣交易節(jié)點將新生成的交易數(shù)據(jù)向全網(wǎng)所有節(jié)點進行廣播;
2. 每個節(jié)點都將收集到的交易數(shù)據(jù)存儲到一個區(qū)塊中;
3. 每個節(jié)點基于自身算力在區(qū)塊中找到一個具有足夠難度的工作量證明;
4. 當節(jié)點找到區(qū)塊的工作量證明后,就向全網(wǎng)所有節(jié)點廣播此區(qū)塊;
5. 只有包含在區(qū)塊中的所有交易都有效且之前未存在過,其他節(jié)點才認同該區(qū)塊的有效性;
6. 其他節(jié)點接收該數(shù)據(jù)區(qū)塊,并在該區(qū)塊的末尾制造新的區(qū)塊以延長鏈,而將被接收的區(qū)塊的隨機哈希值視為新區(qū)塊的前序區(qū)塊哈希值。
驗證機制
在區(qū)塊鏈網(wǎng)絡中,所有的節(jié)點都會時刻監(jiān)聽網(wǎng)絡中廣播的交易數(shù)據(jù)和新產(chǎn)生的區(qū)塊。在接收到相鄰節(jié)點發(fā)來的數(shù)據(jù)后,會首先驗證該數(shù)據(jù)的有效性,若數(shù)據(jù)有效則按接收順序為新數(shù)據(jù)建立存儲池來暫存這些數(shù)據(jù),并且繼續(xù)向臨近節(jié)點轉發(fā);若數(shù)據(jù)無效則立即廢棄該數(shù)據(jù),從而保證無效數(shù)據(jù)不會在區(qū)塊鏈網(wǎng)絡中繼續(xù)傳播。驗證有效性的方法是根據(jù)預先定義好的標準,從數(shù)據(jù)結構、語法規(guī)范性、輸入輸出和數(shù)字簽名等各方面進行校驗。對于新區(qū)塊的校驗同理,某節(jié)點產(chǎn)生出新區(qū)塊后,其他節(jié)點按照預定義的標準對新區(qū)塊的工作量證明、時間戳等方面進行校驗,若確認有效,則將該區(qū)塊鏈連接到住區(qū)塊鏈上,并開始爭取下一個區(qū)塊的記賬權。