本文為萬向區塊鏈蜂巢學院線上公開課第31期的內容。摩聯科技CTO許剛分享了區塊鏈與物聯網融合創新的可能性,以及他們在該領域的實踐經驗和案例。
大家好!我是摩聯科技CTO許剛,很高興受邀參加蜂巢學院線上公開課融合創新系列專題活動。今天我給大家介紹一下物聯網技術與區塊鏈的契合點,區塊鏈物聯網模組的技術原理和商業應用。
首先,先給大家介紹一下摩聯科技。摩聯科技是一家專注於智能物聯網的可信身份認真和數據隱私保護的技術初創公司。
摩聯科技的兩個主要抓手是物聯網+區塊鏈。右邊有一張三角形的圖,這張圖說明了“為什麼”以及“怎麼樣”把物聯網、區塊鏈、人工智能以數據作為中間抓手給串起來。
我先介紹一下區塊鏈, 用一句話概括——“區塊鍊是去中心化的抗篡改的賬本”。當中有幾個核心詞。
1、“賬本”
區塊鏈首先是賬本,賬本是什麼?賬本是用來記賬的本子。我畫了一張圖,這張圖展示了賬本的樣子,可以把它跟現實中的賬本類比一下。比如說賬本的第一頁第一條記錄寫了一句話“The Times……”,這句話是賬本里記的內容。還可以記第二條、第三條等等。
區塊鍊是抗篡改的賬本,需要有些“絕活兒”來保證它是抗篡改的。我在圖上畫了三個頁面,在區塊鏈裡被稱為三個區塊。和傳統真正的賬本很相似,區塊鏈在記賬的時候也是一頁一頁的,一頁稱為一個區塊,每一個區塊上能記錄的賬目條數是有限的。如果賬本要記很多信息就要分攤到很多區塊上。
防止篡改的第一個要素是區塊鏈在構造數據結構的時候採用了一種鍊式的結構,從第二頁開始會把前一頁的數據哈希值作為第二個區塊頭里的一部分給記下來,第三個區塊會把第二個區塊的數據內容哈希值記到第三個區塊的頭上。也就是說,區塊串起來,每一個區塊都會記錄前一個區塊的哈希值。
假設賬本已經寫完一段時間,有人想篡改其中某一頁的數據內容,那一頁的哈希值就變了,一旦變了就意味著這一頁的哈希跟下一個區塊頁上記錄的上一個區塊的哈希對不上了。
比如說我把第二頁的內容改了,本來第三頁上記的是第二頁的哈希,如果有人把第二頁的哈希改了,這時候重新計算第二頁的哈希值會跟第三個區塊頭上記錄的第二個區塊的哈希變得不一樣,這時候就會發現賬本不對了,有人篡改過。
通過鍊式的數據結構使得有人要篡改賬本的時候不止改一個地方,而是要把賬本從改的那一頁開始一路改到最後一頁,因為哈希值變了,這是區塊鏈的結構。
2、去中心化賬本
假設我們只有一個賬本,多花點時間就可以把賬從第二頁第三頁第四頁一路改下去,只是時間投入的問題。區塊鏈引入了共識機制,這本賬不是只記在一個本子上,而是區塊鍊網絡裡會有很多個節點,每個節點都會記錄完全一樣的一本賬,通過共識算法保證每個節點記錄的賬都是一樣的。
假設有一個人試圖篡改賬本,他不僅要把一個節點上從要改的那一頁開始到最新的全都改掉,而且還需要把整個區塊鍊網絡中至少超過一半的節點上的賬本都要改掉,這樣一來大家才會認為多數被篡改的賬本是真的賬本。
但現實中,基於博弈論,當節點數量比較多的時候,要控制超過一半節點的算力,如果是以工作量證明方式做共識算法的話,要控制超過一半的算力才有可能實現篡改,而這在現實中往往會因為篡改成本過高,可能比篡改賬本本身的收益還要大,使得這種篡改變得非常困難。
區塊鏈第一通過鍊式結構,第二通過多個節點的共識實現了去中心化抗篡改的賬本,這是區塊鏈最重要的特徵。
3、智能合約
剛才舉的例子里區塊上存的信息可能是一句話,可能是一個金額,最重要的就是存了多少金額。
從以太坊區塊鏈開始引入了新的概念——智能合約,智能合約是一種存儲在區塊上的代碼段,而區塊上不僅能夠存錢的金額、任何的一句話,也可以存代碼指令。
比如說一個智能合約就是一個編程語言,編程語言經過編譯可以部署到區塊鏈上,所謂部署就是把智能合約的內容記賬,記到某一個區塊賬本里。指令記到賬本里,光記上去是沒有意義的,無非就是一些字節碼,雖然字節碼記上去不可篡改,但是意義和一般的賬本條目沒有太大區別。而賦予他新的能力是虛擬機。
大家都比較熟悉JAVA虛擬機,JAVA的bytecode可以在JAVA虛擬機上跨平台執行,不管在什麼平台上JAVA的bytecode是一樣,只是底下的虛擬機根據硬件、操作系統等差異會不一樣。
在區塊鏈裡虛擬機也很相似,智能合約可以編譯為一定的字節碼,字節碼可以在區塊鏈虛擬機上被執行,這個過程和JAVA非常相似,但是有一點很有意思,這個虛擬機事實上是區塊鏈上的內生機制,對所有節點而言虛擬機都是一樣的。當一個智能合約被部署到區塊鍊網絡上時,因為區塊鏈共識機制,這個合約的字節碼會被區塊鍊網絡上的每一個節點賬本都記下來,記下來的內容是完全一致的。
而當有人調用智能合約時,每一個節點上的虛擬機都會收到指令執行智能合約,用同樣的輸入參數去執行同樣的智能合約,因為調用智能合約的時候也是區塊鏈交易,交易被記到區塊鏈賬上的時候也是通過共識,所有節點在執行智能合約時都是執行一樣的代碼,用一樣的輸入,所以一定會得出一樣的輸出。
在區塊鏈裡這被稱為“狀態更新”,執行了智能合約後,可能會導致一些區塊鏈狀態的改變,狀態改變本身也會被記在區塊鏈賬本里,這個概念非常重要的原因是數據上鍊,也是今天討論的話題——物聯網的數據上鍊。
什麼叫數據上鍊?絕大多數情況下都是指要讓設備調用某一個事先在區塊鍊網絡上已經部署好的智能合約,所謂的數據上鍊是把物聯網的數據作為調用智能合約時傳進去的參數,這就是智能合約的調用。
說了數據上鍊,鏈上有各種各樣的數據,就可以調用智能合約的代碼做任何處理。問題是數據從哪裡來?區塊鍊網絡本身是確定性系統,上面的數據不可能隨機產生的。對區塊鍊網絡來說,數據一定是從區塊鍊網絡以外傳進來的,必然是外部調用傳進來的。
前面看到的三角形的圖解釋了物聯網、AI、區塊鏈的關係。鏈上數據從哪來?物聯網數據會是鏈上數據非常重要的來源,為什麼呢?為什麼數據要上鍊呢?大家可以回想一下,什麼時候公眾對“數據”特別上心,特別感興趣了呢?還是最近幾年的事情。
雖然過去大家都知道數據有用,但是數據到底有多大的價值誰也說不清。過去更多的場景是說我們自己採集的數據自己用,這是過去物聯網時大家都會自然而然用的模型。比如說我採集大樓裡的溫度,根據此來控制空調,或者採集大樓裡的光線亮度來控制燈光。
過去我們說物聯網說的都是這種模型,這種模型的特點是數據是我採集我來用,不涉及到數據給別人的問題。既然是我自己採集我自己用,那麼數據就不存在信任的問題,我自己肯定相信自己,我只要保證數據本身採集、存儲的安全就可以了,不用做任何努力試圖證明數據是真的,因為這是我自己採集的數據。
但是,今天隨著數據的用途越來越大就出現了一個問題,我的數據有可能要給別人用。
在三角形里左下角是物聯網IoT,右下角是人工智能AI。事實上什麼時候數據開始變得特別有用呢?這跟人工智能的廣泛應用是分不開的。過去大數據挖掘是比較有限的,有了人工智能之後數據需求大大增加。無論是做人工智能相關模型的參數訓練還是模型推理,都需要有大量數據。
正是因為AI對數據的利用,使得過去很多沒法被利用的數據今天能夠利用起來了,這就出現了專業的人採集數據(物聯網),有專業的人處理數據(AI)。往往數據的源頭物聯網(生產者)和消費的地方AI(消費者),他們往往不是一家公司,這時候就出現了數據信任的問題。
如果A公司採集了物聯網數據,把數據提供給做AI的B公司,那麼B公司憑什麼相信A公司給他的數據是真的從物聯網設備上採下來的,而不是投其所好構造的假數據賣給AI的B公司?這就成了問題。
今天討論的物聯網+區塊鏈就是從兩個地方試圖解決這個問題。
第一,區塊鏈。區塊鍊是抗篡改的,任何數據一旦記錄在區塊鏈上,很難被篡改,所以區塊鏈解決了數據從A到B時存儲/傳輸過程中保證數據是原始的,是記在鏈上的數據,中間是沒有改過的。
第二,IoT設備端側。要盡可能地從靠近數據源頭的地方把數據做上鍊,一旦上鍊數據就不能改了,越早把數據上鍊意味著數據的可信度越高。
比較一下,一種方法是物聯網設備採集數據後首先送到中心化的服務器上,然後從服務器上對數據進行上鍊。過了幾個月有一家AI公司說我要買數據,可能他看了數據從服務器上了區塊鏈存證。但是從物聯網設備上到雲上之後有沒有可能在雲上被篡改之後再送到區塊鏈上存證?有沒有這種可能?有。
如果我們採用另外一種模型,在數據產生的源頭,在物聯網設備的源頭把數據做上鍊存證,那麼篡改的空間就變得更加小了,幾乎數據一被採集到就被上鍊做了存證,除非在很短暫的時間和空間裡進行篡改,否則一旦上鍊數據就不可篡改的。這就是今天我們講的為什麼要在物聯網設備上做數據上鍊。
物聯網、人工智能、區塊鏈串在一起,構成了BoAT(Blockchain of AI Things)。 Things是數據的生產者,AI是數據的消費者,Blockchain是中間實現數據信任的傳遞。形像比喻Blockchain就好像“一艘船”,把數據的信任從數據的生產者運送到數據的消費者。
總結了兩句話:物聯網是區塊鏈數據的可信來源地,區塊鍊是物聯網數據的可信集散地。
第一句話前面已經解釋過了,第二句話稍微多解釋一下數據可信的集散地有“集”有“散”,“集”的過程是數據從物聯網設備上鍊的過程,收集上來;“散”的過程是接下去數據要被消費可能會被轉遞到另外一方。所以,區塊鍊是物聯網數據的可信集散地。
剛才的故事講的很美好,但是現實沒這麼美。物聯網有個特點——高度碎片化,碎片化指物聯網設備因為應用場景五花八門,所以品種、特點非常不一樣。這和今天我們用的手機不太一樣,因為有手機大致需求是確定的,用的人/對像大致就幾類需求,所以手機是高度同質化的。
但是物聯網設備是高度碎片化的,今天在手機上有不少的區塊鏈應用,手機是高度同質化的,做區塊鏈應用在全世界所有的手機上都可以裝上,非常簡單。但是對物聯網設備來說,你想做物聯網設備上的區塊鏈應用,全世界的物聯網設備裝上去都能用,這是絕對不可能的。這時候需要找到合適的在載體,就像手機,去解決高度碎片物聯網設備上的區塊鏈能力賦能。
我們找到了蜂窩模塊,蜂窩模塊簡單看成是沒有屏、沒有鍵盤的手機,2G、3G、4G、5G都屬於蜂窩通信。蜂窩模塊把手機里關於通信的那部分留下了,打包做成了零部件,把屏、鍵盤都去掉了,這樣的模塊廣泛地應用在幾乎所有的蜂窩物聯網設備上。蜂窩本身是非常複雜的通信方式,所以絕大多數物聯網設備廠商在造設備時不太可能找高通、展銳、ASR,跟他們說我買你的芯片焊到我的板子上,最終產品連接到運營商的基站。
這對於大多數物聯網設備的廠商來說是不大現實的,因為大多數物聯網設備的廠商規模都遠遠不能跟手機廠商比,手機廠商一年就出幾款手機,可以整個資源都投入進去。但是物聯網設備高度碎片化,很多都是相對規模小一些的公司,不可能投入大量的資源像做手機一樣把物聯網設備蜂窩調試好。所以這給了蜂窩模塊非常重要的機會,今天我們看到的蜂窩模塊廣泛地應用在物聯網設備上,大概一年全球有幾億片的出貨,量非常大,就是用在各種各樣物聯網設備上。
蜂窩模組跟手機廠商有點像,經過激烈競爭之後,剩下的蜂窩模組廠商不多,不比主流手機廠商多多少。模組廠商賣得特別好的蜂窩模組主要就是那幾個型號,這樣一來就找到的非常重要的入口。過去如果要給物聯網設備賦能區塊鏈能力的話得一種一種設備去做,可能是幾百萬種設備。
但是它們有共性,絕大多數物聯網設備裡面肯定是有蜂窩模塊在裡面的,有了模塊在裡面意味著只需要在相對來說品種比較少的主流蜂窩模塊上把區塊鏈能力賦能上去,使用模塊的物聯網設備就具有了區塊鏈能力,所以這種模塊叫——“區塊鏈模塊”(區塊鏈蜂窩模組)。
“物聯網設備即智能機器人,蜂窩模塊之於物聯網設備就如同手機之於人。”很有意思的比喻。
要賦予蜂窩模組區塊鏈的能力,能力是什麼?我們把BoAT(Blockchain of AI Things)拿過來看看。
左邊是一張架構圖,可以看到蜂窩模塊會用在IoT的設備裡,設備裡有Service Stack(服務協議棧),在通信體系裡一般會用Stack的方式描述裡面各種各樣的服務。比如說左邊圖裡,最下面是蜂窩無線承載(Cellular Radio Bearer),是最基本的蜂窩通信的數據承載,是跟電信網絡直接對應的,就是跟基站、核心網直接對應的。
比如說要發短信、打電話,這樣的業務屬於在蜂窩無線承載層面做的業務。在蜂窩無線承載上還是要有IP,TCP/IP是蜂窩無線承載上一定會有的,為上層基於IP的業務提供了關鍵的基礎性的承載。
TCP/IP上是HTTP/CoAP/MQTT等偏應用層面的協議,這些協議就不是所有模組都有的。 TCP/IP肯定所有的模組裡都有,但是HTTP不是所有模組都有的,這時候會根據實際的應用場景選擇不同的協議放在這裡。
BoAT對應的是區塊鏈層面,是在底下一大堆協議棧上又加了一層,這一層應用提供了關於區塊鏈的服務。
可以以Service Stack協議棧的概念看待BoAT,BoAT就是今天架設在已經有的分層設備Service Stack上的新協議層,對應的就是區塊鏈層面。
BoAT Framework是軟件庫,和HTTP、CoAP一樣。作用是可以被IoT應用,被安裝蜂窩模組的設備調用,用來做數據簽名、區塊鏈交易發起,調用鏈上智能合約,當然也包括對區塊鏈密鑰的管理,這是軟件庫最基本的功能。
還需要澄清有幾個“不是”:
(1)BoAT不是區塊鏈的節點軟件。 BoAT是設備上訪問區塊鏈的客戶端協議,就好比是HTTP的client和HTTP的server之間的差別,不是像Apache一樣的server,是client。
(2)BoAT不是後台應用。經常跟其他人交流時有人提問題說BoAT在裡面是不是會自動截獲所有經過蜂窩模組的數據然後上鍊?不是的,BoAT是軟件庫,是被調用的,自己不會在後台自動偷偷加載起來跑起來,所以BoAT是實現設備上應用訪問區塊鏈上智能合約的端側協議。
區塊鏈模組的好處,正是因為蜂窩模組是物聯網設備裡本身就有的東西,而不是為了區塊鏈新增的,所以在蜂窩模組裡加了BoAT協議庫後,原來的設備不需要對硬件進行任何修改就可以比較快速地實現“區塊鏈+”應用試點,比較方便快速地實現現有物聯網設備的改造,使得它能夠支持數據上鍊,這是蜂窩模組的好處。
接下來講一下物聯網+區塊鏈的基本應用模型。上面這張圖上標的是傳統數據上雲的模型,這張圖上還沒有區塊鏈,先簡單看一下。最左邊是物聯網設備,物聯網設備裡有蜂窩模塊,裡面跑著IoT應用,應用通過移動通信網(中國電信、中國移動、中國聯通)把數據上到雲上,傳輸的過程今天有些成熟的技術保障數據傳輸過程中的安全,稱為“傳輸信道安全”。
數據上雲之後,雲上把數據存下來,右邊的數據應用就是拿著數據進行分析、進行應用,類似前面提到的樓裡環境光的亮度採集之後可以控制燈光,從而省電。這是基本數據上雲的模式。
接下來加上區塊鏈,最左邊剛才只有IoT應用,現在加上了BoAT Framework,在設備裡還需要有安全容器對密鑰(key)進行安全管理,安全容器裡要做密碼學算法,比如說數據上鍊時簽名算法需要在安全容器裡做,才能保證簽出來的名肯定是對的,是安全的。
數據通過簽名之後完成區塊鏈交易報文組裝,通過BoAT協議庫可信地送到區塊鏈節點上,一旦數據上鍊後在存儲期間就是可信的,因為不可篡改。數據上鍊過程背後部署著智能合約,數據上鍊是設備上對於智能合約的調用。
在數據應用中又多了幾個箭頭,除了從雲上取數據外,還會從區塊鏈節點上取存證數據。上雲數據和上鍊數據是關聯的,大家可能會問一個問題,數據可以可信地上鍊存在鏈上,為什麼還要上雲呢?是不是上鍊就可以了?
雖然區塊鍊是抗篡改的賬本,但正是因為區塊鍊是需要很多節點一起做共識的,所以抗篡改的代價是挺大的。把數據傳上去之後全網所有節點要一起做共識,把數據存下來,還是存了好多份,有10個節點意味著1K的數據變成10K,帶來了區塊鏈在時間性能、空間性能上遠遠不及傳統的雲,因為10個節點達成共識需要時間,一份數據在10個節點上存了10遍,佔了10倍的空間,所以成本會變得很高。
正是因為這個特點,所以要揚長避短。既要發揮區塊鏈的優點,同時也要讓他配合雲一起實現數據可信信任傳遞。通常做法是會把原始數據送到傳統雲上,比如說今天採集了一些溫度數據,采了一天的數據送到雲上,這個數據量比較大。
上鍊的是什麼呢?是數據的哈希值,把數據算成哈希,把哈希存到區塊鏈上。意味著上雲的數據如果發生了篡改,那算出來的哈希值一定跟存在區塊鏈節點上的哈希值對不上,這樣一來就能夠證明你的數據是篡改過的,如果兩者一樣,就能證明數據是沒有篡改過的。
通過這種方式,既利用雲的高性能、大存儲、高速實現海量數據的存儲,同時又利用區塊鏈存哈希值,實現了雲上海量數據的驗證,配合就實現了物聯網+區塊鏈的可信模型。
剛才講的故事是數據安全上雲、數據可信上鍊。數據安全上雲講的是傳輸信道的安全,通常情況下是只保證傳輸信道上不可能被別人竊聽,別人也不能改數據,但是不解決源頭數據就是假的問題。
數據可信上鍊保證的是數據在雲上存儲期間不可篡改,但是同樣也保證不了源頭數據是不是真的。假設我是一個黑客,我試圖攻入系統,有一個很可能會採用的方式,我根本不用物聯網設備,我用一台電腦冒充物聯網設備,然後連接到雲,把數據上到鏈上。
這樣一來雖然上雲的數據和上鍊的哈希是對得上的,但你不能證明數據真的是從物聯網設備採集出來的,這在現實中有很多例子,通過造假構造了一些根本不是真正物聯網設備採集的數據。
這時候怎麼辦?需要加入一個概念。左邊這張圖下面有個紅框Root of Trust(根信任)。根信任通常是在芯片層面生產時就注入的一種對稱密鑰/非對稱私鑰。這個密鑰是在安全生產環境裡註入進去的,在安全的環境裡可以認為這個密鑰是不可被惡意竊取的。基於安全生產環境注入的根信任放在安全容器裡,就可以利用根信任對關鍵性數據(設備認證)進行加密和簽名,因為要么是對稱密鑰,要么是私鑰。
密鑰是生產的時候注入進去的,所以對應的公鑰、對稱密鑰在生產環境的數據庫裡是記下來的,事後要認證這台設備是真正設備的時候,只要把設備用根密鑰對某個數據簽名,在設備身份認證後台查詢一下設備ID對應的公鑰/對稱密鑰是什麼,然後對設備發出來的身份認證的消息進行驗證,這個過程稱為Attestation認證。
一旦認證通過就能夠說明這代設備確實是當時生產出來時的那一台,用這種方式可以保證只有真的物聯網設備才能把數據傳上來,如果是假的會很容易地被識別出來不是真的物聯網設備,可能是偽造的設備。
安全容器也挺有意思的,大家比較熟悉的安全容器有三種:
(1)TEE,利用TrustZone安全的隔離機制加上芯片上的隔離機制,實現訪問權限的控制,使得一個處理器可以在邏輯上模擬成一個一般的處理器核,和一個安全的處理器核,物理上是一個核,可以模擬成兩個邏輯的核。在安全的和上可以做安全操作,必要保存、加密算法實現。 TEE的方法是今天所有手機上都支持的,在服務器上Intel的TEE叫SGX,也是被廣泛作為安全容器的。
(2)Secure element,一般會把它叫做安全芯片。安全芯片用得非常非常廣泛,今天所有的銀行卡、門禁卡都是各種各樣不同形態的安全芯片。可以把安全芯片看成是比較特殊的單片機,是高度隔離充分考慮安全要求的單片機,把密鑰和密碼學算法放在安全容器、安全芯片裡是非常安全的,能夠抵禦各種軟件和硬件的攻擊,所以大家用銀行卡的時候是比較放心的。
為什麼今天的磁條卡不讓用了要用芯片卡?因為磁條卡本身沒有任何計算能力,和條形碼一樣只是記了些信息。用了安全芯片後,中間有密鑰在裡面,必須要通過密鑰的簽名驗證才能實現銀行卡交易安全。
(3)SIM卡,所有的蜂窩通信都需要SIM卡,SIM本身也是一種級別很高的安全芯片。蜂窩物聯網特殊在於一定是有SIM卡的,對物聯網設備來說有可能沒有TEE,只有比較新的芯片才會在物聯網芯片裡做TEE,雖然手機上普及了,但物聯網設備出於成本考慮芯片大多數還是不支持TEE的,所以不一定有TEE。
掛個安全芯片意味著硬件BOM成本一定增加了,要多出來一個芯片,哪怕多幾塊錢也是成本。但是所有蜂窩物聯網設備一定是有SIM卡的,如果能夠利用SIM卡安全容器在裡面放上相關的必要做密碼算法,那實際上在硬件上不需要增加成本就能使物聯網設備具有很高等級的安全能力的方式。這是很有意思的模型。
這張圖講的是基本應用模式,實際跑起來會有一些差別。現在這一頁講的是BaaS應用模式。
數據上鍊時本質上調用的是區塊鏈上已經部署好的智能合約,智能合約的參數就是要上鍊的數據。智能合約要根據具體應用使用場景進行編輯、進行開發調試。
又回到前面的問題,大部分物聯網設備廠商的能力都不是太強的,以中小公司為主,太碎片化了,所以讓他開發比較安全的智能合約實現數據上鍊安全存證,往往對很多設備廠商來說是很困難的,所以有了BaaS服務(Blockchain as a service)。
有一些專業的公司針對最常用的用途預先編好了一些智能合約,自己做了中心化服務器,作用是設備可以向上雲一樣把數據傳到BaaS服務的中心化服務器上,再由中心化BaaS服務器調用區塊鏈上的智能合約把數據存進去。這種方式是今天比較普遍的,尤其是在聯盟鏈的應用裡。
像數據存證是物聯網裡比較常見的一種應用,所以針對數據存證做的BaaS服務,無論是數據本身的存證還是數據在應用時的驗證,通過BaaS會方便很多,比直接調智能合約、直接編寫智能合約相對來說方便也安全。
大家又會有問題了,我們費了很大勁終於把數據安全上鍊了,因為安全上云不夠,上云有可能在雲上被篡改,上鍊之後保證不被篡改。結果BaaS服務一搞又是中心化服務器,是不是數據在上鍊的時候在BaaS服務器環節被改了?
理論上有這樣的可能,但是仔細一分析會發現數據上到BaaS服務器上,BaaS服務器會立刻調用區塊鏈智能合約存下來。假如說要對數據進行篡改,只有在短暫的時間裡有可能進行篡改,數據上到BaaS服務器上,但BaaS服務器還沒來得及調智能合約的時候,這個臨界點上進行篡改確實有可能。
但多數情況下如果要對數據造假,一定不是鬧著玩隨便改著玩的,如果要造假一定是有特定目的的。特定目的往往不是在數據剛上鍊時就想好要怎樣造假,而是有具體造假需求時才想到數據造假。雖然通過BaaS服務有臨界條件、邊界點上可能是篡改的,但絕大多數情況下當有人想對數據進行造假時,但數據已經在區塊鏈上了,已經沒有機會改了。 BaaS服務也是對信任有非常大幫助的區塊鏈應用方式,雖然比完全去中心化區塊鏈稍微差一些,但絕大多數情況下它非常好用,並且可信程度也足夠。
區塊鏈邊緣網關應用模式,這對物聯網就更加貼切了。前面講的模型都是說物聯網設備可以直接把數據要么上傳到區塊鏈節點上,要么通過BaaS服務器上去。但事實上現在有很多物聯網設備連這一點都做不到。為什麼呢?
第一,有很多物聯網設備裡插的SIM卡流量是定向流量。所謂定向流量是這個流量只能訪問特定的服務器,比如說運營商IoT數據平台,只能去那個地方,訪問別的網址訪問不通。這種情況下你不得不先把數據送到定向的地方去,比如說送到IoT平台上,再從IoT平台上進行中轉。這種方式相對來說安全性上有小小的疑問,在IoT平台上(邊緣網關)可能存在被篡改的可能性。
這時候怎麼辦?我們不是有Root of Trust嘛,可以做好數據基於Root of Trust的簽名。帶著簽名把數據傳到區塊鏈邊緣網關之後,如果邊緣網關對數據內容進行篡改的話,簽名就對不上了,用這種方式可以保證區塊鏈邊緣網關上雖然是中心化的,但實際上對數據也是不可篡改的。
第二,區塊鏈邊緣網關會出現在兩邊通信協議不匹配的時候。比如說一些比較低端的物聯網設備是不支持HTTP協議的,因為佔內存比較多。今天的區塊鏈節點大多數都是HTTP,這樣一來有個問題,設備不支持HTTP怎麼能夠連到區塊鏈節點?這時候需要有中間的邊緣網關實現數據中轉上鍊。同樣,都可以利用安全容器裡的Root of Trust實現,雖然中間有中心的網關,但是信任還是可以傳遞的。
最後我再講兩個應用的案例,區塊鏈一部分是技術,另一部分是商業。
案例一:充電樁
今天充電樁為了計費、收單都是內置了蜂窩模組,已經做的是相關充電訂單的信息上雲,這是今天已經有的。可以增加的事情是訂單本身信息上雲,哈希特徵值上鍊。
跟今天已經有的充電樁相比,技術層面就多了充電訂單信息上鍊一件事情。作用體現在商業應用上,正是因為數據上鍊了,所以既不能篡改雲上的訂單、充電運營情況的信息。也不可能明明只運營了10個樁,冒充有1000個樁在那邊運營,假數據是做不了的。這樣使得監管部門實現有效的監管,杜絕“騙補”情況。
充電樁有可能是多方一起建的,運營方只是出資的其中一方,還有其他的出資方。運營方通過區塊鏈技術保證運營信息是可信的,依據可信的信息給其他參與方進行利潤分成是有依據的。
假設充電樁還需要做更多的融資,比如說現在有50個樁,希望能夠以50個樁的硬件作為擔保去融資去貸款,其次以50個樁的運營收入作為資質的保證,做貸款。這時候比較可信的充電樁鏈上可信數據可以為投資方提供比較合適的投資評估依據,這是區塊鏈+物聯網在充電樁案例裡可能會有的商業應用。
案例二:牛聯網
牛是很好的資產,一頭牛價值1、2萬塊錢,是非常好的資產。但是牽一頭牛跟金融機構貸款是非常困難的,因為牛是活的東西,很難評價牲畜怎麼監管,怎麼算抵押了一頭牛,比較困難,所以以牛為抵押做貸款是比較困難的。
我們做的一件事情是給牛掛上了項圈,項圈裡是NB-IoT低功耗蜂窩模組,電池供電。會採集牛的特徵(步態、生命體徵、地理位置等)上雲上鍊。
上雲上鍊後要去貸款,金融機構的風控部門就可以知道這頭牛一直在牧場裡,而不是今天在老王家的牛,過兩天又牽到老李家,一頭牛這邊貸款那邊也貸款。掛了項圈之後,再加上區塊鏈保證數據不可篡改,金融機構風控部門可以相信這頭牛確實在牧場裡,這頭牛確實還活著,這就是他可以進行貸款風險控制的依據。
如果只是向一家銀行做貸款,其實是不需要區塊鏈的,銀行做了牛項圈,牛項圈只給銀行把數據傳上去,銀行只相信傳到自己網上的數據,這個模型裡是不需要區塊鏈的,自己采的數據自己用的。
模型存在什麼問題呢?誰給牛項圈買單?如果說你要找牧民買單說500頭牛買500個項圈,花多少錢買了我給你貸款,那恐怕沒多少人願意買牛項圈。要利用區塊鏈的能力實現商業上“羊毛出在狗身上讓豬買單”,換一個買單方。
怎麼實現?還是基於剛才講的技術,但數據不是只給一家銀行用,採集到的數據不僅可以給銀行做貸款用,還可以給保險公司做農業險,還可以給政府監管農業補貼用。這意味著利用區塊鏈存下來的數據是多方一起用的,多方一起用的時候就有了區塊鏈的用武之地。
因為數據存在銀行的話保險公司不信,存在保險公司的話政府部門不信,所以利用區塊鏈方式可以使多方能夠可信地共享同一份數據,這樣為了採集和存儲驗證這份數據所做的投資,就演變為給各方出風控報告,出一份可以取得一些服務收入,再出一份又可以取得一份服務收入,未來就能夠實現牛的信息更高效率的利用,這就是牛聯網項目區塊鏈蜂窩模組的應用場景。
我今天的分享就到這裡,謝謝大家!
區塊鏈與其它數字化技術的融合創新趨勢已越來越明顯,第六屆萬向區塊鏈全球峰會特別設置了物聯網3.0主題論壇,探討區塊鏈與物聯網的結合。想听更多“區塊鏈+物聯網”的實踐經驗,點擊閱讀原文,即可回看峰會精彩分享。
End
※———長按識別下方二維碼關注我們———※
長按識別下方二維碼,加入萬向區塊鏈
多個核心崗位在招,薪資福利優厚
▼
▼點擊【閱讀原文】,觀看直播回放!