隨著比特幣的興起,企業(yè)對(duì)底層區(qū)塊鏈技術(shù)的興趣急劇上升。然而,混亂出現(xiàn)了,因?yàn)榇蟛糠钟懻摱技性诩用茇泿派希@只是使用區(qū)塊鏈的一種方法。為了確定一種對(duì)物聯(lián)網(wǎng)有意義的方法,開發(fā)人員必須首先將區(qū)塊鏈剝離到其基礎(chǔ)并從那里構(gòu)建。
本質(zhì)上,區(qū)塊鏈技術(shù)為節(jié)點(diǎn)網(wǎng)絡(luò)提供了一種機(jī)制,可以安全地交換信息(稱為交易)并相互創(chuàng)建一個(gè)共享賬本,將這些交易記錄在一個(gè)防止更改的記錄中。基本流程很簡(jiǎn)單,如下圖1所示。一個(gè)節(jié)點(diǎn)安全地通知所有其他交易,他們驗(yàn)證并添加到他們的待處理交易列表中。在某些時(shí)候,“發(fā)布節(jié)點(diǎn)”會(huì)創(chuàng)建一個(gè)數(shù)據(jù)塊,其中不包含、部分或所有待處理的交易,并將其呈現(xiàn)給網(wǎng)絡(luò)。當(dāng)節(jié)點(diǎn)就提議的塊是有效的達(dá)成共識(shí)時(shí),他們會(huì)將其添加到共享賬本的副本中,并從待處理列表中刪除相應(yīng)的交易。
每個(gè)新塊都包含與添加到分類帳中的前一個(gè)塊的加密鏈接,后者又具有與其前任塊的鏈接,并在一條完整的鏈中繼續(xù)返回第一個(gè)(創(chuàng)世)塊。加密鏈接確保鏈中的任何塊都可以在不被發(fā)現(xiàn)的情況下被更改,并且分類帳的許多副本確保沒有可以破壞分類帳的單點(diǎn)故障。區(qū)塊鏈技術(shù)中的其他機(jī)制確保所有交易都被記錄下來,并且與不正確的賬本副本相關(guān)聯(lián)的區(qū)塊會(huì)被拒絕,因此賬本的所有功能副本都是相同的。

