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

MQTT智能網(wǎng)關(guān)接入物聯(lián)網(wǎng)平臺:實現(xiàn)高效連接與數(shù)據(jù)交互
物聯(lián)網(wǎng)系統(tǒng)中音頻方案的“大腦”_語音芯片

評論