BigBang Core 打造海量可信資料的商業生態

買賣虛擬貨幣
區塊鏈技術作為去中心化的價值傳輸系統,由匿名人士中本聰首次提出並應用到比特幣當中。在比特幣系統中,為完成相對複雜的交易型別,中本聰創造性的提出了指令碼機制。但當開發者想要透過比特幣指令碼實現更多的功能時,往往就會受到諸多的限制。為此,Vitalik Buterin 提出的Ethereum 透過引入圖靈完備的智慧合約和 EVM 使得基於區塊鏈技術的應用開發成為可能,並被業界稱讚為繼比特幣之後的 “區塊鏈 2.0”。但無論是比特幣還是以太坊,都面臨著由於使用者與交易增長過快所帶來的拓展性及交易延遲的問題。究其根源,在於當前區塊鏈系統中單鏈的結構,使得諸多優秀專案在這些問題面前都缺乏足夠的靈活性,區塊鏈在物聯網這一天生適用的領域的發展也舉步維艱。為解決這些問題,並更好的將區塊鏈與物聯網技術相結合,經過不斷地探索論證,我們提出了 BigBang 樹型區塊鏈。 BigBang 呈 “主鏈 + 多應用支鏈” 的樹狀結構,透過支鏈的無限拓展實現單鏈結構無法解決的交易拓展性和高併發性問題。同時 BigBang 作為物聯網的基礎設施,將建立多實體的裝置互信及異構環境下的資料互通。為未來物聯網更復雜的商業模式打造穩定可靠的技術基礎。本文重點將針對 BigBang 的技術架構及關鍵技術原理進行詳細介紹。系統描述1. 基礎介紹BigBang 是構建於 P2P 網路的區塊系統,同目前流行的 P2P 數字貨幣系統類似,以去中心化方式維護透明賬本,實現使用者數字資產自主安全管理和高效流動。BigBang 系統針對 IoT(Internet of Things,物聯網)資料業務需求設計,利用區塊技術為 IoT 資料業務提供去中心化安全管理平臺,實現 IoT 系統所需高併發低延遲等效能要求。

BigBang 透過安全共識組織使用者交易(transaction),按時間順序形成資料區塊。同 Bitcoin 等單鏈系統不同,BigBang 採用樹結構來儲存排列區塊,可以根據業務型別和資料負載進行分叉形成多個分支。分支之間區塊相互獨立,新增區塊只與自身分支資料相關。在多重分支的情況下,根據業務資料流量,可以分佈到多個分支區塊中,由此產生的可擴充套件性和高併發性正是 IoT 系統所需的基本效能。BigBang 的多重分支結構由唯一安全主鏈和眾多應用支鏈構成,安全主鏈用於支撐全網共識機制,應用支鏈用於實際業務。在應用支鏈可以提供最低 2 秒的低延遲交易確認,使用者可以指定交易緊迫性,支付相應交易手續費,以此實現低延遲業務。

2. 共識機制簡述

眾所周知,在“不可能三角”的各種研討中,去中心的結果往往意味著低效的 TPS,而物聯網的海量資料就成為共識構建中一塊無法搬走的巨石,那麼在區塊鏈+物聯網 IoT 的領域裡,究竟什麼才會是適合的共識呢,讓我們先從共識演算法的演進說起。

Proof of X 是目前公鏈領域內應用較多的一類共識。其中 PoW 最早被應用,但存在資源浪費、算力集中、缺少終局性以及效能低下等。

PoS 是目前有力競爭者,可避免資源浪費、弱化了中心礦池需求、降低51%攻擊可能性,但也同時存在確定記賬節點數量困難、存在非預期的中心化問題、Nothing at Stake 等問題。

為了解決以上弊端,當前也誕生了許多混合類共識,希望既融合兩者的優勢,又能規避某些弊端,包括 PoW+PoS、DPoS+BFT 等。所以混合共識機制可能會是公鏈後期發展的一個出路。

