1. 程式人生 > >分享實錄|一文讀懂區塊鏈整體架構及應用方向

分享實錄|一文讀懂區塊鏈整體架構及應用方向

image

1

區塊鏈概念及特徵

1、區塊鏈的定義

相較於區塊鏈,大家似乎更瞭解比特幣。區塊鏈是一種技術,支撐和保障整個比特幣的貨幣機制在這樣一個分散式網路中執行,包括產生、流通、交易等等。

簡單來說它就是一個賬本,在整個交易過程中,每產生一筆交易,大家都會記一筆賬,認可這個交易是有價值的,這筆錢從這個賬戶通過某種方式轉移到另一個賬戶,區塊鏈就是保證這個交易資料實時和不可篡改的一個記錄。

image

從技術的角度來看,區塊鏈是多種技術的整合。它不僅僅包括髮幣的制度,更重要的是分散式網路、加密技術、分散式資料儲存技術等多種技術的組合。

從資料儲存的角度來看,區塊鏈是一個分散式資料庫。區塊鏈網路中的所有參與的節點都在儲存資料,每個人都有一個賬本,這就解決了偽造和中心的問題。

image

區塊鏈完全使用分散式的網路。以前我們的金融交易系統更多的是中心化的,比如銀行。我們的錢存到銀行,過去很多年之後,銀行可能說找不到那個存錢的記錄了,這筆存款就作廢了,這就是中心化的一個弊端,存在單點失效的問題。

image

分散式儲存就不會存在這樣的問題,歷史上產生過的每一筆交易,每個節點的賬本都有記錄。在區塊鏈或者說比特幣的結構中,每筆交易的資訊,包括幣的產生、幣的交易,都會產生一個區塊,區塊裡包括了交易資訊和時間,通過時間戳、隨機數和前一區塊的雜湊值算一個新的區塊,新的區塊中包括當前產生的交易內容、數額大小和整個區塊大小,區塊鏈就是這麼來的。隨著交易的增加,鏈會越來越長,鏈上的所有資訊都不可刪除不可篡改。

image

如上圖所示,交易資料隨時可以回溯,任何一步都可以驗證曾經發生過的交易。

區塊鏈中每筆交易的流程都要經過上圖所示的這七步,第三步就是所謂的“挖礦”。假如有筆交易是Alice要給Bob傳送2個比特幣,就代表著網路上這2個比特幣的權屬會發生轉移。首先Alice發起交易,向全網廣播,讓全世界人都知道Alice要給Bob2個比特幣,廣播之後所有節點接收到這個訊息,礦工知道生意來了:現在有一個新的交易。於是所有礦工開始挖礦。

前面我們說每筆交易都會記錄到區塊裡去,怎麼記進去、由誰來記呢?礦工挖礦就是去爭取記賬的權利,他爭取到記賬權後,要確認這筆交易是否正常,確認後把交易資訊打包放到區塊裡,生成新的區塊,做完這些事情之後系統會獎勵給他比特幣,同時還會給他一定的交易費。挖礦的獎勵加上交易費組成礦工的收益。

這個記賬權需要礦工通過計算來爭取,礦工需要在最快的時間內通過一個隨機數加上時間戳、前一區塊的內容、本次交易的資料等計算出一個值小於給定的難度目標,(這個難度目標是根據上一個區塊的計算難度、時間和全網的算力情況來決定的),而要找到這個值,並沒有固定演算法,只能靠計算機隨機的雜湊碰撞。隨機數可以變化,而且要從0試到最大值2^32。

第一個算出來的人把得到的結果放到區塊上讓大家都認可即達成共識,經過連續6-7次確認即可認為這筆交易是可靠的,該礦工也就可以得到獎勵,比特幣是在挖礦的過程中產生的。

交易被打包進區塊,並放到了鏈上,交易雙方不可以反悔或賴賬,因為交易經過了全網廣播、全網驗證。這就是比特幣的產生和交易流程。

2、區塊鏈的特徵

image

開放、共識

區塊鏈是一個分散式網路,任何人都可以參與到網路中來,所有節點都是平等的,都擁有一份賬本,以共識機制通過競爭來維護區塊。

去中心、去信任

完全分散式的端到端的網路,沒有一箇中心化的裝置,節點之間無需互相信任。

交易透明、匿名

交易規則公開透明,交易資料公開,每筆交易都會經過全網廣播,大家都能看到和參與驗證交易的發生,同時所有參與節點都是匿名的。

不可篡改、可追溯

