白 杰,李東云,吳先鋒
(傲為信息技術(江蘇)有限公司,江蘇 南京 210032)
區塊鏈提供了一種去除中心化的系統思想理念,這種思想最根本的原理就是通過公眾共識的方式,創建一個相對客觀的抗抵賴數字環境。區塊鏈以分布式數據技術為基礎,加密技術為手段,對數據副本的分布存儲和抗抵賴驗證。目前的區塊鏈平臺都是基于分布式技術、密碼學、點對點網絡及各種共識算法搭建的,技術上非常新穎,學習成本非常高,所以開發和部署一個區塊鏈網絡,無論是在研發成本,還是在時間成本上,都是需要較大投入的;同時,作為一種有可能根本性改變現有生產關系的基礎技術體系,傳統中心化的服務都有向區塊鏈和去中心化轉型的需要,迫切需要一種低成本快速創建和部署區塊鏈網絡,并對接傳統服務的方法。
本文提供了一種基于CNWW3架構[1]區塊鏈公鏈網絡快速構建區塊鏈網絡的方法。依托于公鏈的軟件架構,復用公鏈的數據網絡,共享數據存儲,通過創建子鏈的方式,快速建立自有區塊鏈網絡;并創造性地通過網關對接的方式,完成傳統中心化應用和服務進行區塊鏈化和去中心化的需求。該方式無論是在實施和部署成本上,還是時間上,都能有效地節省相應的投入,在某些情況下,也可以作為方案測試和驗證的一種方式,用于快速檢驗系統方案,測試系統能力,驗證業務需求。
子鏈作為公鏈生態中的一種重要組成部分,在繼承公鏈能力的基礎上進行相應的業務擴展和定制,能以最快速的方式實現和部署自有的區塊鏈網絡,完成業務接入區塊鏈網絡的需求。
子鏈與公鏈的關系可以參考圖1。子鏈通過一定策略選擇公鏈中的部分節點作為自身區塊鏈網絡的節點,通過合適的方式完成節點角色定義、數據區塊定義、證通設定等各項工作。并且子鏈復用繼承公鏈已有的網絡規則、存儲方法以及公鏈跨鏈和對接能力。因此,子鏈是基于公鏈創建的,同時在業務上可以獨立進行定制和擴展,是寄生于公鏈網絡的一種區塊鏈網絡。

圖1 CNWW3生態模型圖
在網絡形式上,子鏈的節點本質上也是公鏈中的節點,子鏈節點中,除了存儲子鏈區塊數據外,公鏈區塊數據也會一并存儲。子鏈的存儲空間中,邏輯上同步存儲了公鏈區塊(Public Block, PB)和子鏈區塊(Sub Block, SB)。同時,公鏈和子鏈具有相同的外部軟件接口,可以通過相同的接口直接訪問到子鏈的數據信息,因此子鏈數據無需同步至公鏈。子鏈數據存儲方式如圖2所示。

圖2 子鏈數據存儲示意圖
對應的查詢讀取方式簡要描述如下:信息查詢者通過子鏈登記合約(部署在公鏈上)的交易記錄,獲取到對應想要查詢的子鏈信息,如子鏈名稱、ID、所屬組織、運行方式、服務類型等,之后就可以通過公鏈提供的標準接口(指定ID)進行該子鏈的交易、區塊、賬號等信息的查詢。
對于其他類型的服務,如證通兌換、有償服務等,也可以通過類似的方式,查詢出子鏈提供的智能合約列表,然后通過調用合約列表完成對應的價值和信息的交換。
在技術上,子鏈通過繼承的方式,獲得了公鏈的基礎能力。這些基礎能力主要包括:
(1)數據存儲能力;
(2)網絡能力;
(3)基礎區塊鏈平臺能力(密碼和安全、交易、賬戶、共識、證通、智能合約等);
(4)基礎區塊鏈應用能力(基于平臺能力開發業務應用);
(5)跨鏈能力(支持公鏈的跨鏈合約和對接,一步跨鏈)。
可以看到,子鏈繼承的公鏈的能力,都是區塊鏈網絡中最基礎,同時也是開發和實施難度最大的部分,通過這種方式,有效地降低了區塊鏈應用開發和部署的難度。
同時,子鏈可以基于自身的業務和運營需求,做相應的靈活定義和擴展,以下是其中一些較為重要和關鍵的方面:
(1)數據區塊結構:子鏈可以有獨立于公鏈的區塊結構。
(2)共識機制:無論是POW還是POS,或者其他的共識方式,子鏈均可以靈活定義。同時,對于打包機制、周期、區塊支持的交易數等,均可以靈活定制。
(3)證通機制:子鏈可以靈活定義自主證通機制,甚至可以定義無證通子鏈。
(4)密碼和安全:在密碼學上,特別是在摘要hash等算法上,子鏈可以靈活選擇。同時,對于數據區塊的安全性,比如訪問策略等,也可以自主定義。但是,賬號以及對應的密碼(橢圓算法),從公鏈整體安全性考慮,只能使用公鏈機制。
(5)數據查詢和訪問接口:子鏈開放的數據查詢和訪問接口,在除了實現公鏈標準接口之外,也可以提供相應的重載機制,用于提供更為豐富的接入和訪問能力。
(6)交易機制:對于交易的策略、方式、費用,以及驗證、多重簽名等內容,子鏈均可以靈活自主定義。
(7)智能合約支持:選定是否支持智能合約,缺省智能合約類型、智能合約運行環境、語言等功能。
通過子鏈的方式,相應的開發者的重點聚焦在自身業務的開發和策略機制上。
子鏈的創建和接入流程是通過繼承和實現公鏈預先確定的接口/方法,然后通過標準的投票接入的方式完成的。流程示意如圖3所示。