圖 1區(qū)塊鏈的基本操作很簡(jiǎn)單,但在每個(gè)階段都有許多可用選項(xiàng)。
雖然區(qū)塊鏈實(shí)施的整體操作看起來很簡(jiǎn)單,但仍有許多操作問題必須解決。節(jié)點(diǎn)如何加入網(wǎng)絡(luò)?交易的內(nèi)容是什么?它是如何驗(yàn)證的?哪些節(jié)點(diǎn)可以發(fā)布區(qū)塊?多常?它的內(nèi)容是什么?節(jié)點(diǎn)如何就區(qū)塊的有效性達(dá)成共識(shí)?如果有幾個(gè)不同的塊同時(shí)等待驗(yàn)證會(huì)發(fā)生什么?區(qū)塊鏈開發(fā)人員對(duì)這些問題的回答將決定其實(shí)施在其預(yù)期應(yīng)用中的運(yùn)營(yíng)有效性。有許多選項(xiàng)可用于回答這些問題;比特幣只是為加密貨幣應(yīng)用程序開發(fā)的一種選項(xiàng)配置,甚至不是唯一的加密貨幣區(qū)塊鏈。
為特定應(yīng)用程序定義區(qū)塊鏈實(shí)現(xiàn)的一個(gè)起點(diǎn)是回答節(jié)點(diǎn)如何加入網(wǎng)絡(luò)的問題。基本上有兩種類型的區(qū)塊鏈網(wǎng)絡(luò):無許可和許可。無許可區(qū)塊鏈,也稱為公共區(qū)塊鏈,對(duì)哪些節(jié)點(diǎn)可以加入網(wǎng)絡(luò)沒有任何限制,所有節(jié)點(diǎn)都可以參與驗(yàn)證和共識(shí)工作。這導(dǎo)致高度分散和冗余的配置。比特幣是一個(gè)無需許可的區(qū)塊鏈網(wǎng)絡(luò)。
許可網(wǎng)絡(luò),也稱為私有區(qū)塊鏈,控制哪些節(jié)點(diǎn)可以加入,以及哪些節(jié)點(diǎn)被授權(quán)參與驗(yàn)證和共識(shí)。與公共區(qū)塊鏈相比,它的冗余更少且更集中,但可以提供更高的性能。區(qū)塊鏈的大多數(shù)企業(yè)和物聯(lián)網(wǎng)應(yīng)用都可能使用許可的網(wǎng)絡(luò)結(jié)構(gòu)。
無論區(qū)塊鏈網(wǎng)絡(luò)的配置如何,它們的塊都具有相似的結(jié)構(gòu)。在節(jié)點(diǎn)宣布交易之前,它會(huì)使用其私鑰對(duì)該交易進(jìn)行加密,以對(duì)消息進(jìn)行數(shù)字“簽名”。它可以將其公鑰與交易一起分發(fā),以便其他節(jié)點(diǎn)可以驗(yàn)證交易記錄的準(zhǔn)確接收,或者節(jié)點(diǎn)可能已經(jīng)擁有密鑰的副本,以便它們可以驗(yàn)證授權(quán)消息以及拒絕未經(jīng)授權(quán)的消息。事務(wù)本身可以包含幾乎任何類型的數(shù)據(jù),但通常還指定數(shù)據(jù)傳輸?shù)脑春湍繕?biāo)。
一個(gè)或多個(gè)發(fā)布者節(jié)點(diǎn)會(huì)將一組經(jīng)過驗(yàn)證的交易組合成一個(gè)塊,該塊將被添加到鏈中并將候選塊分發(fā)到網(wǎng)絡(luò)。除了交易數(shù)據(jù)之外,該塊還包括一個(gè)標(biāo)頭,該標(biāo)頭包含來自鏈中前一個(gè)塊的標(biāo)頭的加密散列、時(shí)間戳和候選塊數(shù)據(jù)的加密散列。標(biāo)頭還可以包括稱為隨機(jī)數(shù)的唯一標(biāo)識(shí)符以及系統(tǒng)可能需要的其他類型的信息。