大部分節點同時確認新增區塊,整個區塊鏈上的資料只能增加,不能刪除,不能篡改,通過這樣的一個機制來保證在節點匿名和無需信任的狀態下建立一種信任。因為每個區塊都包含了上一區塊的資訊,所以每筆交易都是可追溯的。

3、區塊鏈的核心技術

image

區塊鏈包括四個核心技術:

  • 共識機制,即前面提到的算力的證明,礦工怎麼爭取記賬權,大家如何達成一致。

  • 公鑰機制,即交易產生的時候怎麼驗證身份。在區塊鏈裡我們用公鑰機制來進行簽名、加密和身份驗證。

  • 分散式儲存,保證整個賬本及交易的公開透明。

  • 數字化合約,即我們所說的智慧合約。

4、區塊鏈分類

image

根據應用場景不同,區塊鏈可以分為三類:公有鏈、聯盟鏈和私有鏈。

image

  • 公有鏈,比如比特幣、以太坊等,所有節點都可以參與。

  • 聯盟鏈,部分節點可加入,需要通過聯盟的稽核和授權。比如大型金融機構之間建立聯盟鏈。

  • 私有鏈,一般在企業內部使用。

5、解決信任

區塊鏈的整個設計思想就是為解決信任問題。分散式網路、全部節點共同記賬、共識機制等都是為了解決“在一個網路中大家沒有信任的情況下如何保證交易的可信”的問題。

image

從技術層面來看,多方參與,即分散式網路當中所有節點都參與,每次交易礦工通過計算競爭記賬權,保證記賬機會每個節點都公平擁有,而且計算結果需要經過大部分節點驗證才能證明是有效交易並寫入區塊,個人修改或改變資料不影響整個賬本的交易資料,保證交易的可信和不可篡改。

從經濟層面看,通過這種方式降低了交易成本,實際上很多交易成本就在於信任的建立。淘寶做起來的一個很重要的原因就是它通過支付寶這個第三方平臺來做背書,解決了電子商務中交易信任的問題。區塊鏈通過保證每筆交易都被記錄、交易資料雙方不能篡改、每筆交易都經過節點共識並可追溯,讓交易可信,不用擔心反悔或欺詐。

2

區塊鏈技術架構

1、區塊鏈技術架構

image

區塊鏈技術架構可以分為以下幾層:

  • 應用層,比如我們向錢包、客戶端記賬或轉賬。

  • 激勵層,比如怎麼挖礦、怎麼分配比特幣的機制。

  • 共識層,通過POW、權利證明等方式爭取記賬權。

  • 網路層,區塊鏈主要是通過P2P網路來保證整個分散式網路當中的傳播和驗證機制。

  • 資料層,包括區塊資料怎麼生成、數字簽名、雜湊計算、整個鏈式結構的生成、以及非對稱加密。

image

最核心的是交易的生成,上圖所示是實際的一個區塊的產生過程,每個區塊都有它的前一個區塊,通過前一個區塊的資訊結合當時交易發生的時間戳以及隨機數進行計算,求得一個小於目標難度值的數,通過其他節點認證,大家認可就生成一個新的區塊雜湊值,寫到新的區塊中。每一個區塊都是這麼產生的,在整個交易鏈條中環環相扣。因為每個區塊中都包含上一個區塊的資訊,因此它可以從後往前追溯,同時不可篡改。

image

上圖是實際發生的一筆交易,塊的高度等都在裡面,能夠實現快速檢索是誰算出的隨機數、廣播的是誰、廣播的內容和時間等資訊。

而所有使用者都是匿名的,這也是比特幣交易在黑市流行的一個很重要的原因。

image

激勵層就是發幣的機制,前面提到任何一筆交易廣播後,所有節點都會去爭搶記賬權,獲得記賬權完成記賬後就會有獎勵,比特幣就是通過挖礦獎勵產生。比特幣的總量也不是無窮的,每四年減半。當比特幣全部產生之後,礦工的收益就只有交易費,這也是比特幣不會導致通脹的原因。

image

區塊鏈技術中最核心的是共識機制,共識機制是獲取記賬權的憑證。共識機制包括:

  • POW,工作量證明,即通過算力爭奪記賬權。

  • POS,權益證明,誰擁有的比特幣越多,獲得記賬權的概率就越大。

  • BFT,拜占庭容錯協議,實際上整個共識機制就解決了所謂的拜占庭將軍問題,少數節點不會影響多數節點的共識。

image