3. 網路描述

BigBang 網路由執行 BigBang 軟體的節點構成 P2P 網路。BigBang 的整體網路架構可分為三層:節點網路層、終端服務層、IoT 終端層。

節點網路層由執行 BigBang 核心節點程式的節點構成,節點之間同步校驗區塊和交易資料,並進行共識組織區塊資料。

終端服務網形成分散式終端後臺,為 IoT(Internet of Things) 終端提供接入服務。

為了支撐龐大的 IoT(Internet of Things) 業務,節點網路與終端服務網共同組成 BigBang 服務平臺。

IoT 終端層包括智慧感測器、控制器和移動終端,內嵌輕客戶端程式,本地儲存私鑰完成交易構建和校驗。

4. 系統軟體組成

為更好支援 IoT 複雜環境下的多種應用場景,同時保證區塊鏈服務的可靠執行和普通使用者的使用需求。BigBang 系統軟體的設計總體包括五部分:核心錢包程式、輕錢包後臺服務系統、移動端輕錢包程式、嵌入式系統輕錢包 SDK 和線上區塊瀏覽器。

5. 系統特點

· 樹狀結構
與 Bitcoin 等傳統單鏈系統不同,BigBang 使用樹狀結構來組織儲存區塊資料。

· 高拓展
面對物聯網海量的資料交易,透過依託於無限拓展的樹狀結構來實現整個系統的橫向拓展。

· 高併發
應用支鏈每秒的交易筆數(TPS, Transaction Per Second)能夠達到5200筆,並且一筆交易最快 2S 即可完成鏈上確認,能夠滿足物聯網下資料交易頻繁且低延遲的場景特點。

· 資料快速接入
透過良好的系統設計,為流式資料和持久化資料均提供穩定介面和後端服務使得資料快速上鍊。

· 資料公證
BigBang 鏈上儲存資料標識及流轉記錄,資料標識一旦上鍊就不可更改,可為需求方和提供方提供資料的一致性證明和公證資訊。

· 物聯網價值流轉平臺
作為物聯網技術底層的基礎設施,為物聯網上的資料傳輸與價值流轉提供穩定可靠的技術平臺。

樹狀區塊結構

在如今常見的區塊鏈專案中,所有交易資訊均儲存在單鏈區塊當中,使得整個系統面對不斷增長的交易規模時缺乏足夠的靈活性。在 BigBang 中,主鏈資料與應用資料進行了分割處理,以“安全主鏈 + 多重應用支鏈”的樹狀區塊結構來儲存系統區塊資料。

安全主鏈主要儲存交易與安全共識相關資料;應用方則透過從任意鏈條進行分叉,生成支鏈(分叉鏈),專門組織和儲存與應用業務相關的資料。並且隨著交易規模的擴大,支鏈可以繼續建立子級支鏈。透過這種類似垂直分割的方式,杜絕了傳統單鏈結構中所有交易填充在主鏈區塊的弊端,實現了整體系統的橫向拓展。

BigBang 上的支鏈數量越多,系統可承載的 TPS(Transaction PerSecond)也就更高,在應用支鏈足夠多的情況下,BigBang 整體可實現千萬甚至億級的 TPS 承載。

1. 分支標識

BigBang 系統的區塊按時間順序連線在一起,以多分支形成樹狀結構。在BigBang 中,安全主鏈和應用支鏈統稱為“分支”。每一條分支均會有一個獨特發的分支標識來進行標記。 安全主鏈以創世區塊 hash 作為支鏈ID,應用支鏈以分叉點後第一個區塊的 hash 作為支鏈 ID。