圖 2每個(gè)塊的頭部都包含前一個(gè)塊頭部的加密哈希,因此創(chuàng)建了一個(gè)無法在沒有檢測(cè)到的情況下更改的鏈。(來源:NIST)
在候選塊被添加到鏈中之前,網(wǎng)絡(luò)中的其他節(jié)點(diǎn)必須同意它是有效的,即達(dá)成共識(shí)。根據(jù)網(wǎng)絡(luò)配置,節(jié)點(diǎn)可能并非全部參與此共識(shí)工作。例如,在為物聯(lián)網(wǎng)設(shè)計(jì)的區(qū)塊鏈中,可能有僅交易節(jié)點(diǎn)不維護(hù)鏈的副本,甚至不維護(hù)其他節(jié)點(diǎn)的交易;他們只是將他們的數(shù)據(jù)發(fā)布到網(wǎng)絡(luò)上。可能存在僅保留標(biāo)頭副本的輕量級(jí)節(jié)點(diǎn)。只有完整節(jié)點(diǎn),即驗(yàn)證和保留交易的節(jié)點(diǎn),才會(huì)保留區(qū)塊鏈的完整副本。然而,全節(jié)點(diǎn)可能是也可能不是發(fā)布節(jié)點(diǎn),并且可能參與也可能不參與共識(shí)工作。網(wǎng)絡(luò)的配置,尤其是私有區(qū)塊鏈網(wǎng)絡(luò)的配置,決定了哪些節(jié)點(diǎn)承擔(dān)哪些角色。
節(jié)點(diǎn)驗(yàn)證候選塊的方法——共識(shí)機(jī)制——是區(qū)塊鏈設(shè)計(jì)者擁有相當(dāng)大的自由度的領(lǐng)域之一,但它也可能涉及相當(dāng)大的復(fù)雜性。分布式賬本的一個(gè)基本問題是,在實(shí)踐中,網(wǎng)絡(luò)中的一些節(jié)點(diǎn)將是不可信的,并且會(huì)故意或意外地生成可能污染賬本的不良信息。這在比特幣等無許可網(wǎng)絡(luò)中是一個(gè)特殊的風(fēng)險(xiǎn);壞人進(jìn)入網(wǎng)絡(luò)沒有任何障礙,并且有足夠的動(dòng)力去“煮書”。但即使在許可網(wǎng)絡(luò)中,也存在一個(gè)或多個(gè)節(jié)點(diǎn)不可信的風(fēng)險(xiǎn)。
幸運(yùn)的是,當(dāng)一些參與者試圖插入錯(cuò)誤信息時(shí),試圖就區(qū)塊的有效性達(dá)成共識(shí)是信息論中一個(gè)經(jīng)過充分研究的情況,稱為拜占庭將軍問題。這項(xiàng)研究產(chǎn)生了許多共識(shí)機(jī)制,但在大多數(shù)區(qū)塊鏈實(shí)現(xiàn)中使用了四種主要類型:工作證明 (PoW)、權(quán)益證明 (PoS)、委托權(quán)益證明 (DPoS) 和實(shí)用拜占庭容錯(cuò) (PoW)。 PBFT) 算法。每種方法在抵抗惡意行為的能力、發(fā)布者和全節(jié)點(diǎn)的計(jì)算效率、通信帶寬要求等方面都有其優(yōu)點(diǎn)和缺點(diǎn),但第一個(gè)和第四個(gè)特別值得注意。
PoW 是比特幣中使用的共識(shí)機(jī)制。本質(zhì)上,它需要一個(gè)發(fā)布節(jié)點(diǎn)在創(chuàng)建候選塊之前解決一個(gè)密碼難題。難題是確定要包含在塊頭中的隨機(jī)數(shù),以便該頭的哈希滿足特定條件,例如至少有這么多前導(dǎo)零。解決這個(gè)難題是一項(xiàng)計(jì)算密集型工作(工作),涉及使用隨機(jī)生成的 nonce 值進(jìn)行多次試驗(yàn),直到獲得滿意的結(jié)果。一旦一個(gè)正在處理拼圖的節(jié)點(diǎn)找到了它的“黃金隨機(jī)數(shù)”,它就可以發(fā)布它的候選塊。然后,其他節(jié)點(diǎn)可以通過對(duì)塊數(shù)據(jù)進(jìn)行自己的哈希來驗(yàn)證標(biāo)頭的元素,從而輕松驗(yàn)證結(jié)果,然后使用候選隨機(jī)數(shù)對(duì)重建的塊頭進(jìn)行哈希處理,以驗(yàn)證是否滿足條件。由大多數(shù)完整節(jié)點(diǎn)驗(yàn)證的第一個(gè)候選塊獲勝,節(jié)點(diǎn)將該塊添加到區(qū)塊鏈中。
PoW 作為一種安全的共識(shí)機(jī)制發(fā)揮作用,因?yàn)椴涣夹袨檎呤紫纫砸环N與有效塊數(shù)據(jù)生成相同數(shù)據(jù)散列(散列“沖突”)的方式更改塊數(shù)據(jù)然后生成黃金的可能性非常小在任何其他節(jié)點(diǎn)可以生成有效塊之前,為其損壞的塊提供隨機(jī)數(shù)。然而,生成黃金隨機(jī)數(shù)的計(jì)算量非常大,以至于比特幣為潛在的發(fā)布節(jié)點(diǎn)提供了激勵(lì),以確保他們做出嘗試。這樣的發(fā)布節(jié)點(diǎn)(稱為比特幣“礦工”)將在創(chuàng)建一個(gè)贏得網(wǎng)絡(luò)同意添加到鏈中的區(qū)塊時(shí)收到付款(以新鑄造的比特幣)。
然而,PoW 共識(shí)機(jī)制浪費(fèi)了大量的處理能力來防止不良行為者污染區(qū)塊鏈。雖然在公共區(qū)塊鏈中有數(shù)百萬美元需要保護(hù)時(shí),這可能是可以接受的費(fèi)用,但對(duì)于物聯(lián)網(wǎng)可能使用的私有區(qū)塊鏈類型來說,它很少具有成本效益。一種適用于私有區(qū)塊鏈更受控環(huán)境的計(jì)算效率更高的方法是PBFT 算法,其變體用于通過 Linux 基金會(huì)作為開源代碼提供的Hyperledger Fabric 。
在 PBFT 算法中,網(wǎng)絡(luò)的發(fā)布節(jié)點(diǎn)形成一個(gè)有序的序列,其中一個(gè)節(jié)點(diǎn)暫時(shí)充當(dāng)主導(dǎo)節(jié)點(diǎn),這一時(shí)期稱為“視圖”。在其看來,領(lǐng)先節(jié)點(diǎn)發(fā)布其候選塊以及包含其標(biāo)識(shí)和區(qū)塊鏈狀態(tài)的“預(yù)準(zhǔn)備”消息。然后,其余節(jié)點(diǎn)必須通過將塊的標(biāo)頭和數(shù)據(jù)哈希以及區(qū)塊鏈狀態(tài)與其內(nèi)部生成的副本進(jìn)行比較來驗(yàn)證該塊。然后節(jié)點(diǎn)在“準(zhǔn)備”消息中向所有其他節(jié)點(diǎn)廣播他們對(duì)該塊的接受或拒絕投票。
當(dāng)超過三分之二的節(jié)點(diǎn)報(bào)告接受時(shí),每個(gè)節(jié)點(diǎn)都會(huì)發(fā)布一條“提交”消息,確認(rèn)投票成功以及節(jié)點(diǎn)將區(qū)塊添加到其區(qū)塊鏈的意圖。當(dāng)超過三分之二的其他節(jié)點(diǎn)同意提交時(shí),所有節(jié)點(diǎn)都可以繼續(xù)并將候選塊附加到他們的區(qū)塊鏈中。一旦成功附加了一個(gè)塊,視圖就會(huì)發(fā)生變化,并且前導(dǎo)節(jié)點(diǎn)的角色將移動(dòng)到序列中的下一個(gè)節(jié)點(diǎn)。或者,如果在設(shè)定的時(shí)間范圍內(nèi)沒有達(dá)成共識(shí),節(jié)點(diǎn)會(huì)丟棄候選塊,視圖會(huì)發(fā)生變化,并且序列中的下一個(gè)節(jié)點(diǎn)將成為領(lǐng)先節(jié)點(diǎn),再次嘗試就區(qū)塊達(dá)成共識(shí)。