瞭解一下比特幣的雙花,這是比特幣或者區塊鏈面臨的一個安全問題。還是剛才的例子,Alice要給Bob2個比特幣,從Bob那買一千克黃金,Bob答應了,Alice在網上公佈說要跟Bob發生一筆交易:Alice用2個比特幣買Bob的一千克黃金。而Alice具有足夠的算力,網路公佈之後,大家去計算,算出來之後會生成一個新的區塊放到上面,因為全網確認需要一段時間,在這個過程中Alice撤銷了,又告訴全網說我要把這2個比特幣給第三個人不給Bob了,然後又在全網廣播,節點收到新的交易訊息又開始挖礦,也算出來一個數,這樣的話就會發生分叉,其他節點在同步賬本的時候就會面臨兩個新的區塊選擇哪一個的問題。

區塊鏈裡的機制是選擇長的鏈,所以前面說到需要在5-6個區塊後才能確認交易可靠,節點根據這個長的鏈同步資料,短的鏈就被撤銷掉了,以此來共同來維護這個賬本。解決這個問題我們需要在確認的時候有一個延時的機制,也就是說當延時一定程度之後再確認,使得它在這個時間當中不可能快速地去建立一個更長的鏈來撤銷這個交易,這是時間也是根據當前整個網路的算力來估計的。理論上有雙花的可能,但實際上發生的概率非常低。

回顧一下比特幣的交易機制。

image

首先交易輸出,比如我要從我的錢包裡拿出2個比特幣來進行交易,我要先對這兩個比特幣進行鎖定,再告訴全網我要發起這筆交易,這2個比特幣屬於交易狀態,即在交易中不能再交易,然後用公鑰私鑰進行加密和簽名。

然後是交易輸入,支出方用私鑰簽名和加密,接收方同時用公鑰加密,完成雙重加密後,由礦工打包區塊、節點完成共識,驗證交易後,雙方共同用公鑰和私鑰進行驗證並解密,完成交易。

也就是說整個交易過程中,首先是對交易賬戶中的餘額即交易的內容做鎖定,雙方確定之後再解鎖,然後從賬戶里扣除掉想要的交易數和手續費。

2、區塊鏈應用架構體系設計

image

這是整個區塊鏈的應用架構體系設計圖,我們可以根據這樣的思路構建一個應用:

首先是區塊鏈協議,整個賬本怎麼建立、賬本狀態怎麼更新、賬本歷史怎麼證明、賬本當中節點怎麼更新、智慧合約指令如何保證智慧合約引擎。

其次元件模型是實現這些協議的內容,包括共識網路、賬本、持久化引擎、合約引擎等。

最上面是服務平臺,包括閘道器、服務、節點網路、SDK、工具等。

image

簡單展開介紹一下。三大塊:

區塊鏈協議,我們自己開發相應的區塊鏈技術和應用的時候,一定要定義自己的區塊鏈協議,比如賬本怎麼建立、區塊怎麼構建、獎勵怎麼設定、賬本怎麼操作、賬本的資料怎麼更新、怎麼計算等。基於這樣的一個協議,來開發相應的支援賬本和狀態更新、歷史證明、賬本新增等的元件。最後再提供服務平臺。

image

在協議設計時有3個原則:

  • 面向業務。一定要面向我們的具體業務,利用區塊鏈的思想解決具體業務中的什麼問題,要解決什麼問題決定了這個賬本應該怎麼設計。

  • 標準化。我們的業務一般會涉及多個主體,這種情況下我們應該儘量讓區塊鏈協議標準化,解決各個主體之間資料互動的問題。

  • 鬆耦合和模組化。定義模組間清晰的介面,實現模組之間的鬆耦合,以此獲得整個系統的擴充套件性,滿足不同使用者和場景的需要,採用可插拔的模組元件。

image

區塊鏈應用模型設計,包括3步:

  • 定義身份。所有參與這個鏈的節點的身份都要通過某種方式來驗證。

  • 編寫智慧合約。賬戶驗證的同時,我們要使得交易正常進行的話,需要把參與者之間達成的商業協議以智慧合約程式碼的形式進行定義。智慧合約最核心的是提高效率,降低交易的可替代性。之前合約的簽訂具有主觀性,容易產生違約的情況,智慧合約是通過程式碼的形式統一規則,保證只要滿足合同所約定的條件就會自動執行,誰也不能更改。

  • 簽署智慧合約。智慧合約最後需要經過參與者以各自的身份賬戶做出簽署,之後每一方參與者只需要根據業務範圍內的業務程序做出相應的操作,觸發智慧合約執行。

image

確定了應用模型後,我們進行區塊鏈應用賬本協議設計