在分叉之前,父鏈和支鏈擁有完全一致的鏈結構和交易;分叉點之後則相互獨立,互不干擾。出現在分叉點前的同一筆 Token 在分叉點之後可以在父鏈及支鏈中建立不同的交易傳送到不同的地址;分叉點之前的區塊資料在父鏈及支鏈中也可以通用。 使用者在建立交易的時候需要指定一個錨定區塊,標定在此區塊之後的所有 支鏈有效。在圖 2.1 中,如果錨定區塊設定為 Block n-1, 建立的交易會被包含到兩個支鏈中;如果設定為Block n,則該交易只在父鏈有效,支鏈中可以建立新交易將 Token 傳送其它地址。

2. 安全主鏈

安全主鏈為 BigBang 樹狀結構中的主鏈,所有的支鏈均為其“後代”,其被用於支撐全區塊系統的安全和共識,在 P2P 網路中主鏈的同步廣播訊息轉發優先順序高於應用支鏈。安全主鏈除了記錄主鏈 Token 轉移,還保留 EDPoS 節點協商關鍵過程資料。安全主鏈的區塊之間不能插入子塊,只能按照既定出塊間隔增長。由於會有相當部分容量記錄共識協商過程資料(以 23 個 EDPoS 節點為例,協商資料會佔據每區塊 115KB 左右的容量),故安全主鏈的交易容量低於應用支鏈。 安全主鏈以區塊系統創世區塊為起點,透過 EDPoS+CPoW 共識順序產生區塊。安全主鏈被用於支撐全區塊系統的安全和共識,所有應用分支節點都需要同步和校驗主鏈區塊頭資訊。新節點接入網路後,首先完成主鏈同步,才開始進行對應應用分支同步。

3. 應用支鏈

在 BigBang 中,應用方透過在父鏈傳送一種特殊型別的交易 ------ 分叉交易,用於建立應用支鏈。應用支鏈的區塊產生間隔需要和安全主鏈一致,其它主要引數可以在建立分支初始化過程中由建立者配置,可配置引數包括 Token 總量和分佈、出塊獎勵和增發方式等。

新建立支鏈的第一個區塊(分支起始塊)被儲存在分叉交易中。支鏈的Token 分佈可由建立者定義,有三種方式:

1. 建立獨立分支,分支起始塊重新設定 Token 總數和分配方式;
2. 完整繼承分叉點 Token 分佈;
3. 繼承分叉點 Token 分佈,並在此基礎上進行增發,增發部分的分佈方式在分支起始塊中定義。

自分叉點之後,支鏈 Token 和父鏈是完全隔離的。

使用者金鑰與地址

BigBang 的地址有兩類:公鑰地址以及模板地址,分別對應特定公鑰和模板。地址長度固定為 33 位元組,在互動性介面中,採用編碼後的地址作為輸入 / 輸出引數。

其中 BASE32Encode 採用 Crockford 方案字符集,但不進行該方案中symbols check 過程。

1. 金鑰和公鑰地址

BigBang 系統採用 curve25519 作為基本安全演算法,使用者私鑰和公鑰均為 32 位元組,私鑰簽名為 64 位元組。curve25519 安全性和 P256 相同,同安全性演算法中是目前效率最高的非對稱安全演算法。以型別字首 + 公鑰作為錢包公鑰地址。

為了保證使用者私鑰安全,在本地儲存採用 chacha20+poly1305 演算法加密,需要使用者輸入密碼才可以使用私鑰進行簽名操作。

2. 模板地址

模板地址由型別字首 + 模板 ID 構成。模板 ID 由 2 位元組模板型別 +引數 Hash 低位 30 位元組構成。例如一個 3-5 多重簽名模板 :

3. 帶引數模板

時下流行的區塊鏈系統可以提供執行於不同 VM(Virtual Machine,虛擬機器)之上的指令碼或智慧合約,可以對區塊系統基本賬本進行強大靈活的功能擴充套件。但是截至目前看來,區塊系統中的 VM 模組還處於起步階段,除了存在內在安全漏洞等問題外,執行效率和使用費率也在一定程度上限制了智慧合約適用範圍。BigBang 系統不提供指令碼和智慧合約系統,而是採用帶引數過程模板實現常用的指令碼和智慧合約功能。採用對應模板地址為使用者提供功能呼叫。BigBang 系統提供以下模板:

區塊與交易

1. 區塊

BigBang 區塊的資料結構設計如下:

說明:

· 目前區塊版本為 0x0001 。
· 時間戳採用 UTC 以秒為單位。
· vchProof 包括了合法性證明系列化資料,在安全主鏈中,包括 EDPoS節點廣播的計算結果(包括各節點簽名),CPoW 區塊中還包括工作量證明引數;在應用支鏈中,包含同高度主鏈區塊 hash 和共識計算結果。
· txMint 不進行簽名,簽名欄位為空。
· 區塊簽名 vchSig 使用 txMint 輸出地址進行簽名,簽名資料段包含除vchSig 以外所有欄位。

2. 交易

BigBang 採用 UTXO 模型記錄交易,包括以下資料:

說明:

· 目前交易版本為 0x0001。
· hashAnchor 用於指明當前交易起始有效區塊以及對應分支。
· 輸入列表中的前序交易要求輸出地址相同。
· 交易包括兩項輸出,一項為表中所列( addrTo/nAmount ),另外一項是隱含的找零輸出,地址同輸入地址,金額為( Total Input - nAmount - nTxFee )。
· 交易簽名用輸入列表統一地址,簽名資料段包含除 vchSig 以外所有欄位。

3.  BigBang 跨分支交易

跨分支交易可以用於實現 BigBang 分支之間無信任情形下同步價值交換。實際應用中,往往可以將業務按照業務流程、裝置種類、空間地域等關聯因素進行劃分,分散到多個分支中。互動頻繁的裝置通常持有同一分支Token,在同一分支進行資料交易。但作為一個業務整體,和持有其它分支 Token 裝置互動的需求也是客觀存在的。這種情形下,跨分支交易就可以實現支鏈之間的 Token 交換。一方面跨分支交易可以在無信任情形完成,利用技術原理保證了對雙方的公平性;另一方面跨分支交易在兩個支鏈之間同步進入區塊,保證了高效率和有效性。這為包括去中心化交易所、Token 兌換閘道器等應用提供了良好的底層技術支撐。

共識機制

如前文所述,BigBang 系統採用的共識機制為 EDPoS+CPoW,以EDPoS 為主導,決定下次獲得出塊權的節點或者指明下一區塊由工作量證明共識產生。在 EDPoS 機制未能有效建立時,例如啟動初始階段,CPoW 成為唯一的出塊共識機制。

下面對共識機制進行詳細說明。

1.  EDPoS 節點協商過程

EDPoS 節點以所持 Token 投票數作為出塊權重,透過隨機數計算產生固定出塊節點系列。EDPoS 機制建立後,透過 EDPoS 節點之間協商產生隨機數。協商過程每分鐘進行一輪,透過加權可驗證金鑰分享(VSS)和拜占庭容錯方式進行公平隨機計算。

每輪協商都包括以下幾個過程:1. 節點登記;2. 加密分片資料分發;3. 秘密分片公佈;4. 資料重構和隨機信標計算。

在每輪協商之前,每個 EDPoS 超級節點需要利用 ECC 演算法產生一組私鑰:{a0,a1,…,at-1} ,以及對應公鑰:{A0, A1 ,…, At-1} ,滿足 Ai = aiG,(i = 0,1,…,t-1)。t 為重構資料的門限值,根據對有效 EDPoS 超級節點設定,t 最大值為 50。

1. 節點登記

EDPoS 超級節點在本輪協商對標區塊 16 個區塊之前將登記資訊廣播上鍊,包括加密後的多項式係數 {A0,A1,…,At-1}, A0 作為節點協商公鑰。

2. 加密資料分發