圖3PBFT共識(shí)算法的消息序列和流量
使用 PBFT 算法,網(wǎng)絡(luò)可以快速識(shí)別和隔離行為不端的節(jié)點(diǎn),即使領(lǐng)導(dǎo)節(jié)點(diǎn)是不良行為者。如果一個(gè)節(jié)點(diǎn)過于頻繁地拒絕有效塊或在它是領(lǐng)先節(jié)點(diǎn)時(shí)未能達(dá)成共識(shí),其他節(jié)點(diǎn)可以學(xué)會(huì)將其視為錯(cuò)誤或惡意而忽略它。在許可網(wǎng)絡(luò)中,系統(tǒng)甚至可以包括一個(gè)監(jiān)督算法,可以從網(wǎng)絡(luò)中永久刪除行為不端的節(jié)點(diǎn)。
該算法涉及的計(jì)算量要少得多,并且比 PoW 方法執(zhí)行得快得多,因?yàn)闆]有要解決的難題,只需驗(yàn)證哈希即可。此外,一次只有一個(gè)節(jié)點(diǎn)被授權(quán)發(fā)布候選塊,因此當(dāng)不同節(jié)點(diǎn)采用不同(但有效)的候選塊時(shí),不會(huì)出現(xiàn)意外的“分叉”鏈。由于挖礦競(jìng)爭(zhēng),如果兩個(gè)成功的候選者同時(shí)出現(xiàn),比特幣中可能會(huì)出現(xiàn)這種分叉,因此比特幣必須使用額外的算法來修剪分叉。
PBFT 的主要缺點(diǎn)是與共識(shí)相關(guān)的消息流量。因?yàn)槊總€(gè)完整節(jié)點(diǎn)都必須將其預(yù)提交和提交消息發(fā)送到所有其他節(jié)點(diǎn),所以消息數(shù)量呈指數(shù)增長(zhǎng)。然而,對(duì)于物聯(lián)網(wǎng)實(shí)施,這可能不是一個(gè)重大限制。
考慮一個(gè)系統(tǒng),其中幾個(gè)組織(一個(gè)財(cái)團(tuán))相互建立一個(gè)許可的區(qū)塊鏈網(wǎng)絡(luò),用于跟蹤需要冷藏儲(chǔ)存和運(yùn)輸?shù)囊赘浳锏奶幚恚瑥脑搭^通過倉庫到最終客戶。每個(gè)處理程序(來源、運(yùn)輸提供商、倉庫、分銷商、零售商等)都為區(qū)塊鏈維護(hù)一個(gè)發(fā)布節(jié)點(diǎn)。最終客戶也可能有一個(gè)鏈接到網(wǎng)絡(luò)的非發(fā)布節(jié)點(diǎn),用于跟蹤他們特定購(gòu)買的區(qū)塊鏈。
物聯(lián)網(wǎng)傳感器監(jiān)控貨物,定期將其位置和溫度信息發(fā)送到每個(gè)利益相關(guān)者的節(jié)點(diǎn),以創(chuàng)建和維護(hù)跟蹤貨物的區(qū)塊鏈。發(fā)布節(jié)點(diǎn)參與 PBFT 共識(shí)機(jī)制,形成區(qū)塊鏈,記錄商品從源頭到客戶的移動(dòng)和溫度歷史。結(jié)果是一個(gè)區(qū)塊鏈,如果出現(xiàn)問題或需要證明,它可以為所有各方提供一致且不可變的記錄。
這樣的網(wǎng)絡(luò)將不需要大量的發(fā)布節(jié)點(diǎn)——只有那些相互有合同承諾的利益相關(guān)者才需要共識(shí)投票來維護(hù)交易的相互分類賬。可能還有其他利益相關(guān)者希望維護(hù)一個(gè)副本,從而連接到網(wǎng)絡(luò),但他們的流量?jī)H隨著添加節(jié)點(diǎn)的數(shù)量線性擴(kuò)展。因此,使用 PBFT 共識(shí)的經(jīng)過仔細(xì)考慮且結(jié)構(gòu)良好的私有區(qū)塊鏈可以避免帶寬問題。
當(dāng)然,訣竅是選擇網(wǎng)絡(luò)結(jié)構(gòu)、共識(shí)機(jī)制、通信方案、塊和標(biāo)頭定義以及其他此類細(xì)節(jié),以使區(qū)塊鏈的操作適合應(yīng)用程序的需求。有許多可能的實(shí)現(xiàn)方式,其中一些可從區(qū)塊鏈即服務(wù) (BaaS) 提供商處獲得,例如亞馬遜、IBM、微軟等。還有一些開源軟件,例如 Hyperledger 項(xiàng)目,可供那些尋求開發(fā)自定義區(qū)塊鏈實(shí)施的人使用。
在最抽象的情況下,區(qū)塊鏈技術(shù)允許創(chuàng)建和維護(hù)分布式、防篡改的數(shù)字交易記錄。該記錄可供相關(guān)方檢查,但不可更改。盡管交易是可見的,但根據(jù)區(qū)塊鏈的配置,參與交易的各方可能是匿名的或可識(shí)別的。正確配置和應(yīng)用的區(qū)塊鏈可以幫助提高物聯(lián)網(wǎng)交互的信任度和效率。
審核編輯:湯梓紅
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2945文章
47818瀏覽量
414810 -
區(qū)塊鏈
+關(guān)注
關(guān)注
112文章
15577瀏覽量
110991
發(fā)布評(píng)論請(qǐng)先 登錄
一篇文章帶你了解什么是物聯(lián)網(wǎng)技術(shù)?
Lora基站在物聯(lián)網(wǎng)應(yīng)用的重要性
RFID技術(shù)對(duì)冷鏈物流溫控合規(guī)性的價(jià)值貢獻(xiàn)
食品冷鏈物聯(lián)網(wǎng)平臺(tái)解決方案
學(xué)習(xí)物聯(lián)網(wǎng)怎么入門?
學(xué)習(xí)物聯(lián)網(wǎng)可以做什么工作?
新品 | Atom EchoS3R,可編程的物聯(lián)網(wǎng)語音交互控制器
區(qū)塊鏈如何增強(qiáng)對(duì)物聯(lián)網(wǎng)交互的信任
評(píng)論