賬本協議是從資料的角度定義模型。賬本資料的標準格式:包括賬本狀態、賬戶的歷史證明等。讀寫賬本資料的指令的標準格式:包括賬本操作集、合約指令集。

image

再來看區塊鏈應用元件模型設計,區塊鏈應用元件模型包括共識網路、賬本、持久化儲存、合約引擎。

image

共識網路包括演算法的使用和共識過程兩方面。

共識網路中共識演算法可以根據整個應用的業務需求來設定,只要滿足標準化和具備不可偽造性的條件,可以通過網路當中參與的節點證明它所有的權益就可以。

共識過程包括怎麼證明交易在網路上擴散;如果發生兩個節點具備同樣能力的情況,怎麼進行交易排序;在產生交易的時候如何呼叫交易執行程式;如何對交易結果進行全網共識?如何提交共識結果生成塊?

image

  • 賬本。賬本狀態和合約分離,使用基於身份的訪問控制協議約束合約對狀態的訪問,這種將資料和邏輯分離的設計模式是典型的貧血模式,可為上層業務邏輯提供無狀態的邏輯抽象。

  • 持久化儲存。利用成熟的NoSQL資料庫實現持久化儲存。

  • 合約引擎。前端包括合約高階語言規範及其工具鏈;後端提供輕量級合約中間程式碼執行環境。

image

最後來看區塊鏈應用服務層設計

  • 區塊鏈閘道器,包括私鑰管理、隱私保護、協議轉換。

  • 區塊節點服務,包括賬號管理、節點進入網路的認證授權、賬本資料訪問框架、網路當中整個交易的事件通知機制、智慧合約管理等。

image

  • 區塊鏈共識網路,由共識節點組成的網路,基於P2P網路和共識演算法確保交易資料在節點之間保持一致。

  • 工具,配套的工具集合包括SDK、資料管理、安裝部署工具、監控服務。

3

區塊鏈應用解析

image

1、區塊鏈適合解決哪些問題?

第一類:業務開展需要跨主體合作。也就是需要很多個單位或業務部門合作並且有很多流程的時候,區塊鏈可以解決多主體之間的信任問題,提升交易效率。

image

對於此類問題目前的一種解決方式是:有一箇中心化的節點去協調業務開展,各方存在成本分攤及資料隱私的問題,成本較高,且參與各方不願意把自己的資料貢獻出來。

另外一種是SOA方式,因為要打通各業務方之間的資料,技術比較負責,方案缺少通用性,只能解決當前特定業務領域的問題,難以支援複雜業務。

以上兩種方式都難以防止資料被篡改。

利用區塊鏈可以做到:共有資料,通過加密的方式既保證了資料的隱私也可以做到防篡改,利用分散式和數字化合約的特點能夠將一些業務層面的協調解決問題放在技術層面解決,更高效靈活客觀。

第二類:對方參與並需要低成本信任。參與的節點很多,節點之間驗證或構建信任的成本又要比較低。

image

第二類問題需要多方參與同時又要求低成本信任。

首先要解決資料可信的問題。傳統的方式是資料由中心節點強勢持有,比如傳統的銀行等,資料可信由資料持有者的商業或社會信用來保證,只能建立主觀的可信;區塊鏈結合密碼學雜湊和數字簽名,以區塊鏈的形式將資料變更歷史結合,通過共識協議使得參與方共同擁有資料,多方持有相同資料副本,並資料被簽名確認,資料變得可信。

其次是合約履行。通過智慧合約的方式,使得整個業務方之間確定的這種合同協議自動化客觀地執行,只要滿足條件,合約就會自動執行,降低履行成本,確保高效履約,一般的契約是事後以人的主觀意願來執行,智慧合約是在觸發條件被滿足後,由計算機程式來保證合約及時執行,具有客觀性。

最後是歷史可證明。固話交易歷史,並提供對交易歷史的追溯查詢,保證交易的不可篡改和不可抵賴,保留參與交易各方可信的歷史記錄。

第三類:業務存在長週期交易。

image

第三類問題是業務過程存在長交易、長週期鏈條。最典型的就是供應鏈,業務在多個主題之間流轉,難以確定間接主體的真實性和有效性,由於多主體間業務隔離,難以延伸出多級業務。區塊鏈從技術上保證整個長交易、長週期鏈條的各參與主體身份真實,資料可信,實現信用多級傳遞,提升業務效率。

2、區塊鏈應用生態圈

image

區塊鏈應用最典型的場景是金融,包括跨境支付、保險、政權、股權登記等。

