魏祥 張媛媛
摘要:智慧家庭正逐漸成為引領(lǐng)智慧生活的新時(shí)尚,介紹了一種基于區(qū)塊鏈和物聯(lián)網(wǎng)面向消息中間件(MOM)的智慧家庭體系結(jié)構(gòu)的實(shí)現(xiàn),該體系結(jié)構(gòu)具有2個(gè)網(wǎng)關(guān),用于內(nèi)部家電的管理。對(duì)物聯(lián)網(wǎng)MOM、消息隊(duì)列遙測(cè)傳輸(MQTT)協(xié)議和區(qū)塊鏈體系結(jié)構(gòu)進(jìn)行基本概述,討論區(qū)塊鏈技術(shù)中以太坊智能合約的概念。提出了區(qū)塊鏈技術(shù)和物聯(lián)網(wǎng)設(shè)備集成方面的一些問(wèn)題和挑戰(zhàn),介紹了智慧家庭應(yīng)用程序?qū)崿F(xiàn)的案例。
關(guān)鍵詞:區(qū)塊鏈;智慧家庭;應(yīng)用
中圖分類號(hào):TP393文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2022)09-60-4
智慧家庭本質(zhì)上是一種基于物聯(lián)網(wǎng)技術(shù)的異構(gòu)傳感器網(wǎng)絡(luò)。如今,智慧家庭中配備了許多智能電器,如洗衣機(jī)、冰箱、電視、烤箱、恒溫器等。為了實(shí)現(xiàn)這些設(shè)備之間的透明通信,需要使用網(wǎng)關(guān)進(jìn)行協(xié)議轉(zhuǎn)換。在需求的響應(yīng)、先進(jìn)的計(jì)量基礎(chǔ)設(shè)施、分布式的發(fā)電和存儲(chǔ)中使用雙向通信。
一方面,許多網(wǎng)關(guān)的存在使傳感器和執(zhí)行器內(nèi)部網(wǎng)絡(luò)中的系統(tǒng)變得復(fù)雜。附加協(xié)議轉(zhuǎn)換的存在降低了其功能,為了減少其數(shù)量,需要選擇與計(jì)算能力有限的終端設(shè)備兼容的協(xié)議。MQTT和COAP(受限應(yīng)用協(xié)議)的存在滿足了計(jì)算資源有限的設(shè)備要求,并且非常方便用于構(gòu)建內(nèi)部傳感器網(wǎng)絡(luò)。另一方面,與外部世界的系統(tǒng)接口必須與不同的網(wǎng)絡(luò)提供商及其通信協(xié)議兼容。物聯(lián)網(wǎng)中許多異構(gòu)設(shè)備的存在導(dǎo)致了內(nèi)部和外部的兼容性和安全性出現(xiàn)問(wèn)題。區(qū)塊鏈技術(shù)具有統(tǒng)一的協(xié)議集和內(nèi)置安全性,不僅可以用作任何家庭網(wǎng)絡(luò)的外部鏈接,還可以用作存儲(chǔ)每項(xiàng)事務(wù)中包含的數(shù)據(jù)的分布式數(shù)據(jù)庫(kù)[1]。
1.1物聯(lián)網(wǎng)
隨著傳感器網(wǎng)絡(luò)、無(wú)線移動(dòng)通信、嵌入式系統(tǒng)和云計(jì)算的發(fā)展,物聯(lián)網(wǎng)技術(shù)已廣泛應(yīng)用于智能城市、智能農(nóng)業(yè)和智慧家庭等領(lǐng)域。物聯(lián)網(wǎng)有3個(gè)基本組成部分:嵌入式設(shè)備(由低成本或低功耗設(shè)備和高性能網(wǎng)關(guān)組成)、可擴(kuò)展連接(每個(gè)嵌入式設(shè)備都能連接)、基于云的大規(guī)模設(shè)備管理(分布式設(shè)備的集中管理)。
物聯(lián)網(wǎng)的基本理念是在周圍無(wú)處不在的各種事物或物體,如射頻識(shí)別(RFID)標(biāo)簽、傳感器、執(zhí)行器和移動(dòng)電話等,通過(guò)特殊的尋址方式,能夠交互,并與相鄰設(shè)備合作以實(shí)現(xiàn)共同目標(biāo)。
1.2 MQTT
消息隊(duì)列遙測(cè)傳輸(MQTT)由訂閱者、發(fā)布者和代理3個(gè)組件組成。發(fā)布者將消息輸入到特定主題,代理將這些消息發(fā)送到訂閱的客戶端。客戶端訂閱與其相關(guān)的特定主題,并接收發(fā)布到這些主題的每條消息。代理通過(guò)授權(quán)發(fā)布者和訂閱者來(lái)實(shí)現(xiàn)安全性。
1.3區(qū)塊鏈
區(qū)塊鏈的核心是一個(gè)點(diǎn)對(duì)點(diǎn)的分布式賬本,加密安全、只可追加、不可更改,并且只能通過(guò)對(duì)等方之間的共識(shí)或協(xié)議進(jìn)行更新[2]。根據(jù)不同的觀點(diǎn),區(qū)塊鏈有不同的定義:從業(yè)務(wù)角度來(lái)看,區(qū)塊鏈可以定義為一個(gè)平臺(tái),通過(guò)該平臺(tái),對(duì)等方可以使用交易交換價(jià)值,而無(wú)需中間可信第三方;從技術(shù)角度來(lái)看,區(qū)塊鏈?zhǔn)沁\(yùn)行在互聯(lián)網(wǎng)之上的分布式點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)。
參與區(qū)塊鏈網(wǎng)絡(luò)的每個(gè)用戶都表示一個(gè)區(qū)塊鏈節(jié)點(diǎn),該節(jié)點(diǎn)有一個(gè)地址,該地址表示一個(gè)唯一標(biāo)識(shí)符。每個(gè)節(jié)點(diǎn)都可以在同一網(wǎng)絡(luò)內(nèi)啟動(dòng)事務(wù),將值傳遞給其他節(jié)點(diǎn)。所有啟動(dòng)的事務(wù)都分組到區(qū)塊中,由網(wǎng)絡(luò)中稱為礦工節(jié)點(diǎn)的特殊節(jié)點(diǎn)進(jìn)行驗(yàn)證。礦工節(jié)點(diǎn)通過(guò)執(zhí)行一致性算法來(lái)驗(yàn)證新創(chuàng)建的區(qū)塊,所有的有效區(qū)塊都存儲(chǔ)在分布式分類賬本中。
分類賬本是一個(gè)區(qū)塊鏈,包含所有的有效交易鏈上的第一個(gè)塊(創(chuàng)世塊)。每個(gè)塊通過(guò)位于其頭部的Merkle樹根散列與前一個(gè)塊鏈接。作為一個(gè)分散的系統(tǒng),區(qū)塊鏈系統(tǒng)不需要可信第三方機(jī)構(gòu)。相反,為了保證數(shù)據(jù)交易的可靠性和一致性,區(qū)塊鏈采用了分散共識(shí)機(jī)制。每一種共識(shí)機(jī)制的實(shí)質(zhì)是讓礦工節(jié)點(diǎn)解決一個(gè)難題,證明數(shù)據(jù)的真實(shí)性。在現(xiàn)有的區(qū)塊鏈系統(tǒng)中,有4種主要的共識(shí)機(jī)制:工作證明(PoW)、股權(quán)證明(PoS)、實(shí)際拜占庭容錯(cuò)(PBFT)和委托股權(quán)證明(DPO)。
PoW一致性算法迫使礦工通過(guò)基于nonce值、先前塊的散列和事務(wù)散列達(dá)到目標(biāo)值來(lái)創(chuàng)建新塊,從而解決計(jì)算密集型易驗(yàn)證任務(wù)。如果任務(wù)由網(wǎng)絡(luò)中的任何節(jié)點(diǎn)解決,則該節(jié)點(diǎn)將解決方案廣播給其他礦工節(jié)點(diǎn),并且所有其他節(jié)點(diǎn)必須相互確認(rèn)解決方案的正確性。如果區(qū)塊被驗(yàn)證,其他礦工將把這個(gè)新區(qū)塊附加到自己的分類賬本副本中。
PoS共識(shí)算法是PoW的一種節(jié)能替代方案。該算法根據(jù)擁有的代幣數(shù)量隨機(jī)選擇負(fù)責(zé)創(chuàng)建新區(qū)塊的節(jié)點(diǎn)。事實(shí)上,擁有更多代幣的用戶對(duì)區(qū)塊鏈系統(tǒng)的正常運(yùn)行更感興趣,這些所有者負(fù)責(zé)提供包含有效區(qū)塊的分類賬本。
PBFT是由Liskov和Castro提出的一種復(fù)制算法,用于解決分布式系統(tǒng)中的拜占庭式故障。在該算法中,副本節(jié)點(diǎn)通過(guò)一系列稱為“視圖”的配置來(lái)移動(dòng)。在每一個(gè)視圖中,包含一個(gè)主節(jié)點(diǎn),其他作為備份節(jié)點(diǎn)。當(dāng)主服務(wù)器收到客戶機(jī)請(qǐng)求時(shí),它會(huì)啟動(dòng)一個(gè)三階段協(xié)議,以原子方式將請(qǐng)求多播到副本。這3個(gè)階段是預(yù)準(zhǔn)備、準(zhǔn)備和提交。即使提出請(qǐng)求排序的主視圖出現(xiàn)故障,預(yù)準(zhǔn)備和準(zhǔn)備階段也會(huì)對(duì)同一視圖中發(fā)送的請(qǐng)求進(jìn)行排序。準(zhǔn)備和提交階段用于確保提交的請(qǐng)求在視圖之間完全有序。
1.4以太坊和智能合約
以太坊是一種基于區(qū)塊鏈技術(shù)的開源軟件,重點(diǎn)是提供一個(gè)構(gòu)建分布式區(qū)塊鏈應(yīng)用程序的平臺(tái)。開發(fā)人員可以在以太坊網(wǎng)絡(luò)中實(shí)現(xiàn)、部署和執(zhí)行智能合約應(yīng)用程序。智能合約應(yīng)用程序由以太坊虛擬機(jī)執(zhí)行。以太坊提供2種類型的賬戶:用戶賬戶和智能合約賬戶。用戶帳戶不執(zhí)行任何代碼,此類型的帳戶只能通過(guò)使用其私鑰創(chuàng)建和簽署事務(wù)來(lái)向其他帳戶發(fā)送消息。智能合約帳戶始終執(zhí)行事務(wù)調(diào)用的已部署的相應(yīng)智能合約中定義的任何方法的代碼。以太坊智能合約是用Solidity語(yǔ)言編寫的,合約的代碼被編譯成字節(jié)碼,然后部署到以太坊虛擬機(jī)。
2.1物聯(lián)網(wǎng)面臨的挑戰(zhàn)
物聯(lián)網(wǎng)及其中間件面臨的挑戰(zhàn)涉及動(dòng)態(tài)異構(gòu)資源發(fā)現(xiàn)和組合、可擴(kuò)展性、可靠性、互操作性、安全性和隱私[3-4]。
資源發(fā)現(xiàn):物聯(lián)網(wǎng)基礎(chǔ)設(shè)施的性質(zhì)使集中式資源注冊(cè)和發(fā)現(xiàn)方法無(wú)效。如果物聯(lián)網(wǎng)應(yīng)用程序中存在大量服務(wù)發(fā)現(xiàn)查詢,則可能會(huì)出現(xiàn)問(wèn)題。
資源管理:共享資源的物聯(lián)網(wǎng)應(yīng)用程序中可能會(huì)發(fā)生資源沖突。解決沖突需要解決多個(gè)并發(fā)服務(wù)或應(yīng)用程序之間的資源分配沖突。
可擴(kuò)展性:大多數(shù)現(xiàn)有的物聯(lián)網(wǎng)中間件都以無(wú)線傳感器網(wǎng)絡(luò)(WSN)為中心,其網(wǎng)絡(luò)級(jí)可擴(kuò)展性也受到WSN的限制。在物聯(lián)網(wǎng)的超大規(guī)模網(wǎng)絡(luò)中,它們很有可能表現(xiàn)不佳。
可靠性:為了實(shí)現(xiàn)物聯(lián)網(wǎng)中間件的可靠性,中間件的每個(gè)組件或服務(wù)都需要易于更換。
互操作性:盡管大多數(shù)現(xiàn)有中間件都支持網(wǎng)絡(luò)互操作性,但也有一些中間件缺乏對(duì)語(yǔ)義和語(yǔ)法互操作性的支持。本體論缺乏標(biāo)準(zhǔn),這給物聯(lián)網(wǎng)帶來(lái)了巨大挑戰(zhàn)。
安全和隱私:盡管物聯(lián)網(wǎng)中使用的所有技術(shù)中的所有安全、隱私和信任問(wèn)題在物聯(lián)網(wǎng)環(huán)境中都有明確的體現(xiàn),但它們并不十分完整。
2.2區(qū)塊鏈面臨的挑戰(zhàn)
區(qū)塊鏈技術(shù)解決了部分已經(jīng)提到的物聯(lián)網(wǎng)挑戰(zhàn)。在這種情況下,需要了解區(qū)塊鏈挑戰(zhàn)。
存儲(chǔ)容量和可伸縮性:存儲(chǔ)容量和可伸縮性已在區(qū)塊鏈中得到深入研究。在這項(xiàng)技術(shù)中,以比特幣為例,鏈總是高速增長(zhǎng),并且在網(wǎng)絡(luò)中的節(jié)點(diǎn)之間存儲(chǔ)副本。雖然只有完整的節(jié)點(diǎn)存儲(chǔ)完整的鏈,但存儲(chǔ)需求非常重要。隨著規(guī)模的增長(zhǎng),節(jié)點(diǎn)需要越來(lái)越多的資源,從而降低了系統(tǒng)的容量規(guī)模。
安全性:此挑戰(zhàn)要求了解一些最常見的攻擊,例如51%攻擊或多數(shù)攻擊,即如果區(qū)塊鏈參與者能夠控制超過(guò)51%的采礦權(quán),則可能發(fā)生這種攻擊。
匿名性和數(shù)據(jù)隱私:在公共區(qū)塊鏈中,分類賬是公開的。然而,區(qū)塊鏈網(wǎng)絡(luò)中的所有交易對(duì)所有人都是公開可見的。從隱私角度來(lái)看,這是一個(gè)很大的問(wèn)題。
需要考慮與物聯(lián)網(wǎng)交互有關(guān)的另一個(gè)方面,即底層物聯(lián)網(wǎng)基礎(chǔ)設(shè)施之間的通信[5-6]。在集成區(qū)塊鏈時(shí),需要確定將在何處發(fā)生交互:在物聯(lián)網(wǎng)內(nèi)部、通過(guò)區(qū)塊鏈或涉及物聯(lián)網(wǎng)和區(qū)塊鏈的混合設(shè)計(jì),區(qū)塊鏈與物聯(lián)網(wǎng)集成如圖1所示。
物聯(lián)網(wǎng)-物聯(lián)網(wǎng):這種方法在延遲和安全性方面可能是最快的,因?yàn)樗梢悦摍C(jī)工作。物聯(lián)網(wǎng)設(shè)備必須能夠相互通信,通常涉及路由機(jī)制。只有一部分物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)在區(qū)塊鏈中,而物聯(lián)網(wǎng)交互在不使用區(qū)塊鏈的情況下發(fā)生,如圖1(a)所示。這種方法在具有可靠物聯(lián)網(wǎng)數(shù)據(jù)的場(chǎng)景中非常有用,因?yàn)槲锫?lián)網(wǎng)交互的延遲降低。
物聯(lián)網(wǎng)-區(qū)塊鏈:在這種方法中,所有交互都通過(guò)區(qū)塊鏈進(jìn)行,從而實(shí)現(xiàn)交互記錄的不可變。這種方法確保所有選擇的交互都是可追蹤的,因?yàn)樗鼈兊脑敿?xì)信息可以在區(qū)塊鏈中查詢,而且增加了物聯(lián)網(wǎng)設(shè)備的自主性。打算交易或租賃的物聯(lián)網(wǎng)應(yīng)用程序可以利用這種方法提供服務(wù)。然而,記錄區(qū)塊鏈中的所有交互將導(dǎo)致帶寬和數(shù)據(jù)的增加,這是區(qū)塊鏈中眾所周知的挑戰(zhàn)之一,如圖1(b)所示。另一方面,與這些交易相關(guān)的所有物聯(lián)網(wǎng)數(shù)據(jù)也應(yīng)存儲(chǔ)在區(qū)塊鏈中。
混合方式:混合設(shè)計(jì)中只有部分交互和數(shù)據(jù)發(fā)生在區(qū)塊鏈中,其余部分在物聯(lián)網(wǎng)設(shè)備之間直接共享。這種方法的挑戰(zhàn)之一是選擇哪些交互通過(guò)區(qū)塊鏈,并提供在運(yùn)行時(shí)決定這一點(diǎn)的方法。這種方法的完美協(xié)調(diào)將是集成這2種技術(shù)的最佳方式,因?yàn)樗昧藚^(qū)塊鏈的優(yōu)勢(shì)和實(shí)時(shí)物聯(lián)網(wǎng)交互的優(yōu)勢(shì)。如圖1(c)所示,在這種方法中,霧計(jì)算甚至云計(jì)算都可以發(fā)揮作用,以補(bǔ)充區(qū)塊鏈和物聯(lián)網(wǎng)的局限性。
實(shí)現(xiàn)基于物聯(lián)網(wǎng)的智能家庭網(wǎng)絡(luò),使用并集成物聯(lián)網(wǎng)和區(qū)塊鏈技術(shù),利用“物聯(lián)網(wǎng)-物聯(lián)網(wǎng)”方法集成這2種技術(shù),提出了一種智慧家庭體系結(jié)構(gòu),智能合約執(zhí)行如圖2所示,其中每個(gè)智慧家庭通過(guò)控制網(wǎng)關(guān)管理自己的專用傳感器網(wǎng)絡(luò),它可以共享來(lái)自該內(nèi)部網(wǎng)絡(luò)的數(shù)據(jù),并通過(guò)部署在區(qū)塊鏈網(wǎng)絡(luò)內(nèi)的智能合約提供對(duì)執(zhí)行機(jī)構(gòu)的訪問(wèn)。用戶或網(wǎng)絡(luò)提供商可以連接到相應(yīng)的智慧家庭,并與提供的智能合約交換數(shù)據(jù)。區(qū)塊鏈網(wǎng)絡(luò)內(nèi)的每個(gè)參與者都需要?jiǎng)?chuàng)建用于發(fā)送數(shù)據(jù)的交易。每個(gè)事務(wù)都使用非對(duì)稱安全算法進(jìn)行數(shù)字簽名和加密。這一優(yōu)勢(shì)提供了用戶、網(wǎng)絡(luò)提供商與家庭網(wǎng)絡(luò)之間的安全連接。另一方面,交易記錄保存在分類賬簿中,并且共享數(shù)據(jù)也保存在同一位置可用于進(jìn)一步分析。
智能合約提供了統(tǒng)一的接口,提高了智慧家庭與網(wǎng)絡(luò)提供商和用戶的互操作性。使用區(qū)塊鏈網(wǎng)絡(luò),網(wǎng)絡(luò)提供商不需要在每個(gè)家庭安裝自己的智能電表,也不需要提供自己的安全基礎(chǔ)設(shè)施。智慧家庭可以將傳感器數(shù)據(jù)和執(zhí)行器狀態(tài)共享到自己的智能合約中。網(wǎng)絡(luò)提供商可以連接到同一智能合約以提取數(shù)據(jù)。智能合約還可以用作第三方軟件,供消費(fèi)者通過(guò)互聯(lián)網(wǎng)安全連接到家庭中。
在區(qū)塊鏈網(wǎng)絡(luò)中,發(fā)起智能合約交易的參與者為智能合約的執(zhí)行支付天然氣費(fèi)用。為了減少控制網(wǎng)關(guān)調(diào)用智能合同的天然氣付款數(shù)量,可以使用2種方法:在第1種方法中,如果傳感器數(shù)據(jù)發(fā)生任何變化,控制網(wǎng)關(guān)可以將所有數(shù)據(jù)的交易發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)內(nèi)的智能合約;在第2種方法中,消費(fèi)者或網(wǎng)絡(luò)提供商可以發(fā)起請(qǐng)求傳感器數(shù)據(jù)的事務(wù)??刂凭W(wǎng)關(guān)從傳感器和執(zhí)行器提取所有數(shù)據(jù),并創(chuàng)建一個(gè)事務(wù)以將這些數(shù)據(jù)發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)。
專用家庭網(wǎng)絡(luò)基于2種網(wǎng)關(guān)體系結(jié)構(gòu):家庭內(nèi)部每個(gè)設(shè)備的網(wǎng)關(guān)(設(shè)備網(wǎng)關(guān))和單個(gè)控制網(wǎng)關(guān),通過(guò)與以太坊區(qū)塊鏈網(wǎng)絡(luò)上部署的智能合約交換數(shù)據(jù),提供與外部世界的連接。每個(gè)設(shè)備網(wǎng)關(guān)可以包含傳感器和執(zhí)行器,使用MQTT協(xié)議與控制網(wǎng)關(guān)通信??刂凭W(wǎng)關(guān)充當(dāng)MQTT代理,并為其傳感器和執(zhí)行器的每個(gè)設(shè)備網(wǎng)關(guān)提供特定主題。在試驗(yàn)實(shí)現(xiàn)中,設(shè)備網(wǎng)關(guān)由無(wú)線物聯(lián)網(wǎng)模塊ESP8266通過(guò)I2C接口連接TCN75A溫度傳感器實(shí)現(xiàn)。該平臺(tái)還提供WiFi網(wǎng)絡(luò)接口,用于連接控制網(wǎng)關(guān),并發(fā)送特定主題的溫度數(shù)據(jù)。為了實(shí)現(xiàn)控制網(wǎng)關(guān),使用了Olinuxino A20。它具有雙核A20處理器,1 GB的RAM和以太網(wǎng)接口,用于連接到Internet??刂凭W(wǎng)關(guān)已安裝go ethereum(geth)客戶端以連接區(qū)塊鏈,并安裝MQTT實(shí)現(xiàn)以充當(dāng)MQTT代理。Olinixuno A20平臺(tái)從特定主題(例如溫度主題)提取數(shù)據(jù),并通過(guò)JSON-RPC將這些數(shù)據(jù)發(fā)送到以太坊Ropsten測(cè)試區(qū)塊鏈網(wǎng)絡(luò)內(nèi)的智能合約。
基于區(qū)塊鏈的智慧家庭內(nèi)部網(wǎng)絡(luò)的構(gòu)建,涵蓋了各種計(jì)算能力有限的設(shè)備,降低了通信成本。區(qū)塊鏈與MQTT結(jié)合降低了控制網(wǎng)關(guān),維護(hù)大量協(xié)議與內(nèi)外部的網(wǎng)絡(luò)通信,以及使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)傳感器數(shù)據(jù),為進(jìn)一步分析提供條件。使用智能合約提供了統(tǒng)一的接口,也可以用作分布式計(jì)算。區(qū)塊鏈集成與智能合約功能相結(jié)合,有助于房屋與外部通信的安全性和互操作性。
參考文獻(xiàn)
[1]殷婷.賦能智能家居新體驗(yàn):區(qū)塊鏈能帶來(lái)什么?[J].機(jī)電信息,2019,(34):16.
[2]蔡曉晴,鄧堯,張亮,等.區(qū)塊鏈原理及其核心技術(shù)[J].計(jì)算機(jī)學(xué)報(bào),2021,44(1):84-131.
[3]黃倩怡,李志洋,謝文濤,等.智能家居中的邊緣計(jì)算[J].計(jì)算機(jī)研究與發(fā)展,2020,57(9):1800-1809.
[4]王基策,李意蓮,賈巖,等.智能家居安全綜述[J].計(jì)算機(jī)研究與發(fā)展,2018,55(10):2111-2124.
[5]葉欣宇,李萌,趙鋮澤,等.區(qū)塊鏈技術(shù)應(yīng)用于物聯(lián)網(wǎng):發(fā)展與展望[J].高技術(shù)通訊,2021,31(1):48-63.
[6]宋鵬程,沈寓實(shí),李昂達(dá).基于區(qū)塊鏈技術(shù)的可信任設(shè)備及其在物聯(lián)網(wǎng)中的應(yīng)用[J].中國(guó)科技信息,2018,(18):101-103.