圖3 子鏈創建流程圖
投票前需要根據實際業務需求,完成相應的開發/定制工作。當然,也可以純粹地通過公鏈已經提供的能力,直接使用已有機制完成一個實驗性子鏈的上線:
(1)定義子鏈區塊數據結構,如果沒有特殊要求,可以直接復用公鏈結構;
(2)選擇共識機制,POW、POS或者自主實現;
(3)確認子鏈證通機制,如果有證通,則確定證通數量,分配方式等;
(4)選定摘要算法,默認為SHA264,也可以進行自主實現;如果對于數據有相應的私密要求,則需要同步實現區塊數據的加解密算法以及策略;
(5)繼承或者實現子鏈區塊數據的訪問、查詢等一系列接口;
(6)確定交易的策略,如最低費用、驗證方式等內容;
(7)選定智能合約選項,默認支持智能合約,且包含幾類基本智能合約。
開發工作完成之后,可以通過測試網絡驗證子鏈的功能、機制,完成兼容性測試。
當相關開發工作已經完成并完成測試,則可以通過公鏈標準的投票合約,發起子鏈部署投票:
(1)子鏈項目方主動發起該投票,需要支付相應的公鏈證通完成該投票(該費用包含兩部分,一部分是智能合約執行費用,另外一部分是對后續投票支持的節點的交易費用的主動承擔);
(2)公鏈中的節點看到該投票之后,通過交易的方式確認是否支持該子鏈接入;
(3)投票支持的節點默認進入后續的子鏈節點候選行列;
(4)投票支持的節點的投票費用由項目方支付,反對的節點費用由自己支付;
(5)投票完成的標志為投票時間到期或已經有足夠節點支持接入;
(6)投票結束后,子鏈已支付的剩余證通退回項目方。無論成功失敗,已花費的證通不會退回。
當投票成功后,如果子鏈為有證通子鏈,則子鏈需要先進行證通抵押,確定子鏈證通和公鏈證通的初始兌換比率,以及確保子鏈后續跨鏈及其他應用場景下的證通流轉和兌換。該部分內容將另行詳述,本文不作介紹。
證通抵押完成后,子鏈項目方將確認部署的節點列表(投票過程中表示支持的節點列表),通過執行合約的方式完成確認。
上述步驟完成后,子鏈成功對接公鏈,完成上鏈,選定的節點將作為后續的子鏈節點提供相應的服務。
想要創建一個基于密碼學、分布式計算和存儲網絡體系的區塊鏈網絡,在技術門檻上是比較高的。所以對于大部分的業務需求方而言,如果從頭到尾投入相關資源開發一整套區塊鏈網絡一方面是代價昂貴,另外一方面在時間上也無法等待。因此,通過子鏈的方式,可以快速創建孵化區塊鏈網絡。同時,基于自身業務需求,進行相應的定制和擴展,用于快速驗證、快速迭代,是一種可行的方案。
當前的互聯網體系中,大部分的服務都是由各種各樣的中心化系統所提供的。從很長的一段時間來看,這些系統不會,也不應該,馬上被去中心化的區塊鏈網絡進行替代,但是這些系統本身也有向區塊鏈網絡轉型的需求,需要有一種合適的機制,在不顛覆現有中心化系統的同時,能把這些業務和服務接入區塊鏈網絡,也就是:如何將現有的中心化系統和新興的區塊鏈網絡便捷地打通。
通過子鏈的機制,可以有一種簡便快速的方式完成這項工作。
對于中心化系統而言,往往只會有一個統一的外部出入口,無論是接收外部請求,還是響應,都只有一個通道。所以在這種情況下,可以使用如下方式進行該中心化系統上鏈的工作:
(1)按照子鏈的創建流程,完成子鏈的上鏈工作;
(2)中心化系統需要提供至少一個節點I參與該子鏈,該節點作為公鏈和子鏈的新的節點;
(3)節點I一方面作為公鏈和子鏈的節點,完成子鏈和公鏈相應的工作,同時該節點同步部署傳統的軟件服務,直接對接舊有的中心化系統,完成如下工作:
①節點I在同步完成子鏈的數據區塊后,會檢查相關交易/合約是否需要觸發中心化系統的外部請求,如果需要,則會依據子鏈交易/合約的要求向中心化系統發送請求;
②節點I在收到中心化系統的響應后,會同步檢查子鏈交易/合約,觸發相應的交易/合約的執行,或者狀態的改變;
③中心化系統向節點I發送相應的請求,節點I轉化請求為子鏈的交易/合約執行;
④節點I將子鏈的交易/合約執行的結果反饋回中心化系統。
相應示意如圖4所示。

圖4 子鏈對接中心化系統示意圖
本文針對現有的區塊鏈網絡開發難、部署難的問題,有針對性地提供了一種基于CNWW3公鏈快速創建區塊鏈——子鏈的方式,通過繼承公鏈的基礎能力,復用公鏈網絡架構,使得開發者和服務提供商能快速搭建自有區塊鏈網絡,驗證業務的有效性和可行性;同時,也提供了一種基于子鏈的有效可行方式,將傳統的中心化網絡和服務快速對接進入區塊鏈網絡,完成轉化和升級。