image

跨境支付方面,目前市場上跨境支付存在中心節點的問題,商業機構之間對賬導致跨境交易時間變長,一筆交易對賬可能需要幾天的時間。

image

保險理賠方面,以前保險理賠需要準備很多材料經過各種核實,過程很長。通過智慧合約的應用,既無需投保人申請,也無需保險公司批准,只要觸發了理賠條件就能事先自動理賠和支付。整個理賠過程會在區塊鏈上向全網廣播,因為區塊鏈資料不可篡改不可造假的特點,還能大大較低騙保的概率。

政券交易方面,將股權整合進區塊鏈中成為數字資產,可實現無需通過中介機構直接發起權屬轉移等交易。

票據方面,藉助分散式高容錯性和非對稱加密演算法可實現票據價值的去中心化傳遞,較低對傳統業務模式中票據交易中心的依賴,降低系統中心化帶來的運營和操作風險。

image

區塊鏈在公共服務領域的應用主要是文化、教育、產權登記、醫療健康等方面。文化方面,主要是版權保護。

3、區塊鏈技術在國內外佈局

image

image

image

image

4、區塊鏈技術應用解析:共享經濟

image

接下來舉個典型的應用案例:Airbnb

image

Airbnb是一個P2P房屋共享平臺,最大的問題是房主和房客之間的信任。房主會擔心住進來的這個人不安全,房客去到一個陌生的地方同樣會擔心這個房子或房東的安全。

快速解決信任問題,目前的方式是使用者註冊賬戶之後要做一個身份驗證,網站會保證所有使用者都是實名的。房客會通過線上交流的方式對房東和房子的情況做一些瞭解,同時房東也會對房客進行考察,這個人的信用怎麼樣、有沒有租過房子、什麼背景、要不要租房子給他等等。這個過程會很長,因為這是個全球化的平臺,還涉及到時區的問題,一個交易有時候可能會需要20-30小時來確認。確認後預定交易最後互評,整個過程非常長。

image

這種方式存在的痛點包括:房主和顧客交流耗費大量時間;評價房主、顧客和房屋存在困難,會有類似刷單的行為;支付和擔保速度慢。

image

區塊鏈技術恰恰是針對解決信任問題,信任問題解決後所有痛點也將迎刃而解。比如快速在房東和顧客之間建立信任,就可以縮短交流時間,甚至可以不用交流。入住就將錢打給房東也就解決了支付和擔保的問題。

信任怎麼建立呢?通過區塊鏈的方式每一個交易都在區塊鏈的網路中進行,所有人都可以看到交易的整個過程,顧客身份資訊的提交經過匿名化的加密處理,通過簽名來保證賬戶資訊的有效性,預定的時候通過加密機制保證預定的安全,驗證預定可信後整個交易會讓網路中的所有節點知曉,信用也會在交易中體現並記錄,取消或偽造交易的作惡行為同樣也會被記錄在網路中,成為下次交易的判斷依據。

同時會有一個智慧合約,觸發入住條件後自動將錢打給房東。最後評價機制設定上通過區塊鏈的方式保證評價的可追溯、不可篡改和不可偽造。

image

從三個方面解決整個交易的信任問題,同時也提升了交易效率。

5、區塊鏈應用解析:供應鏈

image

物流供應鏈中存在兩個比較明顯的痛點:資訊不透明、不流暢,交易效率低;糾紛處置難,舉證追責難。

image

我們通過區塊鏈技術保證整個物流的每個環節都生成一個塊,形成每一步都可溯源的鏈。解決思路是:

  • 首先各方交易資料公開透明,加快資訊流提升效率;

  • 其次交易資料不可篡改,便於舉證和追責;

  • 最後交易資料可追溯,杜絕虛假交易和假冒偽劣。

區塊鏈在供應鏈的兩個應用場景:物流和溯源防偽

image

物流方面主要是:利用數字簽名機制保證無法偽造簽名,防止貨物丟失冒領;通過真實身份證生成數字化身份證,既能保護個人隱私,又能落實實名制度;簡化物流流程。

溯源防偽方面主要是:資料完整性和不可篡改;商品交易全流程記錄;貴重物品的防偽溯源。

內容來源:HiBlock區塊鏈線下沙龍西安站 趙建強老師的分享《區塊鏈整體架構及應用案例分析

本文編輯:Cynthia

HiBlock區塊鏈社群線下沙龍下一期時間:5月27日

以下是我們的社群介紹,歡迎加入各種合作、交流、學習)

image