- 區塊鏈開發實戰:Hyperledger Fabric關鍵技術與案例分析
- 馮翔
- 9573字
- 2019-01-04 18:13:39
第1章 全面認識區塊鏈
人類自誕生以來,一直對物質移動的速度有著孜孜不倦的追求和探索。在人類探索和改造世界的過程中,絕大多數具有顛覆性的技術創新都與物質傳遞的速度有著非常密切的聯系。比如輪子改變人和物體傳遞的方式,鐵軌改變人和物體傳遞的效率,電力的出現改變了能量的傳遞方式,互聯網的誕生則是徹底顛覆了信息傳遞的方式和效率。
區塊鏈技術被認為是輪子、鐵軌、電力、互聯網之后,又一個具備顛覆性的核心技術。作為一種構建價值互聯網的底層技術,區塊鏈改變的將是價值傳遞的方式。區塊鏈的出現將解決人類社會誕生以來一直在思考的問題——如何獲取未知的信任。區塊鏈技術到底是怎樣一種技術?本章將從宏觀角度介紹這個問題。
1.1 區塊鏈技術的起源和解釋
提到區塊鏈技術,比特幣是無法回避的一個重要部分,因為比特幣是迄今為止出現最早、規模最大、運行最穩定、技術最成熟的基于區塊鏈技術的應用。2008年一個網名叫“中本聰”的人發表了一篇名為《比特幣:一個點對點的電子現金系統》的論文。在該論文中,“中本聰”描繪了一個完全去中心化的電子現金系統,在這個系統中每一個參與者都是獨立并且對等的,這些參與者不依賴于通貨保障或者結算交易驗證保障的中央權威。
為了實現這套系統,相關的技術社區利用密碼學中的橢圓曲線數字簽名算法(ECDSA)來實現數據的加密,基于P2P網絡來實現數據的分布式存儲,從而實現了一個去中心化的,不可逆、不可篡改的特殊數據存儲系統。這套系統就是目前被稱為區塊鏈技術的雛形。比特幣就是構建在區塊鏈技術之上典型的成功應用。比特幣系統這些年來穩定而且高效的運行,證明了這些技術理論的正確性和可靠性。
隨著業界對比特幣系統技術架構的深入了解,人們發現這些技術除了應用在比特幣上面之外,還能應用在其他領域。于是相關技術社區將這些技術抽象之后給它們起了一個統一的名字:區塊鏈。從此區塊鏈脫離比特幣成為一門單獨的技術。
目前區塊鏈已經成為一個獨立的技術名詞,而不是依賴于某個具體產品的附屬技術。區塊鏈這個技術名詞,從不同的角度看會有不同的解釋。
● 從網絡的角度看:區塊鏈的底層網絡模型提供了分布式數據存儲的完美實現,比特幣系統從誕生至今沒有發生過一次宕機事件,這有利地證明了該網絡模型的穩定和高效。
● 從底層技術的角度看:區塊鏈更像是一個數據結構,用區塊存儲數據,把區塊按照順序鏈接起來組成區塊鏈,從而達到防止數據被篡改的目的。
● 從密碼學的角度看:區塊鏈利用橢圓曲線數字簽名算法來保證數據的完整性和真實性。
● 從數據存儲的角度看:區塊鏈更像是一個分布式數據庫,不但數據的存儲是分布式的(以共享賬本為例,所有的數據可以對等地存儲在所有參與數據記錄的節點中,而非集中存儲于中心化的機構節點中),而且數據的產生也是分布式的(賬本所有的節點集體維護,而非一個單獨的中心機構來維護)。
區塊鏈技術源于比特幣但是高于比特幣,發展至今,已經形成一個非常完整的技術棧。區塊鏈技術棧中的每個單項技術并不是新發明的技術,如果將這些單項技術單獨提取出來,都是比較普通的,但正是這些普通的技術通過精巧地組合之后誕生了一項足以顛覆世界的新技術。這和雞尾酒非常相識,組成雞尾酒的每個單獨的原料都非常普通,但是組合之后就產生了非常神奇的化學反應,從而誕生了一個讓人癡迷的新事物。
套用一句網絡流行的話,重要的事情要說三遍:區塊鏈不是一個單獨的技術,而是由多種技術組成的技術棧,在學習區塊鏈技術的時候一定要注意區塊鏈技術的這個特性。所以如果想學會區塊鏈技術首先需要對組成區塊鏈技術棧的各個單項技術有所了解,然后再開始學習相關的區塊鏈技術框架,這一點在基于區塊鏈技術的項目實施中尤其重要。
1.2 區塊鏈的核心技術及其特性
通過前面章節的介紹我們知道區塊鏈技術是一個技術棧,由多種相關技術組成。那么區塊鏈技術棧到底是由哪些具體技術組成的呢?在回答這個問題之前,我們先要了解一下區塊鏈具有哪些特點。
1.2.1 區塊鏈技術的特性
區塊鏈技術有什么特點?這個問題很多人從不同的角度定義過。在這里,我們引用維基百科上面的說明:“區塊鏈技術是基于去中心化的對等網絡,用開源軟件把密碼學原理、時序數據和共識機制相結合,來保障分布式數據庫中各節點的連貫和持續,使信息能即時驗證、可追溯,但難以篡改和無法屏蔽,從而創造了一套隱私、高效、安全的共享價值體系。”通過這段描述我們可以把區塊鏈技術的特點歸納為以下幾點:
● 區塊鏈沒有一個統一的中心,數據分布式存儲,并且每個節點是對等的。
● 數據存儲按照特定的時序組織并且采用密碼學原理加密,這樣使得數據不可篡改(密碼學加密)并且可以追溯(時序組織)。
● 數據的創建和維護由所有參與方共同參與,任何一方都不能在不經過其他參與方允許的情況下獨立對數據進行維護。
這些特性是絕大多數區塊鏈技術的基本特性,但是隨著對區塊鏈技術的深入研究,人們發現這些特性已經不能滿足業務的需求,因此在區塊鏈技術中增加了一些新的特性,這些新增的特性中最重要的就是智能合約。區塊鏈的智能合約是條款以計算機語言而非法律語言記錄的智能合同。智能合約讓我們可以通過區塊鏈與真實世界的資產進行交互。當一個預先編好的條件被觸發時,智能合約執行相應的合同條款。
通過上面的描述我們可以發現區塊鏈技術具有分布式數據庫、密碼學、P2P網絡等技術特點。區塊鏈的這些技術特點,使得通過區塊鏈技術可以構建一個去中心化的、安全的、對等的、不可更改的價值傳播網絡。這些技術通過精巧的組合之后,形成了一種全新的數據記錄、傳遞、存儲與展現的方式。以前數據的存儲和維護都是由一個統一的中心機構來完成,而區塊鏈技術可以讓所有數據的參與方都有機會成為數據維護者。區塊鏈技術在沒有中央控制點的分布式對等網絡下,使用分布式集體運作的方法,構建了一個P2P的自組織網絡。通過復雜的校驗機制,區塊鏈數據庫能夠保持完整性、連續性和一致性,即使部分參與者作假也無法改變整個區塊鏈的完整性,更無法篡改區塊鏈中的數據。
現在我們可以對區塊鏈的技術特點進行一下總結。區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。區塊鏈技術棧包含了以下技術特性:
● 分布式數據庫的技術特性
● 密碼學特性
● 共識機制
● 智能合約
1.2.2 區塊鏈的分布式存儲技術特性
從技術的特性上看,區塊鏈具有分布式數據庫技術的特點。傳統的關系性數據庫都必須滿足ACID原則,ACID原則本質上是對事務而言的。在傳統的關系型數據庫中,事務是一個不能分割的操作單元。因此對于傳統的關系數據庫而言,事務必須具備以下四個特性:
● 原子性(Atomicity):事務中的所有操作要么全部執行,要么全部拒絕,沒有任何中間狀態;
● 一致性(Consistency):數據庫的完整性約束不會被任何事務破壞;
● 隔離性(Isolation):多個事務完全隔離開來,一個事務的執行不會被其他事務所影響;
● 持久性(Durability):一個事務完成之后,該事務對數據庫的變更會被永久地存在數據庫中。
從ACID四個屬性我們看出,區塊鏈可以滿足上面的部分特性。
● 原子性,區塊鏈的數據存儲在區塊中,一個區塊鏈中的數據要么全部進入區塊鏈,要么全部被丟棄。
● 一致性,區塊加入區塊鏈之后原有的區塊鏈保持不變。
● 隔離性,所有節點可以同時生成區塊,但是最終只有一個區塊可以加入區塊鏈中。
● 持久性,一旦區塊加入區塊鏈中,就會被永久保存并復制到其他節點。
移動互聯網對數據的存儲數量以及數據的讀寫速度都提出了更高的要求,因此基于ACID的關系數據已經不能滿足于業務的需求。相關技術社區在原有的ACID數據庫的基礎上面創建了分布式數據庫系統。分布式數據庫系統有這樣一些特點,我們稱之為BASE。BASE是一組單詞的首字母縮寫,它們是:
● 基本上可用(basically available):主要的需求是可用性,即使出現劃分的情況下,也應該允許更新,哪怕以犧牲一致性為代價;
● 軟狀態(soft state):網絡劃分可能導致數據庫每個副本都有一定程度不同的狀態,從而導致整體狀態不明;
● 最終一致性(eventually consistent):當解決完劃分后,要求最終所有副本形成一致。
和ACID的強一致性概念比較,BASE面向的是可擴展的分布式系統。BASE在犧牲強一致性的基礎上換取了可用性,允許在某個時間段內不同節點之間存在數據的不一致性,但是最終所有節點的數據都是一致的。而區塊鏈的節點是分布在全世界各個地方的,在一定的時間段內,不同節點的區塊數存在不一致的情況,但是最終都是一致的。所以我們認為區塊鏈是符合分布式數據庫BASE規則的。通過上面的對比我們發現,區塊鏈符合傳統的關系數據庫和互聯網時代的分布式數據庫特性。
1.2.3 區塊鏈的密碼學技術特性
為了保證數據的不可逆、不可篡改和可追溯,區塊鏈采用了一些密碼學相關的技術。主要使用的是哈希算法、Merkle樹、非對稱加密算法這三種密碼學中常用的技術。
1.哈希算法
哈希算法將任意長度的二進制值映射為較短的固定長度的二進制值,這個小的二進制值稱為哈希值。哈希值是一段數據唯一且極其緊湊的數值表示形式。如果哈希一段明文而且哪怕只更改該段落的一個字母,隨后的哈希值都會發生變化。要找到哈希值相同而輸入值不同的字符串,在計算上是不可能的。所以數據的哈希值可以檢驗數據的完整性。在哈希算法中如果輸入數據有變化,則哈希也會發生變化。哈希算法可用于許多操作,包括身份驗證和數字簽名(也稱為“消息摘要”),不過一般用于快速查找和加密算法。
區塊鏈的數據是存儲在區塊中的,每個區塊都有一個區塊頭,區塊頭存儲區塊中所有數據經過哈希算法獲取的一個哈希值,同時每個區塊中存儲前面一個區塊的哈希值,這樣每個區塊都會通過所存儲的前一個區塊的哈希值串聯起來,這樣就形成了區塊鏈。如果有人試圖篡改其中的一筆交易,勢必會導致該交易所在區塊的哈希值發生變化,為了使得被篡改的交易得到所有節點的認可,篡改者需要以被篡改的節點為起點,重新計算后面的所有區塊,但是如果要讓所有的節點都承認和接受這些篡改,那基本上是不可能完成的事情了。從這里我們可以發現哈希算法的應用使得篡改的成本已經遠遠超過收益了。
區塊鏈系統常用的哈希算法是SHA256和RIPEMD160。SHA256是SHA算法的一個變體。SHA(安全散列算法)是由美國國家安全局(NSA)設計,美國國家標準與技術研究院(NIST)發布的一系列密碼散列函數,包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512等變體。這些算法主要適用于數字簽名標準(Digital Signature Standard DSS)里面定義的數字簽名算法(Digital Signature Algorithm DSA)。SHA256算法在抗碰撞性和效率之間做了一個平衡處理,在很多區塊鏈系統中均支持SHA256哈希算法。
對于哈希算法來說,抗碰撞性越高,相對需要的計算資源越大,對系統性能也會有一定的影響。因此很多區塊鏈系統可以通過配置參數修改算法,使用者可以根據業務需求選擇合適的哈希算法。
2. Merkle樹
通過前面的描述我們知道區塊中的數據是存儲在區塊中的,一個區塊中會存儲若干數據,那么這些數據是以什么樣的方式組織才能夠做到不可篡改呢?Merkle樹解決了這個問題。
(1)什么是Merkle樹
Merkle樹是一種樹(數據結構中所說的樹),通常稱為Merkle Hash Tree。組成Merkle樹的所有節點都是哈希值。Merkle樹具有以下特點:
● Merkle樹是一種樹型數據結構,可以是二叉樹也可以是多叉樹,具有樹型結構的所有特點;
● Merkle樹的葉子節點上的value可以任意指定,比如可以將數據的哈希值作為葉子節點的值;
● 非葉子節點的value是根據它下面所有的葉子節點值,然后按照一定的算法計算得出的。如Merkle樹的非葉子節點value是將該節點的所有子節點進行組合,然后對組合結果進行哈希計算所得出的哈希值。
(2)Merkle樹的應用領域
目前,在計算機領域Merkle樹多用來進行比對以及驗證處理。比特幣錢包服務用Merkle樹的機制來做“百分百準備金證明”。在處理比對或驗證的應用場景中,特別是在分布式環境下進行比對或驗證時,Merkle樹可以大大減少數據的傳輸量以及計算的復雜度。
(3)Merkle樹的優點
Merkle樹明顯的一個好處是可以單獨拿出一個分支(作為一個小樹)來對部分數據進行校驗,這個特性在很多使用場合可以帶來哈希列表所不能比擬的方便和高效。
(4)Merkle樹在區塊鏈中的應用
在區塊鏈中,區塊中的交易是按照Merkle的形式存儲在區塊上面的。每筆交易都有一個哈希值,然后不同的哈希值向上繼續做哈希運算,最終形成了唯一的Merkle根。這個Merkle根將會被存放到區塊的區塊頭中。利用Merkle樹的特性可以確保每一筆交易都不可偽造。
3.非對稱加密算法
加密算法一般分為對稱加密和非對稱加密,非對稱加密是指為滿足安全性需求和所有權驗證需求而集成到區塊鏈中的加密技術。非對稱加密通常在加密和解密過程中使用兩個非對稱的密碼,分別稱為公鑰和私鑰。非對稱密鑰對具有兩個特點:一是用其中一個密鑰(公鑰或私鑰)加密信息后,只有另一個對應的密鑰才能解開;二是公鑰可向其他人公開,私鑰則保密,其他人無法通過該公鑰推算出相應的私鑰。
非對稱加密一般劃分為三類主要方式:大整數分解問題類、離散對數問題類、橢圓曲線類。大整數分解問題類指用兩個較大的質數的乘積作為加密數,由于質數的出現具有不規律性,想要破解只能通過不斷試算。離散對數問題類指的是基于離散對數的難解性,利用強的單向散列函數的一種非對稱分布式加密算法。橢圓曲線類指利用平面橢圓曲線來計算成組非對稱特殊值,比特幣就使用此類加密算法。
非對稱加密技術在區塊鏈的應用場景主要包括信息加密、數字簽名和登錄認證等。其中信息加密場景主要是由信息發送者(記為A)使用接受者(記為B)的公鑰對信息加密后再發送給B,B利用自己的私鑰對信息解密。比特幣交易的加密即屬于此場景。數字簽名場景則是由發送者A采用自己的私鑰加密信息后發送給B,再由B使用A的公鑰對信息解密,從而可確保信息是由A發送的。登錄認證場景則是由客戶端使用私鑰加密登錄信息后發送給服務器,后者接收后采用該客戶端的公鑰解密并認證登錄信息。
存儲在區塊鏈上的交易信息是公開的,但是賬戶身份信息是高度加密的,只有在數據擁有者授權的情況下才能訪問,從而保證了數據的安全和個人的隱私。區塊鏈系統每個用戶都有一對秘鑰,一個是公開的,一個是私有的。通常公鑰的密碼算法采用的是橢圓曲線算法。用戶可以通過自己的私鑰對交易進行簽名,同時別的用戶可以利用簽名用戶的公鑰對簽名進行驗證。
橢圓曲線指的是由韋爾斯特拉斯(Weierstrass)方程y2+a1xy+a3y=x3+a2x2+a 4x+a6所確定的平面曲線。若F是一個域,ai∈F, i=1,2,…,6。滿足式(1-1)的數偶(x,y)稱為F域上的橢圓曲線E的點。F域可以是有理數域,還可以是有限域GF(Pr)。橢圓曲線通常用E表示。除了曲線E的所有點外,尚需加上一個叫作無窮遠點的特殊點O。在橢圓曲線加密(ECC)中,利用了某種特殊形式的橢圓曲線,即定義在有限域上的橢圓曲線。其方程如下:

這里p是素數,a和b為兩個小于p的非負整數,它們滿足:

其中,x,y,a,b∈Fp,則滿足式(1-2)的點(x,y)和一個無窮點O就組成了橢圓曲線E。
橢圓曲線離散對數問題ECDLP定義如下:給定素數p和橢圓曲線E,對Q = kP,在已知P,Q的情況下求出小于p的正整數k。可以證明,已知k和P計算Q比較容易,而由Q和P計算k則比較困難,至今沒有有效的方法來解決這個問題,這就是橢圓曲線加密算法原理之所在。與RSA算法相比,橢圓曲線公鑰系統是代替RSA的強有力的競爭者。橢圓曲線加密方法的優點總結如下:
● 安全性能更高,如160位ECC與1024位RSA、DSA有相同的安全強度。
● 計算量小,處理速度快,在私鑰的處理速度上(解密和簽名),ECC遠比RSA、DSA快得多。
● 存儲空間占用小,ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多,所以占用的存儲空間小得多。
● 帶寬要求低,使得ECC具有廣泛的應用前景。
ECC的這些特點使它必將取代RSA,成為通用的公鑰加密算法。比如SET協議的制定者已把它作為下一代SET協議中缺省的公鑰密碼算法。
利用橢圓曲線的簽名和驗證算法,可以保證賬號的唯一性和不可冒名頂替性,同時也保證了用戶的不可抵賴性。通過這些密碼學技術的應用可以使得區塊鏈技術在沒有中心服務器的情況下做到數據的不可逆和不可篡改。
1.2.4 區塊鏈中的共識機制
區塊鏈中的一個核心概念是去中心,在區塊鏈中沒有和傳統數據庫系統一樣的中心數據庫,每個節點都是對等的,這樣就需要一套算法和機制來保證所有對等節點之間可以有效協作。這套算法和方式稱為共識機制。共識機制的存在可以有效保證各個節點之間按照既定的原則共同維護賬本。共識機制本質上是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學算法。共識算法在區塊鏈技術出現之前就已經存在,最早出現在分布式系統中。目前區塊鏈系統中常用的共識算法有PWO(工作量證明)、POS(股權證明機制)、DPOS(授權股權證明)、PBFT(拜占庭共識算法)。
1. POW——工作量證明機制
工作量證明(Proof Of Work, POW),簡單理解就是一份證明,用來確認你做過一定量的工作。監測工作的整個過程通常是極為低效的,而通過對工作的結果進行認證來證明完成了相應的工作量,則是一種非常高效的方式。比如現實生活中的畢業證、駕駛證等,也是通過檢驗結果的方式(通過相關的考試)所取得的證明。
工作量證明系統主要特征是客戶端需要做一定難度的工作得出一個結果,驗證方卻很容易通過結果來檢查出客戶端是不是做了相應的工作。這種方案的一個核心特征是不對稱性:工作對于請求方是適中的,對于驗證方則是易于驗證的。它與驗證碼不同,驗證碼的設計出發點是易于被人類解決而不易被計算機解決。
舉個例子,給定一個基本的字符串“study blockchain! ”,我們給出的工作量要求是,可以在這個字符串后面添加一個整數值,對變更后的字符串進行SHA256哈希運算,如果得到的哈希結果(以十六進制的形式表示)是以“0000”開頭的,則驗證通過。為了達到這個工作量證明的目標。我們需要不停地遞增這個整數的值,對得到的新字符串進行SHA256哈希運算。按照這個規則,我們需要經過79505次計算才能找到恰好前4位為0的哈希散列。
"study blockchain!0" => 199dd3e519f1e170e0eea67744547ffea5a435e4ddacaf0ada859b 972091ac7d "study blockchain!1" => 91de0a6ce666ee00ee8cb5893cc843b84001a4c9ffac5bc 3168b3c6c6f604217 "study blockchain!2" => 86d4fc2522d934af711049e4bd488a50a86bf2d6 57f1d9e1871c9f25d4f6ea2b ... "study blockchain!79505" => 000024f2c9e0e1cf93ef68fde a6c60e4dd0498d41aa82473c41c2f1b022b4ca1
通過這個示例我們對工作量證明機制有了一個初步的理解。有的人會認為如果工作量證明只是這樣的一個過程,那是不是只需要記住字符串后面的數字為79505計算能通過驗證就行了?當然不是的,這是一個非常簡單的例子,實際會增加很多的參數來調節計算的難度。
比特幣系統的共識機制就是基于POW算法的,但是遠遠比上面的例子要復雜得多。比特幣網絡中任何一個節點如果想生成一個新的區塊并寫入區塊鏈中,必須解出比特幣網絡給出的工作量證明的謎題。這道題關鍵的三個要素是工作量證明函數、區塊及難度值。工作量證明函數是這道題的計算方法,區塊決定了這道題的輸入數據,難度值決定了這道題所需要的計算量。
2. POS——股權證明機制
股權證明機制的基本概念是產生區塊的難度應該與你在網絡里所占的股權(所有權占比)成比例。簡單來說POS就是一個根據你持有貨幣的量和時間給你發利息的一個制度。在POS模式下有一個名詞叫幣齡,每個幣每天產生1幣齡。比如你持有100個幣,總共持有了30天,那么此時你的幣齡就為3000。這個時候如果你發現了一個POS區塊,你的幣齡就會被清空為0。你每被清空365幣齡,你將會從區塊中獲得0.05個幣的利息(可理解為年利率5%)。那么在這個案例中,利息= 3000*5%/365 = 0.41個幣,這樣只要持有貨幣就可以獲取利息(需要注意的是,5%的年利率僅僅是我們舉例,并非每個POS模式的幣種都是5%)。
POS的設計理念以及初衷主要是基于以下三個原因:
第一:眾所周知,比特幣的區塊產量每4年會減半,未來隨著比特幣區塊包含產量的逐步降低,挖礦的動力將會不斷下降,礦工人數越來越少。整個比特幣網絡有可能會逐漸陷入癱瘓(因為大家都減少了運行比特幣客戶端的時間,越來越難找到一個P2P節點去連接和同步網絡數據)。針對這個問題,POS提供了解決方案:在POS體系中只有打開錢包客戶端程序才能發現POS區塊,才會獲得利息。這促使很多不想挖礦的人也會常常打開自己的錢包客戶端,通過這樣的方法使得整個網絡更加健壯。
第二:通過比特幣的原理我們知道在若干年后隨著礦工人數的下降,比特幣很有可能被一些高算力的人、團隊或者礦池所挾持,進而進行51%攻擊。這會導致整個比特幣網絡崩潰。51%攻擊簡單來說就是當你擁有了超過全球51%的比特幣算力時,你將能偽造比特幣網絡的任何數據。比如你偽造自己有一百萬個比特幣(實際上你沒有),你可以通過你的算力強迫其他節點接受你的虛假交易,但是這樣將導致整個體系的崩潰。針對這個問題,POS的解決方案是:在POS體系中即使你擁有了全球51%的算力也未必能夠進行51%攻擊。因為有一部分的貨幣并不是挖礦產生的,而是由利息產生(利息存放在POS區塊中),這要求攻擊者還需要持有全球超過51%的貨幣量,這將大大提高51%攻擊的難度。
第三:雖然我們知道比特幣是一個永遠不會通貨膨脹的體系,因為它的貨幣總量表面看起來是固定的,但是我們應該知道比特幣其實是一個通貨緊縮的體系。因為當我們重裝了系統或者忘記了錢包密鑰的時候,我們會永遠無法再拿回錢包里的錢。這意味著每年都會有一些比特幣隨著錢包的丟失而永遠被鎖定,這就形成了實質上的通貨緊縮。也許在五十年后,有效的比特幣將會只剩下一千萬個或者更少。POS部分解決了這個問題,在POS體系中由于一部分貨幣是由利息產生的,因此整個體系中會不斷地產生新的貨幣。
3. DPOS——委托權益證明
在區塊鏈中共識算法被用來保證整個區塊鏈網絡的安全可靠。在前面我們介紹了工作量證明(POW)和權益證明(POS)這兩種共識算法。但是這兩種共識算法都不能解決交易性能問題,尤其是POW算法大量消耗計算所需的電力。而委任權益證明(DPOS)共識算法正是為了解決這些問題而誕生的。
委任權益證明(Delegated Proof of Stake, DPOS)最初由比特股(BitShares)提出并采用。目前DPOS已經在除了比特股之外的多個區塊鏈技術平臺上面可靠運行。這足以證明DPOS算法是健壯、安全和有效的。在DPOS算法中持有一定數據量貨幣的可成為股東,每個股東按其持股比例擁有影響力。超過51%股東投票的結果將是不可逆且有約束力的。為達到這個目標,每個股東可以將其投票權授予一名代表。獲票數最多的前100位代表按既定時間表輪流產生區塊。每名代表分配到一個時間段來生產區塊。所有的代表將收到等同于一個平均水平的區塊所含交易費的1%作為報酬。如果一個平均水平的區塊含有100股作為交易費,一名代表將獲得1股作為報酬。網絡延遲有可能使某些代表沒能及時廣播他們的區塊,理論上將導致區塊鏈分叉。但是這種現象在DPOS算法中不太可能發生,因為制造區塊的代表可以與制造前后區塊的代表建立直接的聯系。建立這種與你之后的代表(也許也包括其后的那名代表)的直聯系是為了確保你能得到報酬。這種模式可以每30秒產生一個新區塊,并且在正常的網絡條件下區塊鏈分叉的可能性極其小,即使發生也可以在幾分鐘內得到解決。由此可見DPOS算法是對POS算法的有效補充。
4. PBFT——拜占庭共識算法
PBFT算法是根據拜占庭問題演變而來的拜占庭共識算法。在拜占庭問題被提出后一直有各種共識算法來解決拜占庭問題,但是無論從執行流程的復雜度還是算法效率來說,PBFT是目前公認效率最好的算法。該算法是Miguel Castro(卡斯特羅)和Barbara Liskov(利斯科夫)在1999年提出來的。PBFT算法有效地解決了原始拜占庭容錯算法效率不高的問題,將算法復雜度由指數級降低到多項式級,使得拜占庭容錯算法在實際系統應用中變得可行。
關于拜占庭將軍問題,一個簡易的非正式描述如下:
拜占庭帝國想要進攻一個強大的敵人,為此派出了10支軍隊去包圍這個敵人。這個敵人雖不比拜占庭帝國,但也足以抵御5支常規拜占庭軍隊的同時襲擊。基于一些原因,這10支軍隊不能集合在一起單點突破,必須在分開的包圍狀態下同時攻擊。他們任一支軍隊單獨進攻都毫無勝算,除非有至少6支軍隊同時襲擊才能攻下敵國。他們分散在敵國的四周,依靠通信兵相互通信來協商進攻意向及進攻時間。困擾這些將軍的問題是,他們不確定隊伍中是否有叛徒,叛徒可能擅自變更進攻意向或者進攻時間。在這種狀態下,拜占庭將軍們能否找到一種分布式的協議來讓他們能夠遠程協商,從而贏得戰斗?這就是著名的拜占庭將軍問題。
應該明確的是,拜占庭將軍問題中并不去考慮通信兵是否會被截獲或無法傳達信息等問題,即消息傳遞的信道絕對可靠。Lamport已經證明了在消息可能丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。所以,在研究拜占庭將軍問題的時候,我們已經假定了信道是沒有問題的,并在這個前提下,去做一致性和容錯性相關研究。
5. Casper——投注共識
Casper是以太坊提出的下一代的共識機制,從原理上看,Casper屬于POS。Casper的共識是按塊達成的,而不是像POS那樣按鏈達成。為了防止驗證人在不同的世界中提供不同的投注,這里還有一個簡單嚴格的條款:如果你有兩次投注序號一樣,或者說你提交了一個無法讓Casper合約處理的投注,你將失去所有保證金。從這一點我們可以看出,與傳統的POS不同,Casper有懲罰機制,這樣非法節點通過惡意攻擊網絡不僅得不到交易費,還面臨著保證金被沒收的風險。
6. Ripple Consensus——瑞波共識算法
瑞波共識算法使一組節點能夠基于特殊節點列表達成共識。初始特殊節點列表就像一個俱樂部,要接納一個新成員必須由該俱樂部51%的會員投票通過。共識遵循這核心成員的51%權力,外部人員則沒有影響力。由于該俱樂部由“中心化”開始,它將一直是“中心化的”,如果它開始腐化,股東們什么也做不了。瑞波系統將股東們與其投票權隔開,并因此比其他系統更中心化。
7. POET——消逝時間量證明
POET(Proof of Elapsed Time)共識算法的大致思路是這樣的,每個節點發布塊之前都要從一個enclave(在Sawtooh中它代表一個可信操作)獲取一個隨機的等待時間,等待時間最短的率先發布塊(相當于被選為leader),其中enclave是通過新型的安全CPU指令來實現的。enclave支持兩個函數“CreateTimer”和“CheckTimer”, CreateTimer用于從enclave中產生一個timer, CheckTimer會去校驗這個timer是不是由enclave產生、是否已經過期。如果滿足以上兩個條件就會生成一個attestation(憑證)。attestaion中包含的信息可以用來校驗certificate是否由該enclave產生并且已經等待了timer規定的時間。成為leader的概率與捐獻的資源是成比例的,因為是通用處理器而不需要定制礦機,所以參與的門檻比較低,節點會比較多,整個共識會更健壯。
在前面的內容中我們簡單地介紹了區塊鏈常用的共識算法。不同的區塊鏈平臺根據自身的技術特點采用了不同的共識算法。但是有一點需要說明一下,這些共識算法是區塊鏈的底層核心,在一個已經實現的區塊鏈技術平臺中,共識算法相關的模塊都已經實現,在實際項目開發不會需要架構師或者開發人員去實現這些算法,但是了解這些算法將有助于我們更好地設計基于區塊鏈的系統架構。
1.2.5 區塊鏈中的智能合約
提到智能合約首先需要說明的是,智能合約和區塊鏈原本是兩個獨立的技術。在區塊鏈誕生之初并沒有引入智能合約的概念。比如,在以比特幣為代表的區塊鏈1.0系統中并沒有智能合約的概念。隨著區塊鏈技術的發展,人們發現區塊鏈在價值傳遞的過程中需要有一套規則來描述價值傳遞的方式,這套規則應該讓機器來識別和執行而不是人,因此智能合約進入了人們的視線之內。以太坊的出現讓這種假設成為可能,而實現的方式正是依靠智能合約。
智能合約的理念可以追溯到1995年,幾乎與互聯網同時出現。密碼學家尼克·薩博(Nick Szabo)首次提出了“智能合約”這一術語。從本質上講,這些自動合約的工作原理類似于其他計算機程序的if-then語句。智能合約只是以這種方式與真實世界的資產進行交互。當一個預先編好的條件被觸發時,智能合約執行相應的合同條款。
但是在尼克·薩博提出智能合約的工作理論后,智能合約相關的技術遲遲無法落地,而且很長時間也沒有相關的產品問世。產生這種現象的一個重要原因是因為缺乏能夠支持可編程合約的數字貨幣系統和技術。區塊鏈技術的出現解決了該問題,它不僅可以支持可編程合約,而且具有去中心化、不可篡改、過程透明可追蹤等特性,這些特性天然適用于智能合約。目前智能合約技術已經成為區塊鏈技術的必備特性之一。
在區塊鏈2.0引入智能合約之后,區塊鏈真正地脫離了數字貨幣的枷鎖,成為一個獨立的技術。因為智能合約的引入,區塊鏈可以應用在更加廣泛的場景中。智能合約可以認為是區塊鏈技術的翅膀,讓區塊鏈飛得更高更遠。既然智能合約對區塊鏈如此重要,那么智能合約到底是什么呢?
智能合約本質上就是一段用某種計算編程語言編寫的程序,這段程序可以運行在區塊鏈系統提供的容器中,同時這段程序也可以在某種外在、內在條件的激活下自動運行。這樣的特性和區塊鏈技術結合之后不但可以避免人為對規則的惡意篡改,而且可以發揮智能合約在效率和成本方面的優勢。由于智能合約的代碼是存放在區塊鏈中,智能合約的運行也是在區塊鏈系統提供的容器之中的,結合區塊鏈技術所使用的密碼學原理,使得智能合約天然具有防篡改和防偽造的特性。智能合約產生的結果也是存儲在區塊中的,這樣從源頭、執行過程到結果全程都在區塊鏈中執行,保證了智能合約的發布、執行、結果記錄的真實性和唯一性。
智能合約技術首先在以太坊得以實現,在超級賬本的Fabric項目也引入了智能合約的概念。在后續章節中將詳細介紹如何在這些平臺中通過智能合約開發應用。
1.3 區塊鏈技術演進過程
通過上面的介紹我們可以發現區塊鏈技術為了使用新的業務場景而一直在改進中。到目前為止區塊鏈技術已經進入3.0時代。
● 區塊鏈1.0僅僅是一個共享賬本,只能記賬而沒有其他功能。
● 區塊鏈2.0在共享賬本的基礎上增加了智能合約,通過智能合約可以提供更加豐富的功能。
● 區塊鏈3.0進一步升級,不但能夠記錄交易還能記錄狀態,對數據進行溯源,使區塊鏈技術不再局限于數字貨幣,而是應用在更多的行業場景中。
區塊鏈的三個版本之間并沒有取代關系,每個版本都有自己的特點,它們之間沒有必然的關系并且是相互獨立的。到目前為止,每個版本的區塊鏈技術依然在各自擅長的領域發揮著重要的作用,有很多經典的應用在運行。本書將挑選其中比較有代表性的比特幣和以太坊作為代表,為大家介紹這兩個平臺的技術特性和使用方法。
1.4 區塊鏈技術的3個缺點
區塊鏈技術雖然有美好的未來和前景,但是作為一項新興的技術,和其他技術一樣,會有一個完善的過程。目前的區塊鏈系統還有一些不足和需要改進的地方,主要有以下幾個問題。
1.性能問題
區塊鏈由于其在數據完整性和不可篡改性等方面的特殊要求,每筆交易均需要打包到區塊中,然后通過計算每筆交易的Hash值,從而構造一個完整的Merkle樹,最終將交易保存到區塊中。這樣的處理方式保證了數據的安全性和完整性,但是速度會大幅下降。以比特幣系統為例,目前比特幣系統每秒只能處理大約10筆交易,這顯然是不能滿足實際的業務需求的。雖然針對性能問題也提出了很多解決方案,比如閃電網絡、石墨烯等技術,但是這些技術方案大多數還處于技術驗證中,距離實際的應用還有一段距離。
2.數據的彈性擴展問題
區塊鏈系統具有分布式系統的特性,但是到目前為止,區塊鏈系統只能做到節點的分布式,在數據存儲上還沒有提供可靠的分布式解決方案。比如比特幣的所有交易數據已經多達150G左右,并且只能部署在單臺機器上。隨著時間的推移,這些交易數據只增不減,為了應付不斷增長的交易數據,只能不斷增加單臺主機的存儲。這種存儲方式在遇到存在海量數據的業務場景中會帶來隱患。
3.易用性問題
區塊鏈技術是新興技術,雖然單個技術已經出現很久,但是這些技術組合之后產生了很多新的特性。目前技術社區普遍還處于早期階段,相關的案例、技術文檔、技術社區等普遍比較缺失。這些因素導致了區塊鏈技術在學習、推廣、落地方面出現了不同程度的障礙。這些障礙的解決還需要整個技術社區繼續努力。
1.5 區塊鏈技術常見的4個錯誤認識
1.區塊鏈就是數字貨幣
區塊鏈技術源于比特幣,可以說比特幣是一個成功的區塊鏈應用。不僅僅是比特幣,目前的以太幣等數字貨幣都是基于區塊鏈理論而實現的區塊鏈產品,但是區塊鏈和數字貨幣之間不能畫上等號。區塊鏈是一個由多技術組成的技術棧,而數字貨幣是基于區塊鏈技術的一個產品,區塊鏈除了在數字貨幣領域之外在很多其他的領域都有應用。
2.區塊鏈將取代傳統的數據庫
區塊鏈具有分布式數據庫的特性,但是區塊鏈絕不是為了取代傳統的數據庫系統。它們解決的問題是不一樣的。在未來二者之間更多的是合作的關系。
3.區塊鏈系統是否一定要挖礦
挖礦是POW共識算法中的一個行為,是比特幣等數字貨幣對POW算法的一種實現方式,但是挖礦絕對不是區塊鏈的必需品。不是所有的區塊鏈技術平臺都需要挖礦。比如Fabric就沒有采用POW的共識機制,也就沒有挖礦這一說了。目前的主流平臺中以太坊在將來也可能會支持POS的共識算法。
4.區塊鏈只能用來記賬
區塊鏈技術源于比特幣,而比特幣是一個數字貨幣系統,所有的記錄都是和交易相關的,因此自然就把這些數據集稱為賬本。在比特幣之后的區塊鏈系統中習慣把區塊鏈中存數據的集合稱為賬本,把每一條數據集稱為交易。包括很多區塊鏈系統的源碼中涉及數據存儲和單條數據的變量命名中都包括Ledger和Transaction等單詞。這樣給人的感覺是區塊鏈是用來記賬的。這其實是個誤會,區塊鏈技術發展到今天,其應用范圍遠遠超出了數字貨幣的范疇,在很多領域均有廣泛的應用。而且區塊鏈中存儲的數據可以是任何數據,甚至包括圖片和視頻。
1.6 區塊鏈技術的應用領域
隨著區塊鏈技術的成熟和普及,很多行業都在積極探索利用區塊鏈技術來解決本行業的痛點問題。目前區塊鏈技術主要在以下幾個行業得到了相對廣泛的應用。
1.6.1 區塊鏈在金融行業的應用
區塊鏈源于比特幣,而比特幣本身具有貨幣屬性,因此區塊鏈和金融服務有天然的結合點。不僅如此,由于區塊鏈技術所擁有的高可靠性、簡化流程、交易可追蹤、節約成本、減少錯誤以及改善數據質量等特質,使得其具備重構金融業基礎架構的潛力。
1.金融行業痛點
目前金融行業最大的問題是每個機構都有自己的賬本,機構之間在進行業務對接的時候需要進行大量的對賬、清算、結算等操作,這些操作都需要耗費大量的人力和物力。這不僅導致了用戶端和金融機構中后臺業務端等產生的支付業務費用高昂,也使得小額支付業務難以開展。在票據及供應鏈金融領域,業務因人為介入多,存在許多違規事件及操作風險。票據業務創造了大量流動性的同時,相關市場也容易滋生出違規操作或用戶欺詐行為,進而導致商業銀行的匯票業務事件集中爆發。
國內現行的匯票業務仍有約70%為紙質交易,操作環節處處需要人工,并且因為涉及較多中介參與存在管控漏洞、違規交易的違規操作從而提高了風險。同時由于機構之間的信息不對稱很容易導致憑證偽造事件的發生。在證券領域,證券交易生命周期內的一系列流程耗時較長,增加了金融機構中后臺的業務成本。在清算和結算領域,由于不同金融機構間的基礎設施架構、業務流程各不相同,同時在具體操作過程中涉及很多人工處理的環節,這些因素極大地增加了業務成本同時也容易出現差錯。在用戶身份識別領域,不同金融機構間的用戶數據難以實現高效的交互,使得重復認證成本較高,間接帶來了用戶身份被某些中介機構泄露的風險。
2.區塊鏈在金融行業的作用
區塊鏈技術通過密碼學原理從底層解決了數據的不可篡改和可追溯特性,利用這些特性監管機構可以非常方便地對整個交易過程實施精準、及時的監管。在事后追責的時候可以快速精準地獲取證據。同時由于區塊鏈是一個對等的共享賬本,價值可以直接通過區塊鏈進行安全高效的轉移,這些特性可以節省大量清算以及結算相關的費用并且簡化流程。
3.區塊鏈在金融行業的應用場景
應用場景1:支付
在支付領域區塊鏈可以摒棄中轉銀行的角色,實現點對點快速且成本低廉的跨境支付。通過區塊鏈的平臺不但可以繞過中轉銀行以減少中轉費用,還因為區塊鏈安全、透明、低風險的特性提高了跨境匯款的安全性。同時由于區塊鏈去中心化的特性可以加快結算與清算速度以提高資金利用率。在未來銀行與銀行之間可以不再通過第三方而是通過區塊鏈技術以點對點方式進行支付。由于省去第三方金融機構的中間環節,不但可以實現全天候支付、實時到賬,而且有助于降低跨境電商資金風險及滿足跨境電商對清算服務及時性、便捷性的需求。
應用場景2:票據與供應鏈金融業務
區塊鏈可以實現票據價值傳遞的去中介化。長久以來票據的交易一直存在一個第三方的角色來確保有價憑證的傳遞是安全可靠的。在紙質票據中交易雙方的信任建立在票據真實性的基礎上,即使在現有電子票據交易中,也是需要通過央行ECDS系統的信息進行交互認證。但借助區塊鏈的技術可以直接實現點對點之間的價值傳遞,不需要特定的實物票據或中心系統進行控制和驗證。在供應鏈金融中也能通過區塊鏈減少人工成本、提高安全度以及實現端到端的透明化。未來通過區塊鏈技術供應鏈金融業務將能大幅減少人工的介入。所有參與方(包括供貨商、進貨商、銀行)都能使用一個去中心化的賬本共享文件并在達到預定的時間和結果時通過智能合約自動進行支付,這樣將極大地提高效率并且能有效地減少交易中由于人工誤操作而造成的損失。
1.6.2 區塊鏈在供應鏈中的應用
產品從生產到銷售,從原材料到成品直至最后抵達客戶手里這個過程中涉及的所有環節都屬于供應鏈的范疇。在供應鏈領域中多流程、多參與方的特性給區塊鏈切入供應鏈系統提供了天然的基礎。
1.供應鏈行業的痛點
目前供應鏈系統中可能涉及幾百個加工環節,幾十個不同的地點,數目龐大的節點給供應鏈的追蹤管理帶來了很大的困難。由于供應鏈的整個過程并不公開,因此消費者沒有辦法確切核實所購買產品的真正價值,這也就意味著產品的價格是否與其價值相符我們也無從得知。此外供應鏈過程中若出現了非法經營活動時,執法人員該從哪里開始調查、該向誰問責一切都不容易。這些弊端直接導致了市面上仿冒產品泛濫,工廠老板強迫工人超負荷工作,工廠衛生條件不合格等違規現象的發生。
2.區塊鏈在物流行業中的應用
區塊鏈作為一種分布式總賬系統能夠提高行業的透明度和安全性。相關專家看好區塊鏈技術,相信它能夠解決供應鏈目前存在的問題。區塊鏈技術可以在不同分類賬上記錄下產品在供應鏈過程中涉及的所有信息,這些信息包括負責企業、價格、日期、地址、質量,以及產品狀態等有用信息。由于共享賬本具有可查詢的特點,因此當客戶想了解產品的時候只要查找相關分類賬,這樣無論是產品的原材料、產品整個加工工藝等信息都可以搜查到。因為分布式賬本的分散性特點,相關廠家想要篡改產品數據幾乎是不可能的。由于交易過程中所有的數據都是加密保護的,所以數據被竊取的問題是可以避免的。基于上述特性,我們認為區塊鏈技術是改進供應鏈問題的最佳技術之一。
3.區塊鏈在物流行業的應用場景
應用場景1:物流
在物流過程中利用數字簽名和公私鑰加解密機制可以充分保證信息安全以及寄、收件人的隱私。例如,快遞交接需要雙方私鑰簽名,每個快遞員或快遞點都有自己的私鑰,是否簽收或交付只需要查一下區塊鏈即可。最終用戶沒有收到快遞就不會有簽收記錄,快遞員也無法偽造簽名,因此通過區塊鏈可杜絕快遞員通過偽造簽名來逃避考核的行為,在減少用戶投訴的同時還能有效地防止貨物的冒領和誤領。由于區塊鏈的匿名性,真正的收件人并不需要在快遞單上直觀展示實名制信息,因此個人信息得到了保障。通過區塊鏈技術的安全性,更多人會愿意接受實名制,從而促進國家物流實名制的落實。最后利用區塊鏈技術中的智能合約功能,可以有效地簡化物流程序并且大幅度提升物流的效率。
應用場景2:溯源防偽
區塊鏈技術也可用于藥品、藝術品、收藏品、奢侈品等的溯源防偽。我們以鉆石為例,可以在鉆石身份認證及流轉過程中為每一顆鉆石建立唯一的電子身份。同時記錄每一顆鉆石的屬性并存放至區塊鏈中。這樣這顆鉆石的來源、流轉歷史記錄、歸屬或者所在地會被記錄在鏈中,而且區塊鏈中的數據天然具有防篡改性。通過區塊鏈記錄鉆石的屬性信息,在遇到諸如非法的交易活動或者欺詐造假的行為時,可以非常容易地通過區塊鏈中的數據快速識別這些非法行為。
1.6.3 區塊鏈在公證領域的應用
公證是公證機構根據自然人、法人或者其他組織的申請,依照法定程序對民事法律行為,有法律意義的事實和文書的真實性、合法性予以證明的活動。公證最核心的一點是存證信息的完整性和抗篡改性。由于區塊鏈天然具備數據不可逆不可篡改的特性,因此區塊鏈技術是非常適合公證系統的。
1.公正領域的行業痛點
傳統公證存在手續繁瑣、處理低效等痛點。在當前中心化系統框架下的中心數據庫承受著日益增長的數據存儲和安全維護的雙重壓力。在公證行業內部、公證行業與其他部門之間的信息溝通、信息共享和信息協作中存在交流不夠充分等問題。同時公證行業的業務領域由于面臨國家政策調整等原因,導致一部分原有業務下滑和費用調整。還有電子存證業務開展受到第三方存證公司業務挑戰,互聯網公證也存在難以實現等問題。
2.區塊鏈在公證領域中的應用
區塊鏈具有信息不可篡改、數據加密保存、所有節點保存完整副本等特點。這些特點具有天然幫助解決傳統公證行業的困難和業務新訴求的屬性。首先,區塊鏈的去中心化決定了它的安全性和可擴展性,公證數據存儲的難題在區塊鏈技術下迎刃而解。其次,區塊鏈可以提高公證業務網絡服務平臺的信息流暢性,在對個人隱私進行保護的同時提高辦證效率。同時,區塊鏈能從技術上保障在線和遠程監管辦證的質量。區塊鏈還能實現有效監管公證業務的質量,做到責任追溯時有據可依。最后,區塊鏈能夠推進信息互聯共享,進一步加強公證處與外部機構的協調溝通,為辦理公證業務提供有效的信息核實手段等。通過區塊鏈這個“創造信任的機器”結合原有被國家法律賦予的國家公信力可以達到“雙信合一”,實現“政策+科技”的雙重增信。
3.區塊鏈在公證行業的應用場景
應用場景1:證書公證
區塊鏈技術可以有效地解決證書公證中存在的問題。以學歷證書為例,在應聘、考評等情況下,需對學歷或所持畢業證書(學位證書)的真實性、合法性予以證明。尤其是在涉外學歷證書時,對證書公證的需求更為頻繁。但是目前中心化的證書驗證平臺給證書的偽造和篡改提供了可乘之機。如果將證書信息存放在區塊鏈中,利用區塊鏈的數據加密存儲和數據不可逆的特性可以有效防止證書被篡改。同時由于區塊鏈分布式總賬的特性,相關合作機構可以通過部署節點的方式同步數據,這樣即防止了相關機構篡改證書同時還可以提高證書的訪問效率。
應用場景2:法律證據公證
對于經濟體而言,每一份合同都可能成為日后的重要證據,對合同進行公證將極大有利于其法律權益的伸張。對于個人而言,取得關鍵法律證據的公證成為保護自身合法權益的關鍵,例如遺囑公證以及語音、郵件、微信、微博等各種類型的法律證據,都是法律申訴的有力證據。律師作為專業法律咨詢服務提供者,單位時間的效率十分重要,但往往由于“取證難”而耗費大量寶貴時間。如果有一種便利、簡單的取證工具,將極大有利于個體合法權益的保護以及提升律師工作效率。區塊鏈天生具有解決這些問題的屬性。區塊鏈中數據的防篡改和不可逆的特性可以有效避免偽造證據,同時由于區塊鏈中的數據是所有參與方共同維護的,因此可以讓所有參與方共同維護同一份證據鏈,這樣能有效地避免單個證據的孤立性和證據鏈的斷裂。
1.6.4 區塊鏈在數字版權領域的應用
隨著互聯網特別是移動互聯網的發展,數字出版已經形成較為完整的產業鏈,通過相關產業鏈網絡作家可以獲取可觀的收入。但是目前數字版權的保護并沒有得到很好的發展,數字內容的盜版現象非常嚴重。區塊鏈技術的出現為數字版權的發展帶來契機。
1.數字版權行業的痛點
隨著知識經濟的興起,知識產權已成為市場競爭力的核心要素。互聯網是知識產權保護的前沿陣地,但當下的互聯網生態里知識產權侵權現象非常嚴重,網絡著作權官司糾紛頻發。這些問題嚴重侵蝕原創精神,同時針對盜版問題也存在舉證困難、維權成本過高等客觀因素。因此侵權和盜版問題成為內容產業的尖銳痛點。侵權盜版制約著相關行業的進一步發展,同時各參與方都深受其害,其中作者等內容生產方一直處于弱勢地位,缺少相應的話語權和主導權,創作積極性倍受打擊。面對這些問題國家非常重視,各種政策和扶持計劃頻出,重拳解決版權保護難題。但是限于技術手段很難從根本上解決。
2.區塊鏈在數字版權中的應用
區塊鏈基于數學原理解決了交易過程中所有權確認的問題,在價值交換活動中產生的記錄及其記錄都是可信的。區塊鏈記錄的信息一旦生成將永久記錄并且無法篡改,除非能擁有全網絡總算力的51%以上,才有可能修改最新生成的一個區塊記錄。這些特性可以保證數字版權的擁有者能夠支配自己的智力成果。同時還可以借助區塊鏈的賬本屬性在區塊鏈中直接將自己的數字資產進行交易。
3.區塊鏈在數字版權的應用場景
應用場景1:圖書出版
區塊鏈應用在圖書出版行業中可以有效地保護圖書的版權信息。圖書在出版之前可以在區塊鏈版權系統中進行相關版權信息的登記即確定了作品歸屬,相當于為原創內容登記了一張“數字身份證”。這樣從源頭保護原創版權,為后續的維權以及版權變現等需求打下良好的基礎。
應用場景2:音樂創作
音樂行業的市場規模巨大,但在傳統模式下音樂人很難獲得合理的收益。利用區塊鏈技術使音樂整個生產和傳播過程中的收費和用途都是透明并且真實的,這樣能有效確保音樂人直接從其作品的銷售中獲益。另外,音樂人跨過出版商和發行商,通過區塊鏈平臺自行發布和推廣作品,不但不需要擔心侵權問題還能更好地管理自己的作品。
1.6.5 區塊鏈在保險行業的應用
近年來借助互聯網的東風,保險行業得到了快速的發展,但是在高速發展的同時由于互聯網天生的缺陷也帶來了諸如欺詐、騙保等負面影響。保險行業在呼喚新技術能夠解決這些問題。區塊鏈的出現在某種程度上讓保險行業有了二次騰飛的翅膀。
1.保險行業的痛點
保險行業中保險公司要接觸大量的C端用戶,會花費大量的時間和精力收集和甄別客戶信息。這些步驟直接導致了用戶身份認證非常困難。目前的保險數據都是采用中心化數據庫的存儲方式,因此存在單一節點易被控制等隱患。保險公司在承保和理賠的過程中掌握了客戶大量諸如身份、醫療健康等敏感信息,這些信息一旦泄露會給保險公司和投保人帶來非常嚴重的后果。
2.區塊鏈在保險行業中的應用
區塊鏈技術的安全、信任、自動化、可追溯性等特點可以應用于保險行業的承保管理、運營風險管控、客戶服務、信息安全、保險反欺詐等領域。同時區塊鏈技術也給保險行業在商業模式創新等方面提供了一個不同的視角和全新的實現路徑。區塊鏈將成為保險創新的新動力。首先,區塊鏈技術可以數字化管理個人數據,精簡的數字認證,通過區塊鏈技術,保險公司與個人之間可以建立更直接、更有效的關系。其次,區塊鏈能夠進一步打破不同地域的地理隔閡,讓保險的覆蓋率可以從空間上進行調整,積極推動了金融的包容性。最后,區塊鏈技術的出現可以促進合約自動化的進程,通過使用智能合約來實現效率的提升并使某些保險產品隨著時間的推移實現自我管理。
3.區塊鏈在保險行業的應用場景
區塊鏈應用在保險行業中可以優化保險業務流程,助力保險服務體驗升級。保險公司可提供用戶信息,這些信息經過審查驗證后寫入區塊鏈,購買不同保險時無須重復輸入個人信息,在區塊鏈上查詢即可,這能大大縮短投保時間。區塊鏈技術還可以實現自動理賠。利用區塊鏈的智能合約技術可以將理賠條件編寫在智能合約中,一旦達到特定出險條件,即可快速理賠。
利用區塊鏈的共享賬本特性可以加強行業信息共享,降低保險機構運營成本。利用區塊鏈開源、透明的特點,可構建各保險機構為節點的聯盟區塊鏈,實現保險業信息的有效共享。例如在共保或再保情形下,保險事件發生后合同相關的所有保險人、再保險人、承保代理人均希望跟進理賠流程并開展談判。若通過搭建區塊鏈,將理賠文件編寫入區塊鏈,所有成員機構均能監測到理賠進展并參與更新,這樣不僅能保證文件準確度更能極大縮短理賠時間,降低運營成本。
通過區塊鏈還可以構建信用機制和安全體系,服務反保險欺詐和反洗錢等工作。區塊鏈可追溯且不可篡改的特性,在反保險欺詐、反洗錢等領域將具有廣泛應用。比如,可構建被保險人醫療信息區塊鏈,經過授權的醫院或醫生把病人醫療信息寫入區塊鏈,保險公司在核保時通過查詢被保險人的相應醫療信息,可避免帶病投保、虛假賠案等欺詐行為。
1.6.6 區塊鏈在公益慈善領域的應用
隨著互聯網技術的發展,社會公益的規模、場景、輻射范圍及影響力得到空前擴大。“互聯網+公益”、普眾慈善、指尖公益等概念逐步進入公益主流。這些模式不僅豐富了傳統慈善的捐贈方式,同時推動了公眾的公益行為向碎片化、小額化、常態化方向發展。同時,各式各樣的公益項目借助互聯網實現豐富多彩的傳播,使公益的社會影響力被成百倍地放大。
1.公益慈善領域的行業痛點
慈善機構要獲得持續支持,就必須具有公信力,而信息透明是獲得公信力的前提。公眾關心捐助的錢款、物資發揮了怎樣的作用。既要知道公益機構做了什么,也要知道花了多少,成本有多高。這種公信度的高低和公益的成效決定了公益機構能否獲得公眾的認同和持久支持。然而,在過去幾年里公益慈善行業爆出的一些“黑天鵝”事件,極大地打擊了民眾對公益行業的信任度。公益信息不透明不公開,是社會輿論對公益機構、公益行業的最大質疑。公益透明度影響了公信力,公信力決定了社會公益的發展速度。信息披露所需的人工成本,又是掣肘公益機構提升透明度的重要因素。
2.區塊鏈在公益慈善領域中的應用
區塊鏈從本質上來說是利用分布式技術和共識算法重新構造的一種信任機制,是用共信力助力公信力。區塊鏈上存儲的數據高可靠且不可篡改,天然適合用在社會公益場景。公益流程中的相關信息,如捐贈項目、募集明細、資金流向、受助人反饋等,均可以存放于區塊鏈上,在滿足項目參與者隱私保護及其他相關法律法規要求的前提下,有條件地進行公開公示。
為了進一步提升公益透明度,公益組織、支付機構、審計機構等均可加入進來作為區塊鏈系統中的節點,以聯盟的形式運轉,方便公眾和社會監督,讓區塊鏈真正成為“信任的機器”,助力社會公益的快速健康發展。
區塊鏈中智能合約技術在社會公益場景也可以發揮作用。對于一些更加復雜的公益場景,比如定向捐贈、分批捐贈、有條件捐贈等,就非常適合用智能合約來進行管理,使得公益行為完全遵從預先設定的條件,更加客觀、透明、可信,杜絕過程中的貓膩行為。
3.區塊鏈在公益慈善領域的應用場景
區塊鏈與公益的結合,有豐富的應用場景和想象空間,目前已經有真實的應用案例投產上線。2016年7月,支付寶與公益基金會合作,在其愛心捐贈平臺上設立了第一個基于區塊鏈的公益項目,為聽障兒童募集資金,幫助他們“重獲新聲”。在這次的項目中,捐贈人可以看到一項“愛心傳遞記錄”的反饋信息,在進行了必要的隱私保護基礎上,展示了自己的捐款從支付平臺劃撥到基金會賬號,以及最終進入受助人指定賬號的整個過程。通過區塊鏈技術既保障了公益數據的真實性,又能幫助公益項目節省信息披露成本,充分體現出了區塊鏈公益的價值。
1.6.7 區塊鏈與智能制造
智能制造(Intelligent Manufacturing, IM)是一種由智能機器和人類專家共同組成的人機一體化智能系統,它在制造過程中能進行智能活動,諸如分析、推理、判斷、構思和決策等。通過人與智能機器的合作共事,去擴大、延伸和部分取代人類專家在制造過程中的腦力勞動。在智能制造的過程中不存在傳統制造中的設計圖紙,所有的制作標準高度數字化。但是,另一方面數字化也帶來了其他結果。在缺乏強大的數據保護框架之下,數字化的參數在傳遞的過程中存在數據失竊和被篡改的可能性。區塊鏈技術能有效地避免這些問題的發生。
1.智能制造行業的痛點
實施智能制造的重點任務就是要實現制造企業內部信息系統的縱向集成,以及不同制造企業間基于價值鏈和信息流的橫向集成,從而實現制造的數字化和網絡化。在現實中由于制造設備和信息系統涉及多個廠家,原本中心化的系統主要采用人工或中央電腦控制的方式,實時獲得制造環節中所有信息的難度很大。同時所有的訂單需求、產能情況、庫存水平變化以及突發故障等信息都存儲在各自獨立的系統中,而這些系統的技術架構、通信協議、數據存儲格式等各不相同。這些因素都嚴重影響了互聯互通的效率,也制約了智能制造在實際生產制造過程中的應用。
2.區塊鏈在智能制造領域中的應用
利用區塊鏈技術,可有效采集和分析在原本孤立的系統中存在的所有傳感器和其他部件所產生的信息,并借助大數據分析,評估其實際價值。通過這些數據可以對后期制造過程進行預期分析,從而幫助企業快速有效地建立更為安全的運營機制。數據透明化使研發審計、生產制造和流通更為有效,同時也為制造企業降低了運營成本和制造成本,提升了良品率,使企業具有更高的競爭優勢。智能制造的價值之一就是重塑價值鏈,而區塊鏈有助于提高價值鏈的透明度、靈活性,并能夠更敏捷地應對生產、物流、倉儲、營銷、銷售、售后等環節存在的相關問題。
3.區塊鏈在智能制造的應用場景
應用場景1:組建和管理工業物聯網
組建高效、低成本的工業物聯網,是構建智能制造網絡基礎設施的關鍵環節。在傳統的組網模式下,所有設備之間的通信必須通過中心化的代理通信模式實現,設備之間的連接必須通過網絡。這種模式極大提高了組網成本,同時系統的可擴展性、可維護性和穩定性都不是很好。區塊鏈技術利用P2P組網技術和混合通信協議有效處理異構設備間的通信問題,將顯著降低中心化的數據中心建設和維護的成本。同時區塊鏈技術可以將計算和存儲需求分散到組成網絡的各個設備中,有效阻止了網絡中任何單一節點的失敗而導致整個網絡崩潰的情況發生。另外,區塊鏈中分布式賬本的防篡改特性能有效防止工業物聯網中任何單節點設備被惡意攻擊和控制后帶來的信息泄露和惡意操控風險。
應用場景2:生產制造過程的智能化管理
在傳統的生產模式下,設備的操作、生產和維護記錄是存儲在單一、孤立的系統中,一旦出現安全和生產事故,企業、設備廠商和安全生產監管部門難以確保記錄的真實性與一致性,也不利于后續事故的防范及設備的改進。利用區塊鏈技術能夠將制造企業中的控制模塊、系統、通信網絡、ERP等相關系統連接起來并通過統一的賬本,讓企業、設備廠商和安全生產監管部門能夠長期、持續地監督生產制造的各個環節,從而提高生產制造的安全性和可靠性。同時,區塊鏈賬本記錄的可追溯性和不可篡改性也有利于企業審計工作的開展,便于發現問題、追蹤問題、解決問題以達到優化系統的目的。
1.6.8 區塊鏈在教育就業中的應用
教育就業作為社會文化傳授、傳播的窗口,需要實現學生、教育機構以及用人就業單位之間的無縫銜接,以提高教育就業機構的運行效率和透明度。區塊鏈系統的透明化、數據不可篡改等特征,完全適用于學生征信管理、升學就業、學術、資質證明、產學合作等方面,對教育就業的健康發展具有重要的價值。
1.教育行業的痛點
在教育就業行業中由于學生信用體系不完整導致未能建立學生相關信息的歷史數據信息鏈和相關的數據維度。這些問題導致政府、企業無法獲得完整有效信息,從而直接導致學生無法便捷、公平地享受應有的服務。在就業過程學歷造假、論文造假、求職簡歷造假等現象的存在直接使得用人單位、院校缺乏有效的驗證手段,進而降低了學校與企業間、院校與院校間的信任度。除此之外,一些學術性實驗、跨校組織的公開課以及多媒體教學資源等在網絡上產生版權和學術糾紛,這些糾紛對學者以及研究人員產生了消極影響,進一步削弱了高等學府對學術研究的積極性。
2.區塊鏈在教育就業中的應用
利用區塊鏈技術對現存運行方案的不足之處進行優化,能有效簡化流程和提高運營效率,并且能及時規避信息不透明和容易被篡改的問題。利用分布式賬本記錄跨地域、跨院校的學生信息可以方便追蹤學生在校園時期所有正面以及負面的行為記錄,能幫助有良好記錄的學生獲得更多的激勵措施,并構建起一個良性的信用生態。利用區塊鏈技術可為學術成果提供不可篡改的數字化證明,為學術糾紛提供權威的舉證憑據,降低糾紛事件消耗的人力與時間。同時,這種數字化證明可以與已有的應用無縫整合,為每一個文字、圖片、音頻、視頻加蓋唯一的時間戳身份證明,交叉配合生物識別技術,從根本上保障了數據的完整性、一致性以達到保護知識產權的目的。
3.區塊鏈在教育就業的應用場景
應用場景1:教育存證
在教育存證領域,基于區塊鏈的學生信用平臺可創建含有基本信息的數字文件,然后使用用戶的私鑰對證書的內容進行簽名,再對證書本身附加簽名。依賴于生成的哈希值,可以驗證證書內容是否被篡改。最后,再用私鑰在區塊鏈上創建一條數字記錄,保證用戶信息和證書內容的一致性。教育機構利用自己的私鑰簽署一份具有完整信息記錄的數字證書,將其哈希值存儲在區塊鏈中,在每一次發放和查詢時都會由智能合約觸發相應的多重簽名校驗以確保記錄不會被惡意查詢,交易輸出時將數字證書分配給需求方,如學生或者用人單位。
應用場景2:產學合作
產學合作是教育機構與用人單位之間多贏的機制,現在教育存在的問題之一就是封閉辦學,即學生的技能信息、知識體系未與用人單位的技能需求、市場趨勢保持信息對稱。通過引入區塊鏈技術實現學生技能與社會用人需求無縫銜接,可精確評估人才錄用、崗位安排的科學性和合理性,有效促進學校和企業之間的合作。
1.7 區塊鏈的其他常見技術框架
區塊鏈技術從誕生至今,除了比特幣之外,相關技術社區根據區塊鏈技術原理已經實現了很多技術框架。在上文提到了區塊鏈技術框架中極具代表性的三個技術框架,比特幣、以太坊、超級賬本。這三個技術框架會在后面章節中重點介紹,這里不再復述。除了這三個典型的技術框架之外,還有許多基于區塊鏈基本原理實現的技術框架。這些框架都有自身的特點,每個框架解決問題的側重點也是不一樣的,我們選擇其中比較有代表性的介紹給讀者以供參考。
1. Corda
Corda是由R3CEV推出的一款分布式賬本平臺,其借鑒了區塊鏈的部分特性,例如UTXO模型以及智能合約,但它在本質上又不同于區塊鏈,并非所有業務場景都可以使用這種平臺,Corda面向的是銀行間或銀行與其商業用戶之間的互操作場景。
項目地址如下所示:
https://github.com/corda/corda
2. BigChainDB
BigChainDB填補了去中心生態系統中的一個空白,是一個可用的去中心數據庫。它具有每秒百萬次寫操作、存儲PB級別的數據和亞秒級響應時間的性能。BigChainDB的設計起始于分布式數據庫,通過創新加入了很多區塊鏈的特性,如去中心控制、不可改變性、數字資產的創建和移動。
BigChainDB繼承了現代分布式數據庫的特性:吞吐量和容量都是與節點數量線性相關,功能齊全的Nosql查詢語言,高效的查詢和權限管理。因為構建在已有的分布式數據庫上,它在代碼層面也繼承了企業級的健壯性。可擴展的容量意味著具有法律效力的合同和認證可以直接存儲在區塊鏈數據庫里。權限管理系統支持從私有企業級區塊鏈數據庫到開放公有的區塊鏈數據庫配置。BigChainDB是對于像以太坊這樣的去中心處理平臺和Inter Planetary File System(IPFS)這樣的去中心文件系統的補充。
項目地址如下所示:
https://github.com/bigchaindb/bigchaindb
1.8 本章小結
本章的目的是讓不了解區塊鏈的讀者能對區塊鏈有一個宏觀的認識,主要介紹了區塊鏈的起源和演進路線、區塊鏈的核心技術及其特性、區塊鏈技術的缺點和人們對它的錯誤認識,以及區塊鏈在不同行業的應用。