區塊鏈工業架構設計

文地址:https://zhuanlan.zhihu.com/p/30406675算法

基本概念

區塊鏈做爲比特幣背後的技術,無需中心服務器,可實現各種存儲數據公開、透明、可追溯。本來是比特幣等加密貨幣存儲數據的一種獨特方式,是一種自引用的數據結構,用來存儲大量交易信息,每條記錄從後向前有序連接起來,具有公開透明、沒法篡改、方便追溯的特色。實際上,這種特性也直接體現了整個比特幣的特色,所以使用區塊鏈來歸納加密貨幣背後的技術實現是很是直觀和恰當的。區塊鏈是一項技術,加密貨幣是其開發實現的一類產品(含有代幣,也有不含代幣的區塊鏈產品),不能等同或混淆。與加密貨幣相比,區塊鏈這個名字拋開了代幣的概念,更加形象化、技術化、去政治化,更適合做爲一門技術去研究、去推廣。數據庫

因此,目前當你們單獨說到區塊鏈的時候,就是指的區塊鏈技術,是實現了數據公開、透明、可追溯的產品的架構設計方法,算做廣義的區塊鏈。而當在具體產品中談到區塊鏈的時候,能夠指相似比特幣的數據存儲方式,或許是數據庫設計,或許是文件形式的設計,這算做狹義的區塊鏈。廣義的區塊鏈技術,必須包含點對點網絡設計、加密技術應用、分佈式算法的實現、數據存儲技術的使用等4個方面,其餘的可能涉及到分佈式存儲、機器學習、VR、物聯網、大數據等。狹義的區塊鏈僅僅涉及到數據存儲技術,數據庫或文件操做等。本文的區塊鏈,指的是廣義的區塊鏈。編程

架構圖

從架構設計上來講,區塊鏈能夠簡單的分爲三個層次,協議層、擴展層和應用層。其中,協議層又能夠分爲存儲層和網絡層,它們相互獨立但又不可分割。比特幣的區塊鏈應用架構我就不描述了,咱們中機在工業領域應用的區塊鏈的應用架構(可公開部分)分享給你們參考,我想不用解釋,技術領域的各位都清楚了。瀏覽器

 

 

協議層

所謂的協議層,就是指代最底層的技術。這個層次一般是一個完整的區塊鏈產品,相似於咱們電腦的操做系統,它維護着網絡節點,僅提供Api供調用。用的技術也很簡單,基本都是網絡編程、分佈式算法、加密簽名、數據存儲技術。安全

架構設計圖裏,我把這個層面進一步分紅了存儲層和網絡層。區塊鏈在工業應用中最大的特性就是安全,工業互聯網一直遇到的瓶頸就是安全隱患,傳統的Saas平臺用防火牆來預防安全,可是一旦黑客突破防火牆,後面的集中存儲數據庫基本都是裸露同樣,任黑客宰割。如今的所謂的工業雲平臺最大的問題都是安全問題,咱們的安全工程師也對所謂國內號稱主流的工業雲平臺進行了安全測試,發現基本都是大量漏洞。換句話來講,若是這些雲平臺鏈接了工廠的設備,而咱們的安全工程師變成了黑客,那麼工廠設備停工,工廠爆炸都彷佛輕易而舉的事情。服務器

數據存儲的分佈式,一切取決業務的效率與安全性。同時採用分佈式算法、加密簽名,這些要在實現點對點網絡的過程當中加以使用。這些是你們寫編碼的重點和難點,《Nodejs開發加密貨幣》全書分享的基本上就是這部分的內容。固然,也有把點對點網絡的實現單獨分開的,把節點查找、數據傳輸和驗證等邏輯獨立出來,而把共識算法、加密簽名、數據存儲等操做放在一塊兒組成核心層。不管怎麼組合,這兩個部分都是最核心、最底層的部分,都是協議層的內容。微信

擴展層

擴展層能夠理解爲咱們用的設備驅動程序,主要是讓區塊鏈產品更加實用。網絡

一是交互平臺:放到比特幣就是交易市場,讓各類貨幣能夠兌換加密貨幣。在工業應用中就是電子、脈衝、設備信號與人機信號的轉換。數據結構

二是擴展實現:就是你們聽的最多的智能合約,「智能合約」商業語言叫「合約智能化」,學術語言「可編程動態合約」,其中的智能主要體如今執行上智能,達到某個條件合約自動生效。好比比特幣的自動轉帳、自動付款,工業應用中採購業務和發票業務的智能合約機制。架構

擴展層使用的技術也不復雜主要是:分佈式存儲、機器學習、VR、物聯網、大數據等等,均可以使用。

