




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)共享系統(tǒng)的設(shè)計(jì)摘要物聯(lián)網(wǎng)作為新一代信息技術(shù)的重要組成部分,目前已經(jīng)成為社會(huì)現(xiàn)代化發(fā)展的重要產(chǎn)業(yè),其目前已經(jīng)滲透到社會(huì)的方方面面,比如家居,交通運(yùn)輸,醫(yī)療服務(wù)等等都有物聯(lián)網(wǎng)的身影。而5G的到來,將開啟一個(gè)“萬物互聯(lián)”的時(shí)代,眾多的5G物聯(lián)網(wǎng)設(shè)備將接入互聯(lián)網(wǎng),設(shè)備數(shù)量上升的同時(shí)也會(huì)帶來物聯(lián)網(wǎng)數(shù)據(jù)的爆發(fā)式增長(zhǎng)。面對(duì)海量數(shù)據(jù),如何提供安全的數(shù)據(jù)共享是現(xiàn)在物聯(lián)網(wǎng)技術(shù)發(fā)展所需要解決的問題之一。當(dāng)前物聯(lián)網(wǎng)主要采用傳統(tǒng)中心化結(jié)構(gòu)——即從用戶到云端再到后臺(tái)的架構(gòu),這種結(jié)構(gòu)具有效率高,管理方便的優(yōu)點(diǎn),但它在信息的安全方面卻不斷爆發(fā)事故,數(shù)據(jù)易被泄露,無法溯源,容易丟失。區(qū)塊鏈技術(shù)的出現(xiàn)為物聯(lián)網(wǎng)現(xiàn)在所面臨的挑戰(zhàn)提供了一種新的解決方式,比如利用其擁有的去中心化特性減輕物聯(lián)網(wǎng)原有的中心計(jì)算、存儲(chǔ)和維護(hù)等方面的壓力;防篡改、可追溯的特性解決物聯(lián)網(wǎng)數(shù)據(jù)安全隱私方面的問題等等。針對(duì)物聯(lián)網(wǎng)數(shù)據(jù)存在數(shù)據(jù)安全、管理方面的需求,本文將區(qū)塊鏈技術(shù)與物聯(lián)網(wǎng)相結(jié)合,設(shè)計(jì)一個(gè)基于區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)分布式共享平臺(tái),利用區(qū)塊鏈技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的溯源,共享規(guī)則和數(shù)據(jù)交易數(shù)量進(jìn)行記錄與管理。在以太坊區(qū)塊鏈上部署智能合約。該系統(tǒng)包括數(shù)據(jù)上傳、數(shù)據(jù)查詢和交易功能等,不需要第三方參與交易,具備可視化界面,為解決現(xiàn)今物聯(lián)網(wǎng)數(shù)據(jù)共享所面臨的安全和溯源問題提供了一個(gè)可能性。關(guān)鍵字:區(qū)塊鏈,物聯(lián)網(wǎng),以太坊,智能合約[18]。智能合約誕生已久,它誕生之初是想要在脫離第三方可信權(quán)威的情況下,作為執(zhí)行合約條款的計(jì)算機(jī)交易協(xié)議,擔(dān)任合約各方共同信任的代理。受到當(dāng)時(shí)計(jì)算機(jī)發(fā)展的限制,智能合約在很長(zhǎng)一段時(shí)間內(nèi)沒有得到廣泛的應(yīng)用。直到2008年中本聰學(xué)者發(fā)布了比特幣白皮書后,其底層技術(shù)與智能合約有著相輔相成的天然聯(lián)系:區(qū)塊鏈借助智能合約的可編程特性來控制分布式系統(tǒng)中節(jié)點(diǎn)的復(fù)雜行為,智能合約則可依賴于區(qū)塊鏈提供的安全可信的執(zhí)行環(huán)境。自此,區(qū)塊鏈漸漸成為智能合約主要的計(jì)算場(chǎng)景。2.2.2智能合約開發(fā)平臺(tái)比特幣腳本。比特幣交易腳本語言可簡(jiǎn)稱為腳本(Script),是一種基于逆波蘭表示法的、基于堆棧,非圖靈完備的執(zhí)行語言,它由許多種操作碼構(gòu)成。比特幣交易是基于UTXO(UnspentTransactionOutput)的,首先要提供一個(gè)用于解鎖UTXO的解鎖腳本(Signaturescript),這是交易輸入;交易的輸出則是指向一個(gè)鎖定腳本(PubKeyscript),腳本中含有一個(gè)公鑰或者是數(shù)字簽名,誰擁有一個(gè)與之匹配的私鑰,比特幣就會(huì)支付給該用戶。每一個(gè)節(jié)點(diǎn)會(huì)通過同時(shí)執(zhí)行解鎖和上一個(gè)交易的鎖定腳本來驗(yàn)證一筆交易,執(zhí)行結(jié)果為真則為有效交易。比特幣腳本在一定程度上保證了比特幣交易的安全性,可以被視為智能合約早期的應(yīng)用。以太坊平臺(tái)是首個(gè)內(nèi)置圖靈完備編程語言的通用區(qū)塊鏈協(xié)議和全球共享分布式應(yīng)用平臺(tái)。用戶可以根據(jù)自己的想法在以太坊平臺(tái)上創(chuàng)建并執(zhí)行任何復(fù)雜的操作,從而高效、快速地開發(fā)出包括加密貨幣在內(nèi)的多種去中心化區(qū)塊鏈應(yīng)用(decentralizedapplication,DApp)。以太坊的核心是可執(zhí)行任意復(fù)雜算法編碼的以太坊虛擬機(jī)(Ethereumvirtualmachine,EVM),用戶可以使用諸如C++,Go,python等高級(jí)語言,也可以使用專為智能合約而生的Solidity,Serpent等語言來編寫智能合約。目前,以太坊已成為全球最大和最完善的共享分布式應(yīng)用平臺(tái)之一。超級(jí)賬本(Hyperledger)項(xiàng)目中的Fabric是由IBM領(lǐng)頭開發(fā)的致力于打造區(qū)塊鏈技術(shù)開源規(guī)范和標(biāo)準(zhǔn)的聯(lián)盟鏈。不同于比特幣和以太坊平臺(tái),超級(jí)賬本只允許獲得許可的商業(yè)聯(lián)盟組織參與、使用和維護(hù),由于聯(lián)盟鏈的特性,超級(jí)賬本也被認(rèn)為并非是完全區(qū)中心化的。超級(jí)賬本中的智能合約成為鏈碼(Chaincode),分為系統(tǒng)鏈上代碼和用戶鏈上代碼,分別對(duì)應(yīng)著系統(tǒng)級(jí)和用戶級(jí)應(yīng)用功能。Fabric選擇在Docker容器中執(zhí)行智能合約,而且它的智能合約和底層賬本是分隔開的,實(shí)現(xiàn)了數(shù)據(jù)與邏輯相分離,這就大大提升了可擴(kuò)展性,理論上,可以使用任何語言來編寫智能合約。除了上述三種智能合約平臺(tái)外,還有EOS、NEO、stellar等比較知名的智能合約開發(fā)平臺(tái)。2.3以太坊開發(fā)工具以太坊是由2015年由VitalikButerin通過眾籌融資推出。有關(guān)以太坊平臺(tái)的發(fā)展歷程在2.2.2中已經(jīng)詳細(xì)介紹過,這里不再贅述。在理想化的去中心化模型中,每個(gè)節(jié)點(diǎn)都是一個(gè)完整的區(qū)塊鏈節(jié)點(diǎn),這意味著想要正式使用一個(gè)去中心化應(yīng)用之前,用戶需要將完整的區(qū)塊鏈數(shù)據(jù)下載下來。但以比特幣系統(tǒng)為例,2019年區(qū)塊鏈里所有的區(qū)塊數(shù)據(jù)已經(jīng)接近170GB且還在不斷增長(zhǎng)中??紤]到計(jì)算機(jī)本身的能力并不能存儲(chǔ)如此龐大的數(shù)據(jù),而且不同的節(jié)點(diǎn)分工也不同,大部分節(jié)點(diǎn)并不需要將完完全全地驗(yàn)證區(qū)塊信息,因此如果要求每個(gè)用戶在使用去中心化應(yīng)用前要先運(yùn)行一個(gè)完整的區(qū)塊鏈節(jié)點(diǎn)是不切實(shí)際的。針對(duì)這種情況,區(qū)塊鏈領(lǐng)域相應(yīng)出現(xiàn)了一些解決方案,比如infura提供公開以太坊和測(cè)試節(jié)點(diǎn),或者是Metamask錢包等。有了這些工具,就不再需要花費(fèi)大量時(shí)間是空間去下載并運(yùn)行完整的區(qū)塊鏈節(jié)點(diǎn),也可以利用去中心化的特點(diǎn)來部署智能合約。當(dāng)然,最好還是下載完整的區(qū)塊鏈節(jié)點(diǎn),不過本系統(tǒng)受硬件限制,使用了Metamask插件。Truffle是目前比較流行的以太坊去中心化的應(yīng)用開發(fā)框架之一,是一個(gè)世界級(jí)的開發(fā)環(huán)境和測(cè)試框架,用戶可以在Truffle上快速創(chuàng)建、編譯、發(fā)布和測(cè)試去中心化的應(yīng)用。它內(nèi)置智能合約編譯、鏈接、部署和二進(jìn)制文件的管理,合約可以自動(dòng)進(jìn)行測(cè)試,以便快速開發(fā)。Metamask則是一個(gè)方便用戶通過瀏覽器和區(qū)塊鏈應(yīng)用交互的插件,集成web3API和Java使得用戶可以不需要運(yùn)行本地節(jié)點(diǎn)也能夠讀取區(qū)塊鏈中的數(shù)據(jù)和與去中心化的應(yīng)用進(jìn)行交互。區(qū)塊鏈的節(jié)點(diǎn)可以根據(jù)功能劃分為全節(jié)點(diǎn)和輕節(jié)點(diǎn)。全節(jié)點(diǎn)參與到區(qū)塊鏈信息的數(shù)據(jù)維護(hù)中,需要同步區(qū)塊鏈上所有的數(shù)據(jù),輕節(jié)點(diǎn)則主要在于讀取鏈上的數(shù)據(jù),不存儲(chǔ)完整的區(qū)塊鏈數(shù)據(jù),用戶雖然不能自己驗(yàn)證交易,但能夠獲悉區(qū)塊鏈網(wǎng)絡(luò)是否已經(jīng)認(rèn)可了該交易,這樣對(duì)于普通用戶則足夠了。除此之外,在前端界面實(shí)現(xiàn)上,我們使用了HTML和css、JavaScript技術(shù)。網(wǎng)頁主要有三部分構(gòu)成,結(jié)構(gòu)、表現(xiàn)和行為。HTML對(duì)應(yīng)著結(jié)構(gòu),決定網(wǎng)頁的結(jié)構(gòu)和內(nèi)容;css對(duì)應(yīng)著樣式,設(shè)定網(wǎng)頁的表現(xiàn)樣式;JavaScript是行為,它是面向Web編程語言,也是目前應(yīng)用最廣泛的編程語言之一,控制網(wǎng)頁的行為。2.4本章小結(jié)本章主要對(duì)系統(tǒng)所涉及到的一些技術(shù)和概念進(jìn)行了相關(guān)介紹。首先介紹了區(qū)塊鏈的整體層級(jí)架構(gòu),使得了解區(qū)塊鏈架構(gòu)中每層所用到的技術(shù)和理念。之后面對(duì)區(qū)塊鏈中幾個(gè)比較核心的技術(shù):區(qū)塊結(jié)構(gòu)、Merkle樹、共識(shí)算法和智能合約進(jìn)行了介紹。共識(shí)算法部分主要了解了幾種主流的共識(shí)算法以及它們的優(yōu)缺點(diǎn),智能合約部分主要介紹了智能合約的發(fā)展歷程和智能合約平臺(tái)。最后介紹了以太坊區(qū)塊鏈平臺(tái)和Truffle架構(gòu),這為在以太坊平臺(tái)上利用智能合約實(shí)現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)打下了堅(jiān)實(shí)的理論和技術(shù)基礎(chǔ)。第3章基于區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)本章首先在前兩章所敘述的技術(shù)背景與理論的基礎(chǔ)上,結(jié)合物聯(lián)網(wǎng)數(shù)據(jù)飛速增長(zhǎng)和物聯(lián)網(wǎng)本身存在的數(shù)據(jù)安全問題,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)基于區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)。首先,對(duì)物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)做功能需求分析和非功能需求分析;其次,結(jié)合需求分析對(duì)平臺(tái)從物理架構(gòu)設(shè)計(jì)、功能設(shè)計(jì)、智能合約設(shè)計(jì)、界面設(shè)計(jì)等方面展開敘述;最后,對(duì)基于區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)進(jìn)行功能測(cè)試。3.1需求分析需求分析是開發(fā)應(yīng)用必不可少的步驟,也是應(yīng)用開發(fā)的第一步驟。為了使開發(fā)出的應(yīng)用產(chǎn)品滿足平臺(tái)需求,它的基本任務(wù)是準(zhǔn)確的回答“系統(tǒng)做什么”這一問題。好的需求分析對(duì)于應(yīng)用設(shè)計(jì)和實(shí)現(xiàn)有著很大的助益。本小節(jié)結(jié)合物聯(lián)網(wǎng)、區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀,對(duì)本文研究的基于區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)平臺(tái)從總體需求、功能需求、非功能需求三方面展開分析。3.1.1總體需求描述本文研究的目的是基于以太坊區(qū)塊鏈技術(shù),設(shè)計(jì)并實(shí)現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái),利用區(qū)塊鏈技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的溯源,共享規(guī)則和數(shù)據(jù)交易數(shù)量進(jìn)行記錄與管理。隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,物聯(lián)網(wǎng)數(shù)據(jù)種類繁多,數(shù)據(jù)量龐大。目前現(xiàn)在常見的物聯(lián)網(wǎng)中心架構(gòu)對(duì)于物聯(lián)網(wǎng)數(shù)據(jù)的管理面臨著一些問題:運(yùn)營成本會(huì)隨著管理的物聯(lián)網(wǎng)設(shè)備數(shù)量以及設(shè)備產(chǎn)生的數(shù)據(jù)而快速增長(zhǎng),這給物聯(lián)網(wǎng)個(gè)體帶來了很大的成本壓力;物聯(lián)網(wǎng)領(lǐng)域也爆發(fā)過很多安全漏洞和數(shù)據(jù)泄露事件,比如說Facebook信息泄露事件,某公司通過Facebook收集了5000萬選民的個(gè)人資料,再利用這些資料設(shè)計(jì)軟件來預(yù)測(cè)和影響了美國大選的結(jié)果;物聯(lián)網(wǎng)中心架構(gòu)也會(huì)導(dǎo)致一旦中心服務(wù)器出現(xiàn)問題,整個(gè)物聯(lián)網(wǎng)都面臨著不能運(yùn)作的風(fēng)險(xiǎn)。而區(qū)塊鏈技術(shù)所有的去中心化、防篡改,可溯源等特性可以為上述問題帶來一種新的解決方案。3.1.2平臺(tái)功能需求分析1.數(shù)據(jù)上傳用戶將想要上傳至平臺(tái)的數(shù)據(jù)整理成文件形式之后上傳,平臺(tái)會(huì)為這份數(shù)據(jù)生成一個(gè)獨(dú)有的哈希值。上傳用例如表3.1所示。表SEQ表\*ARABIC3-1上傳用例用例名數(shù)據(jù)上傳執(zhí)行者用戶目標(biāo)獲得數(shù)據(jù)文件對(duì)應(yīng)的哈希值功能描述數(shù)據(jù)上傳范圍物聯(lián)網(wǎng)共享數(shù)據(jù)平臺(tái)前置條件用戶已登錄系統(tǒng)基本交互動(dòng)作用戶點(diǎn)擊“數(shù)據(jù)上傳”平臺(tái)跳轉(zhuǎn)到數(shù)據(jù)上傳界面用戶點(diǎn)擊“選擇文件”按鈕用戶將選擇好的文件上傳至平臺(tái)平臺(tái)生成哈希值后置條件如果用例成功,平臺(tái)停留在數(shù)據(jù)上傳界面2.出售數(shù)據(jù)用戶如果有想要出售的數(shù)據(jù),可以在出售數(shù)據(jù)商品界面上傳想要出售的數(shù)據(jù)的基本信息和數(shù)據(jù)內(nèi)容的描述。點(diǎn)擊發(fā)布數(shù)據(jù)即可開始售賣。出售數(shù)據(jù)用例如表3.2所示。表3-2出售用例用例名出售數(shù)據(jù)執(zhí)行者用戶(賣家)目標(biāo)完成出售操作功能描述數(shù)據(jù)上傳范圍物聯(lián)網(wǎng)共享數(shù)據(jù)平臺(tái)前置條件用戶已登錄系統(tǒng)基本交互動(dòng)作續(xù)表用戶點(diǎn)擊“出售數(shù)據(jù)商品”平臺(tái)跳轉(zhuǎn)到出售數(shù)據(jù)界面用戶輸入想要出售的數(shù)據(jù)的基本信息用戶點(diǎn)擊“發(fā)布數(shù)據(jù)”按鈕上傳成功后置條件如果用例成功,平臺(tái)停留在出售商品界面3.搜索數(shù)據(jù)用戶如果想在平臺(tái)上購買數(shù)據(jù),則可先在搜索數(shù)據(jù)商品界面輸入你想要的購買的數(shù)據(jù)的相關(guān)信息,來查找是否有你需要的數(shù)據(jù)。查詢數(shù)據(jù)商品的用例如表3-3所示。表3-3搜索數(shù)據(jù)用例名搜索數(shù)據(jù)執(zhí)行者用戶(買家)目標(biāo)完成查詢操作功能描述搜索數(shù)據(jù)范圍物聯(lián)網(wǎng)共享數(shù)據(jù)平臺(tái)前置條件用戶已登錄系統(tǒng)基本交互動(dòng)作用戶點(diǎn)擊“數(shù)據(jù)商品搜索”平臺(tái)跳轉(zhuǎn)到數(shù)據(jù)商品搜索界面用戶在文本框內(nèi)輸入關(guān)鍵詞用戶點(diǎn)擊“查詢”按鈕平臺(tái)根據(jù)用戶所輸入的關(guān)鍵詞展示相關(guān)的數(shù)據(jù)商品信息后置條件如果用例成功,平臺(tái)顯示商品信息4.購買數(shù)據(jù)用戶查找到自己想要的數(shù)據(jù)后,可以獲得相應(yīng)數(shù)據(jù)的ID和出售價(jià)格,在購買數(shù)據(jù)商品頁面輸入相應(yīng)的商品ID和價(jià)格,即可購買該數(shù)據(jù)商品。購買數(shù)據(jù)用例如表3-4所示。表3-4購買數(shù)據(jù)用例名搜索數(shù)據(jù)執(zhí)行者用戶(買家)目標(biāo)完成查詢操作功能描述搜索數(shù)據(jù)范圍物聯(lián)網(wǎng)共享數(shù)據(jù)平臺(tái)前置條件用戶已登錄系統(tǒng)基本交互動(dòng)作用戶點(diǎn)擊“數(shù)據(jù)商品購買”平臺(tái)跳轉(zhuǎn)到數(shù)據(jù)商品購買界面用戶在相應(yīng)表格內(nèi)容輸入ID和價(jià)格用戶點(diǎn)擊“購買”按鈕購買成功擴(kuò)展交互動(dòng)作1A:輸入信息有誤1.1:購買失敗后置條件如果用例成功,平臺(tái)停留在數(shù)據(jù)購買界面3.1.3非功能型需求分析開發(fā)一個(gè)應(yīng)用時(shí)不僅有功能上的需求,非功能需求就是對(duì)系統(tǒng)的整體要求。本平臺(tái)特殊的是智能合約的開發(fā),它不同于一般應(yīng)用的開發(fā),除了要注意基本的開發(fā)問題外,還要注意安全性問題等。前端界面需求前端界面的設(shè)計(jì)應(yīng)該盡量減少一些無用的元素和布置,盡量突出主要的功能,使頁面盡量簡(jiǎn)潔、簡(jiǎn)化用戶使用難度。根據(jù)功能合理劃分界面,使用戶很輕松就可以找到自己想要的功能。頁面也要適配大多數(shù)瀏覽器,防止出現(xiàn)不同瀏覽器頁面顯示不全或者變形的問題。平臺(tái)可靠性和安全性平臺(tái)應(yīng)該有著較低的出錯(cuò)率,在部分節(jié)點(diǎn)出現(xiàn)故障時(shí)平臺(tái)仍然能正常運(yùn)行。平臺(tái)存儲(chǔ)了大量數(shù)據(jù)商品信息和商品購買信息,數(shù)據(jù)泄露或者丟失將會(huì)帶巨大的損失。3.2平臺(tái)設(shè)計(jì)本小節(jié)主要從平臺(tái)總體角度講述平臺(tái)架構(gòu)以及各個(gè)層次起到的作用和所應(yīng)用到的技術(shù),然后講述如何應(yīng)用以太坊平臺(tái)和Truffle框架搭建開發(fā)環(huán)境。3.2.1平臺(tái)架構(gòu)區(qū)塊鏈技術(shù)最突出的特點(diǎn)就是去中心化,在實(shí)際應(yīng)用中與中心化應(yīng)用的差別主要體現(xiàn)在關(guān)鍵的應(yīng)用數(shù)據(jù)都儲(chǔ)存在區(qū)塊鏈中,而非放在相關(guān)的服務(wù)器中。用戶可以直接通過互聯(lián)網(wǎng)提交想要交易的物聯(lián)網(wǎng)數(shù)據(jù)至區(qū)塊鏈網(wǎng)絡(luò),可以在區(qū)塊聯(lián)網(wǎng)絡(luò)中直接寫入數(shù)據(jù)或者查詢數(shù)據(jù)。在本文研究的物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)中,物聯(lián)網(wǎng)數(shù)據(jù)的相關(guān)信息,包括商品ID、數(shù)據(jù)文件哈希值、數(shù)據(jù)類型等關(guān)鍵信息都存儲(chǔ)在區(qū)塊鏈中,這保證了物聯(lián)網(wǎng)數(shù)據(jù)的公開透明、不可篡改。平臺(tái)的架構(gòu)設(shè)計(jì)如圖3-1所示。圖3SEQ圖\*ARABIC\s11平臺(tái)架構(gòu)圖由圖3-1可以了解到,平臺(tái)架構(gòu)分為三層,分別是以太坊區(qū)塊鏈底層、服務(wù)層以及應(yīng)用層。在應(yīng)用層,用戶最先會(huì)接觸到的是前端界面。一個(gè)人性化的界面可以提高用戶的使用體驗(yàn)以及推動(dòng)平臺(tái)的發(fā)展。頁面設(shè)計(jì)采用了傳統(tǒng)的HTML和css技術(shù),并且使用了前端框架bootstrap。Bootstrap是目前最流行的前端框架之一,它主要用于設(shè)計(jì)構(gòu)建響應(yīng)式、移動(dòng)設(shè)備優(yōu)先的網(wǎng)站。其內(nèi)置的流式柵格系統(tǒng),隨著屏幕或者是網(wǎng)頁尺寸的增加,系統(tǒng)會(huì)自動(dòng)分為最多12列,可以讓應(yīng)用隨著屏幕的大小變化而隨之改變。服務(wù)層中的Node技術(shù)是提供服務(wù)的核心,也是用來支撐整個(gè)應(yīng)用的運(yùn)行,它在服務(wù)端還負(fù)責(zé)復(fù)雜的邏輯控制。Node.js作為服務(wù)器,它和以太坊官方推薦使用的操作接口庫web3.js都是面向JavaScript語言的。若直接使用瀏覽器JavaScript也可以用來操作以太坊區(qū)塊鏈,但是這樣的應(yīng)用程序的架構(gòu)的可擴(kuò)展性就會(huì)很差,而選擇增加了服務(wù)器后平臺(tái)的可擴(kuò)展性和可維護(hù)性都會(huì)有一定的提升,所以本文選擇了既能滿足區(qū)塊鏈接口需求,又能起到優(yōu)化系統(tǒng)架構(gòu)作用的Node.js作為服務(wù)器。最后的是以太坊區(qū)塊鏈底層,它承擔(dān)著數(shù)據(jù)存儲(chǔ)和建立互信機(jī)制的用處。以太坊對(duì)區(qū)塊鏈已經(jīng)做過了一層封裝,其在底層區(qū)塊鏈網(wǎng)絡(luò)的基礎(chǔ)上建立了智能合約層,這一層中包括了EVM虛擬機(jī)和智能合約。以太坊不但可以在區(qū)塊鏈上來存儲(chǔ)數(shù)據(jù),還可以在鏈上存儲(chǔ)智能合約的代碼,并且在以太坊提供的虛擬機(jī)上執(zhí)行合約代碼。這里我們使用了以太坊平臺(tái)提供的開發(fā)框架Truffle。Truffle是一套針對(duì)以太坊的類JavaScript語言的Solidity語言的高度集成的開發(fā)框架,極大簡(jiǎn)化了開發(fā)和調(diào)試的過程,使用Truffle框架,可以很簡(jiǎn)單的就完成智能合約的開發(fā),測(cè)試和部署。3.2.2web.js函數(shù)庫為了簡(jiǎn)單便捷地構(gòu)建基于web的去中心化平臺(tái),以太坊還提供了一個(gè)JavaScript庫web3,js,這個(gè)函數(shù)庫封裝了以太坊節(jié)點(diǎn)的API協(xié)議,為用戶開發(fā)過程中提供了一系列與以太坊交互的JavaScript對(duì)象和函數(shù),如表3-5中列舉了幾個(gè)比較常用的函數(shù)名稱及其功能。表3-5web3常見函數(shù)名稱和功能函數(shù)名稱功能web3.eth.personal.newAccount創(chuàng)建新賬戶web3.eth.getBlock返回塊號(hào)或這區(qū)塊哈希值所對(duì)應(yīng)的區(qū)塊web3.eth.getBlockTransactionCount返回指定區(qū)塊的交易數(shù)量web3.eth.getTransaction返回匹配指定交易哈希值的交易web3.eth.getTransactionCount返回指定地址發(fā)起的交易數(shù)智能合約在編輯的時(shí)候會(huì)生成一個(gè)二進(jìn)制字節(jié)碼和對(duì)應(yīng)的json接口。json接口是用來描述以太坊智能合約的應(yīng)用程序的二進(jìn)制接口的json對(duì)象。通過這一個(gè)json接口,web3.js使用web3.eth.Contract對(duì)象來創(chuàng)建表示智能合約及其方法、事件的JavaScript對(duì)象。而面對(duì)使用平臺(tái)的用戶來說,當(dāng)然不能讓用戶在命令行調(diào)用web3函數(shù)來與合約交互,因此在服務(wù)層需要對(duì)智能合約代碼進(jìn)行一次封裝。首先實(shí)例化一個(gè)web3對(duì)象,代碼如表3-6所示。表3-6創(chuàng)建web3對(duì)象實(shí)例initWeb3:
function()
{
//
重構(gòu)條件
if
(typeof
web3
!==
'undefined')
{
//如果Metamask已經(jīng)提供了一個(gè)web3實(shí)例
App.web3Provider
=
web3.currentProvider;
ethereum.enable();
web3
=
new
Web3(web3.currentProvider);
}
else
{
//
如果沒有提供web3實(shí)例,則指定為默認(rèn)實(shí)例
App.web3Provider
=
new
Wviders.HttpProvider('http://localhost:7545');ethereum.enable();
web3
=
new
Web3(App.web3Provider);
}
return
App.initContract();
},如果已經(jīng)有了實(shí)例化的web3對(duì)象,那就直接獲取它的支持,并用來創(chuàng)建我們自己的web3對(duì)象,比如Mist錢包或者是插件形式的Metamask輕量型錢包,在啟動(dòng)后就會(huì)自動(dòng)注冊(cè)一個(gè)屬于自己的web3實(shí)例。如果沒有已經(jīng)存在的web3實(shí)例,就可以使用基于infura提供的遠(yuǎn)程節(jié)點(diǎn)創(chuàng)建自己的web3對(duì)象。創(chuàng)建web3對(duì)象后就可以通過web3和以太坊進(jìn)行交互了。這個(gè)時(shí)候就需要實(shí)例化一個(gè)智能合約,一邊web3知道智能合約的位置并與其進(jìn)行交互,這個(gè)過程可以依賴于Truffle框架中的truffle-contract庫來處理,代碼如表3-7所示。表3-7初始化智能合約initContract:function(){$.getJSON("Election.json",function(election){//初始化合約App.contracts.Election=TruffleContract(election);//連接與合約進(jìn)行交互App.contracts.Election.setProvider(App.web3Provider);App.listenForEvents();returnApp.render();});},在實(shí)例化合約之后,需要web3對(duì)象的支持,因?yàn)榍懊嬉呀?jīng)完成web3對(duì)象的實(shí)例化并且取得了web3的值,這里只需要直接將其提供給智能合約作為web3節(jié)點(diǎn)支持即可。3.2.3環(huán)境搭建以太坊中,網(wǎng)頁通過HTTP的遠(yuǎn)程過程調(diào)用(RemoteProcedureCall,RPC)與區(qū)塊鏈節(jié)點(diǎn)通信。web.js封裝了以太坊全部的RPC調(diào)用,因此利用它就可以與區(qū)塊鏈進(jìn)行交互,這樣就減輕了開發(fā)者的工作,不必再手寫RPC請(qǐng)求包了。而以太坊的Truffle架構(gòu)則對(duì)web3.js再次進(jìn)行了封裝,簡(jiǎn)化了實(shí)現(xiàn)去中心化應(yīng)用前期的搭建工作。在Truffle中編寫、部署智能合約,同時(shí)也可以編寫前端的代碼,這樣就可以直接創(chuàng)建一個(gè)完整的去中心化應(yīng)用。首先搭建智能合約的開發(fā)環(huán)境,安裝Node.js。Node.js是一個(gè)可以使JavaScript運(yùn)行在服務(wù)器的開發(fā)平臺(tái)。安裝完畢后,首先將Node.js中自帶的包管理工具npm切換至淘寶鏡像,切換命令為:npmconfigsetregistry。驗(yàn)證是否切換成功:npmconfiggetregistry。最后,下載Truffle框架,安裝命令為:npminstall-gtruffle,其提供了大多數(shù)的項(xiàng)目模板,可以快速搭建一個(gè)去中心化應(yīng)用的代碼骨架。項(xiàng)目結(jié)構(gòu)如表3-6所示表3-6項(xiàng)目結(jié)構(gòu)文件/文件夾名稱所包含的內(nèi)容contracts主要防止智能合約的代碼,使用solidity用語言migrations用來處理、部署智能合約,又稱之為移植test智能合約測(cè)試用例truffle.js對(duì)智能合約部署進(jìn)行相關(guān)配置合約部署完成后,就需要本地的web服務(wù)器提供服務(wù)的訪問,Truffle框架可以解決這個(gè)問題,它直接提供了一個(gè)lite-server,可以直接使用,在package.json文件中有提到:"dev":"lite-server"。所以如果想啟動(dòng)項(xiàng)目,可以使用npmrundev命令,它會(huì)自動(dòng)啟動(dòng)lite-server,啟用本地的web服務(wù)器。3.3平臺(tái)功能的設(shè)計(jì)與實(shí)現(xiàn)本平臺(tái)的功能都是圍繞著交易物聯(lián)網(wǎng)數(shù)據(jù)展開的,平臺(tái)的智能合約代碼是由Solidity語言編寫,Solidity語言在語法上與JavaScript語言十分相似。下面介紹一下智能合約中所實(shí)現(xiàn)的功能。本平臺(tái)智能合約文件名是Election.sol。智能合約中有一個(gè)全局變量productNonce,用來存儲(chǔ)區(qū)塊鏈中正在出售的數(shù)據(jù)數(shù)量;一個(gè)映射mapping(uint=>iotProduct)products用作物聯(lián)網(wǎng)數(shù)據(jù)商品索引;一個(gè)結(jié)構(gòu)體iotProduct,其具體結(jié)構(gòu)如圖3-2所示。圖3SEQ圖\*ARABIC\s12iotProduct結(jié)構(gòu)體智能合約中主要完成了上傳物聯(lián)網(wǎng)數(shù)據(jù)商品和購買物聯(lián)網(wǎng)數(shù)據(jù)兩個(gè)功能。上傳物聯(lián)網(wǎng)數(shù)據(jù)商品流程如圖3-3所示。圖3SEQ圖\*ARABIC\s13上傳數(shù)據(jù)流程物聯(lián)網(wǎng)數(shù)據(jù)賣方首先會(huì)通過前端界面發(fā)起數(shù)據(jù)上傳請(qǐng)求,智能合約會(huì)檢查賣家所上傳的物聯(lián)網(wǎng)數(shù)據(jù)類型是否合理、設(shè)置的價(jià)格是否大于零,如果不滿足上述條件則直接退出。滿足以上條件后,全局變量productNonce是用來記錄正在出售的數(shù)據(jù)的數(shù)量,現(xiàn)在有一條新的物聯(lián)網(wǎng)數(shù)據(jù)商品要上傳至區(qū)塊鏈,所以productNonce自增。創(chuàng)建一個(gè)iotProduct變量存儲(chǔ)數(shù)據(jù)信息,為該物聯(lián)網(wǎng)數(shù)據(jù)創(chuàng)建一個(gè)所以并存入映射products中。最后一步是觸發(fā)事件,代碼如表3-8所示.表3-8事件以及觸發(fā)事件的代碼//創(chuàng)建數(shù)據(jù)商品事件eventIotProductCreated(uintid,stringtype,uintprice,addresspayableowner,boolpurchased,stringhashNum,uintcreateTime);//觸發(fā)事件代碼emitIotProductCreated(productNonce,_type,_price,msg.sender,false,_hashNum,bnum);事件(event)是以太坊虛擬機(jī)日志基礎(chǔ)設(shè)施提供的一個(gè)便利接口,日志是一種區(qū)塊鏈上的特殊數(shù)據(jù)結(jié)構(gòu)。當(dāng)事件被觸發(fā)的時(shí)候,會(huì)觸發(fā)參數(shù)存儲(chǔ)到交易的日志中。這些日志與合約的地址關(guān)聯(lián),并記錄到區(qū)塊鏈中。emit操作就是觸發(fā)事件,簡(jiǎn)單來說就是生成一個(gè)日志并被記錄到區(qū)塊鏈中。這里將函數(shù)中的參數(shù)介紹一下:productNonce,type,price之前都有過介紹,msg.sender則是取上傳數(shù)據(jù)的用戶的區(qū)塊鏈地址,false則對(duì)應(yīng)著purchased參數(shù),hashNum是賣方想要售賣的數(shù)據(jù)文件的哈希值,bnum則是創(chuàng)建時(shí)間。購買物聯(lián)網(wǎng)數(shù)據(jù)功能流程如圖3-4所示。物聯(lián)網(wǎng)數(shù)據(jù)買方首先會(huì)通過前端界面發(fā)起數(shù)據(jù)購買的請(qǐng)求,并傳入想要購買的物聯(lián)網(wǎng)數(shù)據(jù)的ID和價(jià)格。智能合約會(huì)檢查該買家輸入的物聯(lián)網(wǎng)數(shù)據(jù)商品ID是否存在,買家的賬戶中是否有著足夠的代幣來購買該商品,商品是否已經(jīng)出售,買家和賣家是否是同一人。如果上面這些條件有一條不滿足則會(huì)直接退出函數(shù)。如果全部滿足則變更數(shù)據(jù)商品的所有者、變更該商品數(shù)據(jù)中的purchased一項(xiàng)的值,改false為true,標(biāo)志著該商品已經(jīng)被售賣出去,將買家所需付的代幣轉(zhuǎn)至賣家的賬戶中,最后觸發(fā)事件。購買數(shù)據(jù)與上傳數(shù)據(jù)的事件函數(shù)相差不多,只不過購買數(shù)據(jù)只需要改變?cè)撋唐分械膸醉?xiàng)信息,而上傳數(shù)據(jù)則是新建一個(gè)商品,需要全部的信息。圖3SEQ圖\*ARABIC\s14購買數(shù)據(jù)流程圖除了本平臺(tái)所涉及的智能合約文件外,Truffle框架還需要一個(gè)移植合約,Migrations。移植是指由一些JavaScript文件(遷移腳本)組成來幫助將智能合約部署到以太坊網(wǎng)絡(luò)。這些文件負(fù)責(zé)暫存我們的部署任務(wù),假設(shè)我們的部署需求會(huì)隨著事件的推移而發(fā)生變化。隨著項(xiàng)目的發(fā)展,我們將創(chuàng)建新的JavaScript文件,以進(jìn)一步推動(dòng)區(qū)塊鏈的發(fā)展。先前運(yùn)行的部署記錄會(huì)通過一個(gè)特殊的Migrations合約記錄在鏈上。當(dāng)你開啟一個(gè)新的基于以太坊區(qū)塊鏈和Truffle開發(fā)框架的項(xiàng)目,就會(huì)自動(dòng)獲得一個(gè)Migrations合約。Migrations合約具體內(nèi)容如表3-9所示。表3-9Migrations合約代碼pragmasolidity^0.5.0;contractMigrations{addresspublicowner;uintpubliclast_completed_migration;modifierrestricted(){if(msg.sender==owner)_;}constructor()public{owner=msg.sender;}functionsetCompleted(uintcompleted)publicrestricted{last_completed_migration=completed;}functionupgrade(addressnew_address)publicrestricted{Migrationsupgraded=Migrations(new_address);upgraded.setCompleted(last_completed_migration);}3.4前端功能設(shè)計(jì)實(shí)現(xiàn)平臺(tái)前端頁面的設(shè)計(jì)既需要考慮到完整地展示平臺(tái)所有的功能,又要注重用戶的使用體驗(yàn)和方便用戶操作。本平臺(tái)所使用到的Bootstrap架構(gòu)可以很大程度的優(yōu)化頁面布局,是頁面更加簡(jiǎn)潔干凈,并且可以適應(yīng)大部分的瀏覽器。所以基于Bootstrap柵格系統(tǒng)的基礎(chǔ)上涉及了導(dǎo)航欄、面板等元素。在Truffle開發(fā)框架中,與前端和腳本相關(guān)的文件都會(huì)存放在src文件夾中。該文件夾中還有css、fonts、js文件夾和平臺(tái)的html文件,比如index.html網(wǎng)頁中就是平臺(tái)的主頁內(nèi)容,也是物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)啟動(dòng)時(shí)會(huì)進(jìn)入的界面。js文件夾中包含了所有為網(wǎng)頁添加了交互功能的代碼,在這里我們還實(shí)現(xiàn)了查詢物聯(lián)網(wǎng)數(shù)據(jù)商品的功能;css文件夾包含了為主頁內(nèi)容添加樣式的css樣式表?,F(xiàn)在已經(jīng)擁有了可以部署到以太坊區(qū)塊鏈的智能合約和用html語言寫的前端界面,那么接下來就是如何解決前端界面與智能合約的互動(dòng),包括在前端界面對(duì)合約中的函數(shù)方法進(jìn)行調(diào)用和將在前端界面輸入的數(shù)據(jù)存儲(chǔ)到實(shí)例合約中。智能合約部署到以太坊區(qū)塊鏈之后就會(huì)自動(dòng)創(chuàng)建一個(gè)抽象合約,它和正常的抽象函數(shù)一樣,不能調(diào)用,只能繼承。那么如何解決上面所述的問題呢?首先我們要對(duì)合約進(jìn)行實(shí)例化,也就是繼承剛才所說的抽象合約。合約實(shí)例化完成之后,就可以調(diào)用編寫的智能合約函數(shù)方法與前端互動(dòng)。如果檢測(cè)到有狀態(tài)的變化就會(huì)生成新的區(qū)塊并且部署到區(qū)塊鏈上。當(dāng)然如果沒有檢測(cè)到狀態(tài)的改變,也不會(huì)形成新的區(qū)塊。3.5物聯(lián)網(wǎng)共享數(shù)據(jù)平臺(tái)應(yīng)用測(cè)試3.5.1測(cè)試環(huán)境本平臺(tái)主要依賴的環(huán)境如下:操作系統(tǒng):Windows10區(qū)塊鏈網(wǎng)絡(luò):Ethereum處理器:2.8GHzIntelCorei7內(nèi)存:8GB開發(fā)語言:智能合約部分:Solidity前端:JavaScript和HTML語言測(cè)試環(huán)境:谷歌瀏覽器、Metamask插件、以太坊節(jié)點(diǎn)仿真器ganache在進(jìn)行功能測(cè)試之前,需要安裝Metamask錢包,它是一款谷歌瀏覽器上的一種插件類型的以太坊錢包,這種錢包不需要下載,很方便。首先我們需要注冊(cè)一個(gè)Metamask賬號(hào),注冊(cè)賬號(hào)成后它會(huì)生成一組隨機(jī)的助記詞,為12個(gè)英文單詞。有了Metamask賬號(hào)后,將平臺(tái)所在本地私有鏈地址添加至連接的網(wǎng)絡(luò),這樣就可以通過Metamask登錄平臺(tái)。檢查Truffle.js的配置,里面的信息有:合約的部署網(wǎng)絡(luò)、發(fā)布合約的節(jié)點(diǎn)和部署合約所需要的交易費(fèi)用(gas)。這里可以使用兩種節(jié)點(diǎn),分別是infura提供的在線節(jié)點(diǎn)和節(jié)點(diǎn)仿真器。infura提供的在線節(jié)點(diǎn)可以發(fā)布到以太坊的ropsten測(cè)試網(wǎng),節(jié)點(diǎn)仿真器則只能在本地網(wǎng)絡(luò)進(jìn)行測(cè)試,這里選擇節(jié)點(diǎn)仿真器在本地網(wǎng)絡(luò)進(jìn)行測(cè)試,truffle.js中的內(nèi)容如表3-10所示。表3-10Truffle.js文件代碼networks:{development:{host:"",port:7545,network_id:"*"http://Matchanynetworkid},develop:{port:5777}ganache的前身是testRPC,它是將testRPC包裝成可視化界面形式。ganache可以快速啟動(dòng)個(gè)人以太坊區(qū)塊鏈,并可以用它來運(yùn)行測(cè)試、執(zhí)行命令、檢查狀態(tài)、同時(shí)控制鏈條的運(yùn)行方式。通過ganache可以查看所有賬戶的當(dāng)前狀態(tài),包括他們的地址、私鑰、交易信息和賬戶代幣余額,還可以查看ganache內(nèi)部區(qū)塊鏈的日志輸出,包括響應(yīng)和其他重要的調(diào)試信息。ganache能檢查所有區(qū)塊和交易信息,使用它來測(cè)試非常方便。Ganache會(huì)通過開啟一個(gè)私有鏈來進(jìn)行開發(fā)測(cè)試,默認(rèn)會(huì)在7545端口上運(yùn)行一個(gè)開發(fā)鏈。確認(rèn)truffle.js的配置沒有問題后,以管理員的身份打開命令行,進(jìn)入項(xiàng)目所在文件夾,輸入trufflecompile,對(duì)智能合約進(jìn)行編譯,如圖3-5所示。圖3SEQ圖\*ARABIC\s15編譯結(jié)果智能合約編譯完成后,在命令行中輸入trufflemigrate,如果是想要進(jìn)行重新部署的話,可以輸入trufflemigrate–reset,這條命令的作用是對(duì)智能合約進(jìn)行發(fā)布,部署結(jié)果如圖3-6所示。圖3SEQ圖\*ARABIC\s16部署結(jié)果此時(shí)觀察ganache中私有開發(fā)鏈的情況如圖3-7所示,可以觀察到當(dāng)前區(qū)塊高度為4。圖3SEQ圖\*ARABIC\s17ganache私有開發(fā)連當(dāng)前情況最后需要本地的web服務(wù)器提供網(wǎng)頁的訪問,由于Truffle開發(fā)框架中已經(jīng)提供了輕量級(jí)的服務(wù)器lite-server,所以直接在命令行中輸入命令npmrundev就可以啟用lite-server,自動(dòng)進(jìn)入物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái),結(jié)果如圖3-8所示。圖3SEQ圖\*ARABIC\s18利用lite-server提供網(wǎng)頁訪問3.5.2功能測(cè)試以上步驟就完成了測(cè)試環(huán)境的部署,接下來就逐一對(duì)應(yīng)用的各個(gè)功能進(jìn)行一個(gè)簡(jiǎn)單的測(cè)試。首先用戶如果想登陸物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái),則需注冊(cè)一個(gè)Metamask錢包,輸入自己的私鑰,如果沒有私鑰則不能登陸本系統(tǒng)。平臺(tái)主頁面如圖3-9所示。圖39平臺(tái)主界面點(diǎn)擊數(shù)據(jù)上傳按鈕,進(jìn)入數(shù)據(jù)上傳界面,如果想獲得數(shù)據(jù)文件的哈希值,則直接選中你想要哈希值的文件,上傳至平臺(tái)就可以生成一個(gè)哈希值。用戶如果有想要出售的數(shù)據(jù),則可以先生成哈希之后,點(diǎn)擊出售數(shù)據(jù)商品界面,填寫數(shù)據(jù)商品信息,點(diǎn)擊出售即可,如圖3-10所示。圖310出售商品界面如果用戶想要在平臺(tái)上查詢是否有自己需要的數(shù)據(jù)文件,可以在查詢數(shù)據(jù)商品界面,輸入想要的物聯(lián)網(wǎng)數(shù)據(jù)的關(guān)鍵詞,點(diǎn)擊查詢即可獲得結(jié)果,查詢界面如圖3-11所示。如果用戶找到了自己心儀的數(shù)據(jù)并且查看價(jià)格后覺得合理則可以點(diǎn)擊購買數(shù)據(jù)商品界面進(jìn)行購買,購買界面如圖3-12所示,在購買界面也可以查看正在出售的數(shù)據(jù)商品信息。圖3-11查詢出售中的物聯(lián)網(wǎng)數(shù)據(jù)界面圖3-12購買數(shù)據(jù)界面3.6本章小結(jié)本章首先對(duì)基于區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)進(jìn)行需求分析,分為總體需求分析、功能性需求分析和非功能需求分析。完成需求分析后,設(shè)計(jì)了平臺(tái)的總體架構(gòu)并且對(duì)架構(gòu)組成進(jìn)行了詳細(xì)的介紹;對(duì)平臺(tái)所需要實(shí)現(xiàn)的功能進(jìn)行基本的用例設(shè)計(jì),介紹了需要用到的web3.js函數(shù)庫,為接下來物聯(lián)網(wǎng)共享數(shù)據(jù)平臺(tái)的實(shí)現(xiàn)打下了良好的基礎(chǔ)。接下來詳細(xì)介紹了基于區(qū)塊鏈的物聯(lián)網(wǎng)應(yīng)用平臺(tái)的實(shí)現(xiàn),首先介紹了所需要的兩個(gè)智能合約文件以及它們包含的函數(shù)功能流程圖,接著介紹了實(shí)現(xiàn)前端界面的工具和方法。最后對(duì)平臺(tái)進(jìn)行了功能測(cè)試,其中介紹了測(cè)試所需要用到的工具,基本滿足設(shè)計(jì)要求。第4章總結(jié)與展望4.1論文工作總結(jié)隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展和5G通信技術(shù)商業(yè)化進(jìn)程的加快,可以預(yù)見未來大量的物聯(lián)網(wǎng)設(shè)備會(huì)接入至互聯(lián)網(wǎng)中,數(shù)以千億計(jì)的物聯(lián)網(wǎng)設(shè)備所收集、上傳的數(shù)據(jù)量會(huì)無比的龐大。而過快增長(zhǎng)的數(shù)據(jù)量也會(huì)給物聯(lián)網(wǎng)傳統(tǒng)中心架構(gòu)體系帶來很大的壓力和數(shù)據(jù)安全隱私問題。區(qū)塊鏈?zhǔn)悄壳霸谛畔a(chǎn)業(yè)很受歡迎的一項(xiàng)技術(shù),它起源于比特幣白皮書,最早作為代幣的底層技術(shù)出現(xiàn)在大眾的眼前,是融合了密碼學(xué)、共識(shí)機(jī)制、點(diǎn)對(duì)點(diǎn)傳輸、分布式系統(tǒng)的技術(shù)的新型應(yīng)用。由于它所具有的去中心化,不可篡改、可追溯等特性正好可以用來解決目前物聯(lián)網(wǎng)技術(shù)面臨的數(shù)據(jù)易丟失、被篡改、不完整的問題。本文的主要研究工作如下:1.通過閱讀文獻(xiàn),我們了解到現(xiàn)在物聯(lián)網(wǎng)的發(fā)展遇到了很多新的挑戰(zhàn),區(qū)塊鏈作為一種新興的分布式數(shù)據(jù)賬本技術(shù),可以為物聯(lián)網(wǎng)提供一個(gè)分布式去中心化可信任的平臺(tái),幫助物聯(lián)網(wǎng)解決現(xiàn)有的數(shù)據(jù)安全隱私以及信任問題,物聯(lián)網(wǎng)與區(qū)塊鏈技術(shù)的結(jié)合已經(jīng)變成一個(gè)非常值得研究的一個(gè)科研方向。目前區(qū)塊鏈物聯(lián)網(wǎng)在智能家居,物流,傳感器,供應(yīng)鏈等領(lǐng)域都有很大的發(fā)展前景。國內(nèi)外很多學(xué)者也在對(duì)這個(gè)新興研究方向進(jìn)行開拓。但現(xiàn)在區(qū)塊鏈與物聯(lián)網(wǎng)的結(jié)合還處在起步階段,針對(duì)物聯(lián)網(wǎng)的區(qū)塊鏈的底層技術(shù)還有待開發(fā)。我們也意識(shí)到在利用區(qū)塊鏈保障物聯(lián)網(wǎng)數(shù)據(jù)隱私安全方面,針對(duì)不斷增長(zhǎng)的物聯(lián)網(wǎng)數(shù)據(jù),如何整合不同物聯(lián)網(wǎng)設(shè)備提供的相關(guān)數(shù)據(jù),是共享的背景和需求。2.了解了區(qū)塊鏈技術(shù)的起源與發(fā)展歷程,深入研究了區(qū)塊鏈的底層技術(shù),對(duì)日志、區(qū)塊等底層數(shù)據(jù)結(jié)構(gòu)以及相關(guān)技術(shù)進(jìn)行分析,如共識(shí)算法、智能合約,以及哈希算法、數(shù)字簽名等密碼學(xué)技術(shù)。深入研究以太坊平臺(tái)的架構(gòu)和使用方法,為基于以太坊區(qū)塊鏈實(shí)現(xiàn)物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)打下了堅(jiān)實(shí)的理論和技術(shù)基礎(chǔ)。3.對(duì)物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái)進(jìn)行了需求分析,詳細(xì)分析了總體需求、功能需求、非功能需求。根據(jù)需求分析的工作,設(shè)計(jì)了平臺(tái)具體的功能模塊,詳細(xì)闡述了智能合約的設(shè)計(jì)、前端界面設(shè)計(jì)以及前后端交互處理以及所用到的應(yīng)用接口,并對(duì)系統(tǒng)進(jìn)行了功能測(cè)試。綜上所述,本文為如何利用區(qū)塊鏈技術(shù)為飛速增長(zhǎng)的物聯(lián)網(wǎng)數(shù)據(jù)提供一種解決方案,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái),并對(duì)平臺(tái)進(jìn)行了簡(jiǎn)單的功能測(cè)試。4.2未來展望本文設(shè)計(jì)了一種基于以太坊區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)共享平臺(tái),但仍然存在著很多不足需要進(jìn)一步的改進(jìn):本文完成了物聯(lián)網(wǎng)數(shù)據(jù)交易模塊,目前功能較為單一,需要在后期不斷地進(jìn)行完善,同時(shí)數(shù)據(jù)交易時(shí)的買家和賣家不能及時(shí)的進(jìn)行相互溝通,需要增添新的模塊進(jìn)行輔助,比如說還價(jià)功能或者是聊天功能等,因此接下來需要進(jìn)一步完善系統(tǒng)功能。目前平臺(tái)的前端界面還不夠完善,比如說需要提示用戶輸入的錯(cuò)誤信息等。目前區(qū)塊鏈在物聯(lián)網(wǎng)的應(yīng)用是很多學(xué)者關(guān)注的研究方向,本文是利用區(qū)塊鏈技術(shù)對(duì)解決物聯(lián)網(wǎng)數(shù)據(jù)安全進(jìn)行了初次的嘗試,要做成一個(gè)可用性強(qiáng)、運(yùn)行穩(wěn)定的區(qū)塊鏈去中心化應(yīng)用還需要不斷的探索和努力。參考文獻(xiàn)BiswasAR,GiaffredaR.IoTandcloudconvergence:Opportunitiesandchallenges[C]//InternetofThings.IEEE,2014:375-376.張潮,劉茜,馮鋒.基于區(qū)塊鏈的物聯(lián)網(wǎng)技術(shù)應(yīng)用研究[J].無線互聯(lián)科技,2018,015(015):19-21.Kumar,Pardeep.FutureInternet
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇教版四年級(jí)數(shù)學(xué)應(yīng)用題專項(xiàng)訓(xùn)練
- 疼痛科患者管理流程優(yōu)化方案
- 倡導(dǎo)綠色生活主題班會(huì)教案
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)戰(zhàn)案例
- 連鎖超市庫存管理系統(tǒng)設(shè)計(jì)方案
- 人力資源招聘面試技巧及話術(shù)指導(dǎo)
- 2025-2030光伏發(fā)電度電成本下降路徑與全球能源結(jié)構(gòu)變革中的市場(chǎng)空間測(cè)算研究報(bào)告
- 2025-2030光伏制氫系統(tǒng)集成優(yōu)化與離網(wǎng)應(yīng)用場(chǎng)景經(jīng)濟(jì)性測(cè)算
- 2025-2030光互連板材高頻性能測(cè)試標(biāo)準(zhǔn)統(tǒng)一化進(jìn)程與材料供應(yīng)商選擇策略
- 2025-2030兒童防曬用品市場(chǎng)教育難點(diǎn)與渠道變革趨勢(shì)
- 門座起重安全培訓(xùn)資料課件
- 2025-2030輔助生殖技術(shù)服務(wù)市場(chǎng)規(guī)范化發(fā)展與區(qū)域布局戰(zhàn)略報(bào)告
- 2025年紡織企業(yè)綠色生產(chǎn)技術(shù)引進(jìn)可行性研究報(bào)告
- 2024年河北邢臺(tái)市廣宗縣招聘事業(yè)單位人員考試真題
- 第三單元第2課時(shí)兒童樂園(教學(xué)設(shè)計(jì))數(shù)學(xué)北師大版二年級(jí)上冊(cè)2025
- 建設(shè)用地審查報(bào)批課件
- 慢性腎炎課件
- 中國沈陽鐵路局勞動(dòng)合同8篇
- 高考3500詞匯表(完整版)
- MOOC 跨文化交際通識(shí)通論-揚(yáng)州大學(xué) 中國大學(xué)慕課答案
- 醫(yī)師多點(diǎn)執(zhí)業(yè)勞務(wù)協(xié)議書(參考格式)
評(píng)論
0/150
提交評(píng)論