隨著比特幣的興起,企業對底層區塊鏈技術的興趣急劇上升。然而,混亂出現了,因為大部分討論都集中在加密貨幣上,這只是使用區塊鏈的一種方法。為了確定一種對物聯網有意義的方法,開發人員必須首先將區塊鏈剝離到其基礎并從那里構建。
本質上,區塊鏈技術為節點網絡提供了一種機制,可以安全地交換信息(稱為交易)并相互創建一個共享賬本,將這些交易記錄在一個防止更改的記錄中。基本流程很簡單,如下圖1所示。一個節點安全地通知所有其他交易,他們驗證并添加到他們的待處理交易列表中。在某些時候,“發布節點”會創建一個數據塊,其中不包含、部分或所有待處理的交易,并將其呈現給網絡。當節點就提議的塊是有效的達成共識時,他們會將其添加到共享賬本的副本中,并從待處理列表中刪除相應的交易。
每個新塊都包含與添加到分類帳中的前一個塊的加密鏈接,后者又具有與其前任塊的鏈接,并在一條完整的鏈中繼續返回第一個(創世)塊。加密鏈接確保鏈中的任何塊都可以在不被發現的情況下被更改,并且分類帳的許多副本確保沒有可以破壞分類帳的單點故障。區塊鏈技術中的其他機制確保所有交易都被記錄下來,并且與不正確的賬本副本相關聯的區塊會被拒絕,因此賬本的所有功能副本都是相同的。
圖 1區塊鏈的基本操作很簡單,但在每個階段都有許多可用選項。
雖然區塊鏈實施的整體操作看起來很簡單,但仍有許多操作問題必須解決。節點如何加入網絡?交易的內容是什么?它是如何驗證的?哪些節點可以發布區塊?多常?它的內容是什么?節點如何就區塊的有效性達成共識?如果有幾個不同的塊同時等待驗證會發生什么?區塊鏈開發人員對這些問題的回答將決定其實施在其預期應用中的運營有效性。有許多選項可用于回答這些問題;比特幣只是為加密貨幣應用程序開發的一種選項配置,甚至不是唯一的加密貨幣區塊鏈。
為特定應用程序定義區塊鏈實現的一個起點是回答節點如何加入網絡的問題。基本上有兩種類型的區塊鏈網絡:無許可和許可。無許可區塊鏈,也稱為公共區塊鏈,對哪些節點可以加入網絡沒有任何限制,所有節點都可以參與驗證和共識工作。這導致高度分散和冗余的配置。比特幣是一個無需許可的區塊鏈網絡。
許可網絡,也稱為私有區塊鏈,控制哪些節點可以加入,以及哪些節點被授權參與驗證和共識。與公共區塊鏈相比,它的冗余更少且更集中,但可以提供更高的性能。區塊鏈的大多數企業和物聯網應用都可能使用許可的網絡結構。
無論區塊鏈網絡的配置如何,它們的塊都具有相似的結構。在節點宣布交易之前,它會使用其私鑰對該交易進行加密,以對消息進行數字“簽名”。它可以將其公鑰與交易一起分發,以便其他節點可以驗證交易記錄的準確接收,或者節點可能已經擁有密鑰的副本,以便它們可以驗證授權消息以及拒絕未經授權的消息。事務本身可以包含幾乎任何類型的數據,但通常還指定數據傳輸的源和目標。
一個或多個發布者節點會將一組經過驗證的交易組合成一個塊,該塊將被添加到鏈中并將候選塊分發到網絡。除了交易數據之外,該塊還包括一個標頭,該標頭包含來自鏈中前一個塊的標頭的加密散列、時間戳和候選塊數據的加密散列。標頭還可以包括稱為隨機數的唯一標識符以及系統可能需要的其他類型的信息。
圖 2每個塊的頭部都包含前一個塊頭部的加密哈希,因此創建了一個無法在沒有檢測到的情況下更改的鏈。(來源:NIST)
在候選塊被添加到鏈中之前,網絡中的其他節點必須同意它是有效的,即達成共識。根據網絡配置,節點可能并非全部參與此共識工作。例如,在為物聯網設計的區塊鏈中,可能有僅交易節點不維護鏈的副本,甚至不維護其他節點的交易;他們只是將他們的數據發布到網絡上。可能存在僅保留標頭副本的輕量級節點。只有完整節點,即驗證和保留交易的節點,才會保留區塊鏈的完整副本。然而,全節點可能是也可能不是發布節點,并且可能參與也可能不參與共識工作。網絡的配置,尤其是私有區塊鏈網絡的配置,決定了哪些節點承擔哪些角色。
節點驗證候選塊的方法——共識機制——是區塊鏈設計者擁有相當大的自由度的領域之一,但它也可能涉及相當大的復雜性。分布式賬本的一個基本問題是,在實踐中,網絡中的一些節點將是不可信的,并且會故意或意外地生成可能污染賬本的不良信息。這在比特幣等無許可網絡中是一個特殊的風險;壞人進入網絡沒有任何障礙,并且有足夠的動力去“煮書”。但即使在許可網絡中,也存在一個或多個節點不可信的風險。
幸運的是,當一些參與者試圖插入錯誤信息時,試圖就區塊的有效性達成共識是信息論中一個經過充分研究的情況,稱為拜占庭將軍問題。這項研究產生了許多共識機制,但在大多數區塊鏈實現中使用了四種主要類型:工作證明 (PoW)、權益證明 (PoS)、委托權益證明 (DPoS) 和實用拜占庭容錯 (PoW)。 PBFT) 算法。每種方法在抵抗惡意行為的能力、發布者和全節點的計算效率、通信帶寬要求等方面都有其優點和缺點,但第一個和第四個特別值得注意。
PoW 是比特幣中使用的共識機制。本質上,它需要一個發布節點在創建候選塊之前解決一個密碼難題。難題是確定要包含在塊頭中的隨機數,以便該頭的哈希滿足特定條件,例如至少有這么多前導零。解決這個難題是一項計算密集型工作(工作),涉及使用隨機生成的 nonce 值進行多次試驗,直到獲得滿意的結果。一旦一個正在處理拼圖的節點找到了它的“黃金隨機數”,它就可以發布它的候選塊。然后,其他節點可以通過對塊數據進行自己的哈希來驗證標頭的元素,從而輕松驗證結果,然后使用候選隨機數對重建的塊頭進行哈希處理,以驗證是否滿足條件。由大多數完整節點驗證的第一個候選塊獲勝,節點將該塊添加到區塊鏈中。
PoW 作為一種安全的共識機制發揮作用,因為不良行為者首先以一種與有效塊數據生成相同數據散列(散列“沖突”)的方式更改塊數據然后生成黃金的可能性非常小在任何其他節點可以生成有效塊之前,為其損壞的塊提供隨機數。然而,生成黃金隨機數的計算量非常大,以至于比特幣為潛在的發布節點提供了激勵,以確保他們做出嘗試。這樣的發布節點(稱為比特幣“礦工”)將在創建一個贏得網絡同意添加到鏈中的區塊時收到付款(以新鑄造的比特幣)。
然而,PoW 共識機制浪費了大量的處理能力來防止不良行為者污染區塊鏈。雖然在公共區塊鏈中有數百萬美元需要保護時,這可能是可以接受的費用,但對于物聯網可能使用的私有區塊鏈類型來說,它很少具有成本效益。一種適用于私有區塊鏈更受控環境的計算效率更高的方法是PBFT 算法,其變體用于通過 Linux 基金會作為開源代碼提供的Hyperledger Fabric 。
在 PBFT 算法中,網絡的發布節點形成一個有序的序列,其中一個節點暫時充當主導節點,這一時期稱為“視圖”。在其看來,領先節點發布其候選塊以及包含其標識和區塊鏈狀態的“預準備”消息。然后,其余節點必須通過將塊的標頭和數據哈希以及區塊鏈狀態與其內部生成的副本進行比較來驗證該塊。然后節點在“準備”消息中向所有其他節點廣播他們對該塊的接受或拒絕投票。
當超過三分之二的節點報告接受時,每個節點都會發布一條“提交”消息,確認投票成功以及節點將區塊添加到其區塊鏈的意圖。當超過三分之二的其他節點同意提交時,所有節點都可以繼續并將候選塊附加到他們的區塊鏈中。一旦成功附加了一個塊,視圖就會發生變化,并且前導節點的角色將移動到序列中的下一個節點。或者,如果在設定的時間范圍內沒有達成共識,節點會丟棄候選塊,視圖會發生變化,并且序列中的下一個節點將成為領先節點,再次嘗試就區塊達成共識。
圖3PBFT共識算法的消息序列和流量
使用 PBFT 算法,網絡可以快速識別和隔離行為不端的節點,即使領導節點是不良行為者。如果一個節點過于頻繁地拒絕有效塊或在它是領先節點時未能達成共識,其他節點可以學會將其視為錯誤或惡意而忽略它。在許可網絡中,系統甚至可以包括一個監督算法,可以從網絡中永久刪除行為不端的節點。
該算法涉及的計算量要少得多,并且比 PoW 方法執行得快得多,因為沒有要解決的難題,只需驗證哈希即可。此外,一次只有一個節點被授權發布候選塊,因此當不同節點采用不同(但有效)的候選塊時,不會出現意外的“分叉”鏈。由于挖礦競爭,如果兩個成功的候選者同時出現,比特幣中可能會出現這種分叉,因此比特幣必須使用額外的算法來修剪分叉。
PBFT 的主要缺點是與共識相關的消息流量。因為每個完整節點都必須將其預提交和提交消息發送到所有其他節點,所以消息數量呈指數增長。然而,對于物聯網實施,這可能不是一個重大限制。
考慮一個系統,其中幾個組織(一個財團)相互建立一個許可的區塊鏈網絡,用于跟蹤需要冷藏儲存和運輸的易腐貨物的處理,從源頭通過倉庫到最終客戶。每個處理程序(來源、運輸提供商、倉庫、分銷商、零售商等)都為區塊鏈維護一個發布節點。最終客戶也可能有一個鏈接到網絡的非發布節點,用于跟蹤他們特定購買的區塊鏈。
物聯網傳感器監控貨物,定期將其位置和溫度信息發送到每個利益相關者的節點,以創建和維護跟蹤貨物的區塊鏈。發布節點參與 PBFT 共識機制,形成區塊鏈,記錄商品從源頭到客戶的移動和溫度歷史。結果是一個區塊鏈,如果出現問題或需要證明,它可以為所有各方提供一致且不可變的記錄。
這樣的網絡將不需要大量的發布節點——只有那些相互有合同承諾的利益相關者才需要共識投票來維護交易的相互分類賬。可能還有其他利益相關者希望維護一個副本,從而連接到網絡,但他們的流量僅隨著添加節點的數量線性擴展。因此,使用 PBFT 共識的經過仔細考慮且結構良好的私有區塊鏈可以避免帶寬問題。
當然,訣竅是選擇網絡結構、共識機制、通信方案、塊和標頭定義以及其他此類細節,以使區塊鏈的操作適合應用程序的需求。有許多可能的實現方式,其中一些可從區塊鏈即服務 (BaaS) 提供商處獲得,例如亞馬遜、IBM、微軟等。還有一些開源軟件,例如 Hyperledger 項目,可供那些尋求開發自定義區塊鏈實施的人使用。
在最抽象的情況下,區塊鏈技術允許創建和維護分布式、防篡改的數字交易記錄。該記錄可供相關方檢查,但不可更改。盡管交易是可見的,但根據區塊鏈的配置,參與交易的各方可能是匿名的或可識別的。正確配置和應用的區塊鏈可以幫助提高物聯網交互的信任度和效率。
審核編輯:湯梓紅
-
物聯網
+關注
關注
2909文章
44715瀏覽量
374307 -
區塊鏈
+關注
關注
111文章
15562瀏覽量
106225
發布評論請先 登錄
相關推薦
評論