從這個層面來看,區塊鏈能夠架構開發任何類型的產品,不只僅是用在金融行業。在將來,在工業,隨着底層協議的更加完善,任何須要確權、徵信和追溯的信息,均可以藉助區塊鏈來實現。

應用層

區塊鏈的應用層電腦的軟件程序和手機的app應用,就是普通人直接能夠用的產品,可是目前這塊應用全球都很匱乏。能夠這些說阿里釘釘、支付寶都不能算區塊鏈的應用,騰訊的微信也只能算80%的區塊鏈應用。因此從技術角度就能夠明白爲何阿里作應用作不過騰訊,在這方面我以爲張小龍先生應該是懂的比較多,只是他不表達。

限於當前區塊鏈技術的發展,市面上又找不到真正牢固、易用的協議層或擴展層的產品。去中機採訪他們首席科學家,人工智能區塊鏈架構師李紅傑先生,他說:他的團隊200人,其中包括IBM、谷歌不少資深開發工程師,剛開始都困惑這類應用的開發,開發難度和成本都比較高。因此李總和他的研發團隊才投入了2年時間,近3億的資金研發了,GURU智能工業技術架構,固然如今沒有徹底商用。可是在工業區塊鏈應用開發領域已經取得突破,讓用戶直接面對數據,進行自主創新應用性開發,打破Java應用語言和C#等語言的通訊障礙,把工業語言和人機語言進行融合對話。

李總表示:咱們只好全面發力,採起徹底開源開放的態度,經過社區的力量,共同去作一件有意義的事情,也算爲中國區塊鏈技術發展作點技術積累和微薄貢獻。

 

 

附錄:知識圖譜

循着上面的分析,咱們已經能夠了解區塊鏈是什麼,並知道怎麼實現了,順便梳理一下其中的編程技術知識,天然也就清晰多了。

 

 

根據我的的理解,我把與區塊鏈相關的知識分爲下面5個方面:

(1)基礎知識

區塊鏈是新技術,與之相關的是其背後大量的新概念、新理論。這些知識,雖然不直接體如今編碼裏,但倒是理解區塊鏈,掌握區塊鏈技術的基本知識。因此,理當成爲區塊鏈技術不可或缺的一部分。這部分從基本概念入手,到工做原理的描述,就可以把區塊鏈基礎知識所有覆蓋。

(2)技術實現

區塊鏈是一項技術,但從上面的分析能夠看出,它應該是一種架構應用,架構的實現理當是咱們知識庫的核心。正如你們看到的,任何一款區塊鏈產品,協議層必須包括點對點網絡、加密簽名、數據存儲、分佈式算法等4個部分,應用層也必然要提供錢包、客戶端瀏覽器等基礎應用。因此,把這部分獨立出來,也是合情合理。

在擴展層的部分,區塊鏈技術能夠對接各類應用,好比:金融、物聯網、網絡安全、版權保護、電子商務等等,現有的不少技術均可以用在這裏。只不過,如何與區塊鏈結合,如何實現跨行業使用,天然是這部份內容研究的課題。因此,這裏所羅列或涉及到的技術,理應歸爲技術實現的一個重要部分。

(3)開發環境

區塊鏈是多項技術的組合,有其自身的複雜性,個別應用對開發環境依賴較大,開發工具與環境搭建,是讓開發者快速上手的重要內容。

(4)項目實踐

聽說,短短數年,全球區塊鏈產品已經有幾千個,其中不乏創新應用。有些優秀的開源產品和項目實踐,是最好的學習研究資料。

(5)開發文檔

這個天然不用說了,每一種產品也都會有本身的開發文檔。另外一個,就是有心的開發者整理彙總的一些資源,能夠幫助咱們節省不少查詢的時間。

在考慮這個知識體系的過程當中,主要思考的是,讀者循着這些標籤去查閱文章,可否快速掌握區塊鏈技術,並最終上手開發實現一個區塊鏈產品。另外,也刻意規避了與具體編程語言,以及特定領域相關的詞彙,惟一能夠區分的就是這些節點之下對應的文章標籤。因此,這些分類就顯得很是中性。也考慮過使用比特幣、競爭幣、智能合約、數字資產、智能資產等具體領域的實現做爲分類方法,但又怕限制了讀者的思惟,同時隨着區塊鏈的發展,新概念將會層出不窮,那樣這個圖譜就須要不停的修改下去。

總結

這篇文章,咱們把區塊鏈技術基礎架構描述了一下,須要再次強調的是,這僅僅是一種實現方式,絕非全部的區塊鏈產品都是如此,咱們也期待更多創新出現,也相信必定會出現。能夠確定是,將來不作區塊鏈技術架構改造的企業,勒索者病毒會輕鬆破了你的系統,拿走你的數據,恣意糟蹋的你用戶,除非你痛苦的遠離網絡!

 

相關文章
相關標籤/搜索