分發開始於協商對標區塊之前 16 區塊止於前一區塊。分發過程開始時,根據登記節點的順序和權重分配計算序號,每個節點分配到的計算序號數量計算方法為:

節點 i 根據其它節點 j 釋出的協商公鑰建立共同金鑰 Kij,將秘密分片sij 以 Kij 加密後廣播全網,對應節點 j 解密後可以用節點 i 的登記資訊對 Sij 進行校驗。其中 Sij 下式計算:

由於節點 i 的加密公鑰 {A0,A1,…,At-1} 在登記過程已公佈,節點 j 透過下式進行校驗:

若上式成立,說明節點 i 傳送了正確秘密分片。

3. 秘密分片公佈

當前一區塊廣播後,每個節點將透過校驗的所有秘密分片廣播全網,全網節點在收集到解密的節點分片,也可以透過上面公式進行校驗,最終剔除惡意節點資料後將有效資料進行計算。

4. 資料重構和隨機信標計算

全網節點在收集節點 i 的 t 個秘密分片就可透過拉格朗日方程重構{a0,a1, …,at-1} ,不能收集到 t 個透過校驗秘密分片的節點會被剔除,不能進入下一階段計算。重複上述計算過程,最終可獲取所有有效節點資料。此過程中,所有可靠節點計算結果將一致,透過組合計算,得到全網一致的隨機信標。由於用於計算的資料分別由各 EDPoS 節點隨機提供,在進行到最後一步計算前,都無法獲知其它節點的資料。作弊節點在校驗和重構階段就會被剔除,在不考慮 51% 攻擊的情況下,沒有節點可以控制最終計算結果,因此可以認為產生的隨機信標具備真隨機屬性。

2. 出塊權分配

在 EDPoS 機制沒有有效建立起來的情況下,當前區塊由 CPoW 共識產生。當 EDPoS 協商成功完成,就會用隨機信標進行擲骰過程,假設EDPoS 超級節點 i 的 Token 投票為 Vi,總的 EDPoS 投票 Vd = V0+V1+...+Vn,總 Token 供應量為 S。CPoW 等效投票為 Vwork = S * (1 - Vd / S)^3節點 i 獲得出塊權的概率 Pi = Vi /(Vd +Vwork)CPoW 獲得出塊權概率 Pwork= Vwork / (Vd +Vwork)重複上過程,就可以得到確定的出塊序列。按照出塊序列,對應節點完成當前區塊出塊,並將解密後的協商最後一步計算過程記錄進區塊,自證出塊合法性。

在經過 EDPoS 協商,確定的出塊系列可以被所有節點一致計算驗證,除了指定確定節點進行出塊,有一定概率指定 CPoW 出塊。如上面公式,CPoW 區塊被選中的概率和參與 EDPoS 協商總 Token 數量相關:

在起始階段,參與 EDPoS 的節點和 Token 比較少,共識機制退化為以CPoW 為主,當越來越多 Token 參與到 EDPoS 過程,CPoW 出塊機率會迅速降低。

後記

本文針對 BigBang 的總體技術框架進行了基本闡述,技術的發展日新月異,BigBang 也會根據行業整體的技術進步和實際的專案需求不斷進行迭代,包括本文件在內的相關技術文件也會隨時保持更新。

在今後的專案發展過程中,BigBang 將先以物聯網為出發點,致力於解決當前物聯網所面臨的一系列問題,夯實 BigBang 在物聯網行業的產業基礎。同時也將向其他領域進行探索和拓展,不斷打造 BigBang 在諸多領域的應用生態。

關於更多BigBang資訊:https://www.bigbangcore.com/
更多區塊鏈專案介紹:http://www.qukuaiwang.com.cn/news/xiangmu
風險提示:區塊鏈投資具有極大的風險,專案披露可能不完整或有欺騙。請在嘗試投資前確定自己承受以上風險的能力。區塊網只做專案介紹,專案真假和價值並未做任何稽覈!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;