區塊鏈技術筆記三

軍說網事發表於2018-01-29

區塊鏈底層技術模型

區塊鏈技術的模型是由自下而上的資料層、網路層、共識層、激勵層、合約層和應用層組成。

首先是“資料層”,封裝了底層資料區塊的鏈式結構,以及相關的非對稱公私鑰資料加密技術和時間戳等技術,這是整個區塊鏈技術中最底層的資料結構。

資料層主要描述區塊鏈技術的物理形式。區塊鏈的名稱包含了兩個特點:資料區塊和鏈式結構。區塊鏈技術的物理實現是一個由規格相同的區塊通過鏈式結構組成的鏈條。系統設計人員建立鏈條的創世節點,之後根據規則,區塊鏈網路中的節點產生新的區塊,並在經過驗證後,將新區塊連結在主鏈條上。隨著系統執行時間的延續,主鏈條會不斷延長。

例如比特幣區塊鏈的主鏈已經有415291個區塊。這些區塊中包含具體應用需要記載的資訊。例如比特幣區塊鏈中儲存交易資訊。每一個區塊為了確保安全,採用了很多技術,例如採用時間戳技術確保每一個區塊按照時序連結,採用雜湊函式確保交易資訊不被篡改,採用merkle樹記錄具體的交易資訊,採用非對稱加密實現身份認證。上述的區塊結構是一種基本格式,在不同的區塊鏈應用中會針對性變化。針對區塊節點內部具體結構會在區塊鏈應用中描述。

其次是“網路層”,包括P2P組網機制、資料傳播機制和資料驗證機制等。

網路層的主要目的是實現區塊鏈網路中節點之間的資訊交流。區塊鏈網路本質上是一個P2P網路。每一個節點既接收資訊,也產生資訊。節點之間通過維護一個共同的區塊鏈來保持通訊。在區塊鏈網路中,每一個節點都是公平的,都可以創造新的區塊,節點創造新的區塊後,通過廣播的形式傳送給其他節點,其他節點會對區塊資訊進行驗證,只有當51%的使用者驗證通過,這個新區塊才被認可。網路中的節點會將此區塊連結在主連結串列上。驗證的方法取決於共識機制。

第三層“共識層”,封裝了網路節點的各類共識機制演算法。共識機制演算法是區塊鏈的核心技術,因為這決定了到底是誰來進行記賬,而記賬決定方式將會影響整個系統的安全性和可靠性。目前已經出現了十餘種共識機制演算法,其中比較最為知名的有工作量證明機制(PoW,Proof of Work)、權益證明機制(PoS,Proof ofStake)、股份授權證明機制(DPoS,Delegated ProofofStake)等。

比特幣區塊鏈採用高度依賴節點算力的工作量證明(POW)機制來保證比特幣網路分散式記賬的一致性。核心思想是將一段時間內的交易打包成一個區塊,針對區塊資訊的特性,設計一個求解複雜但驗證容易的SHA256數學難題。節點利用算力求解這個難題,第一個的算出解的使用者將資訊廣播給其他節點,其他節點進行驗證,如果51%的使用者驗證通過,這個使用者就成為這個區塊的受益人,並將區塊連結到主鏈。這種機制確保了每個區塊的生成都包含了大量的計算過程,當有人對區塊鏈進行攻擊的時候,必須重新計算攻擊區塊以及後續區塊所有的計算過程。POW機制正是依靠強大的計算量確保區塊鏈的安全性。但是POW機制也有明顯的缺陷,例如工作量證明導致大量的資源浪費(電能),同時這種共識機制需要的等待時間較長,例如比特幣平均需要10分鐘才能達成共識。後續,研究人員又設計許多新的共識機制,比如利用權益證明代替工作量證明的POS機制,類似於董事會決策的DPOS機制。不同的機制各有特點,需要根據應用環境進行選擇。

第四層“激勵層”,將經濟因素整合到區塊鏈技術體系中來,包括經濟激勵的發行機制和分配機制等,主要出現在公有鏈當中。在公有鏈中必須激勵遵守規則參與記賬的節點,並且懲罰不遵守規則的節點,才能讓整個系統朝著良性迴圈的方向發展。而在私有鏈當中,則不一定需要進行激勵,因為參與記賬的節點往往是在鏈外完成了博弈,通過強制力或自願來要求參與記賬。

激勵層目的是提供一定的激勵措施鼓勵節點參與區塊鏈的安全驗證工作。區塊鏈的安全性依賴於眾多節點的參與。例如比特幣區塊鏈的安全性是基於眾多節點參與工作量證明帶來的巨大的計算量,使得攻擊者無法提供更高的計算量。節點的驗證過程通常需要耗費的計算資源和電能。為了鼓勵節點參與,區塊鏈通常會採用電子貨幣的形式獎勵參與人員,比特幣、萊特幣、以太幣都是這種機制的產物。以比特幣為例,獎勵機制包括了兩種,第一種是新區快產生後系統生成的比特幣,第二種是每筆交易會扣除萬分之一比特幣作為手續費。在前期,每一個區塊的建立者都會獲得一定數量的比特幣,創世區塊提供50個比特幣,之後隨著系統中比特幣數量的持續增加,這種模式提供的比特幣數量會持續減半。當比特幣總量達到2100萬時,新產生的區塊將不再生成比特幣。這時主要依靠第二種手續費作為獎勵機制。

第五層“合約層”,封裝各類指令碼、演算法和智慧合約,是區塊鏈可程式設計特性的基礎。

比特幣的交易依賴於指令碼的內容,指令碼規定了交易的方式和各項細節,這種特性使比特幣成為一種可以程式設計的貨幣。傳統的紙質貨幣交易,一旦貨幣交到收款方,交易即結束。而通過合約層的指令碼技術,可以通過設定時間條件,實現延時支付,收款方收到錢卻不能立即使用,必須等待時間結束。通過規定接受者和擔保人必須共同私鑰簽名才能支配一筆比特幣, 可以實現擔保交易; 通過設計一種可根據外部資訊源核查某概率事件是否發生的規則並作為解鎖指令碼附著在一定數量的比特幣交易上, 即可實現博彩和預測市場等型別的應用。

第六層“應用層”,封裝了區塊鏈的各種應用場景和案例,比如搭建在以太坊上的各類區塊鏈應用即部署在應用層,而未來的可程式設計金融和可程式設計社會也將會是搭建在應用層。

(資料層、網路層、共識層是構建區塊鏈技術的必要元素,缺少任何一層都將不能稱之為真正意義上的區塊鏈技術。

激勵層、合約層和應用層不是每個區塊鏈應用的必要因素,一些區塊鏈應用並不完整的包含後三層結構。)

 

相關文章