區塊鏈的概念和特征
區塊鏈(Blockchain)是一系列現有成熟技術的有機組合,它對賬本進行分布式的有效記錄,并且提供完善的腳本以支持不同的業務邏輯。在典型的區塊鏈系統中,數據以區塊(block)為單位產生和存儲,并按照時間順序連成鏈式(chain)數據結構。所有節點共同參與區塊鏈系統的數據驗證、存儲和維護。新區塊的創建通常需得到全網多數(數量取決于不同的共識機制)節點的確認,并向各節點廣播實現全網同步,之后不能更改或刪除。
從外部來看,區塊鏈系統應具備如下特征:
· 多方寫入,共同維護
此處的多方僅指記賬參與方,不包含使用區塊鏈的客戶端。區塊鏈的記賬參與方應當由多個利益不完全一致的實體組成,并且在不同的記賬周期內,由不同的參與方主導發起記賬(輪換方式取決于不同的共識機制),而其他的參與方將對主導方發起的記賬信息進行共同驗證。
· 公開賬本
區塊鏈系統記錄的賬本應處于所有參與者被允許訪問的狀態,為了驗證區塊鏈記錄的信息的有效性,記賬參與者必須有能力訪問信息內容和賬本歷史。但是公開賬本指的是可訪問性的公開,并不代表信息本身的公開,因此,業界期望將很多隱私保護方面的技術,如零知識證明、同態加密、門限加密等,應用到區塊鏈領域,以解決通過密文操作就能驗證信息有效性的問題。
· 去中心化
區塊鏈應當是不依賴于單一信任中心的系統,在處理僅涉及鏈內封閉系統中的數據時,區塊鏈本身能夠創造參與者之間的信任。但是在某些情況下,如身份管理等場景,不可避免的會引入外部數據,并且這些數據需要可信第三方的信任背書,此時對于不同類型的數據,其信任應來源于不同的可信第三方,而不是依賴于單一的信任中心。在這種情況下,區塊鏈本身不創造信任,而是作為信任的載體。
· 不可篡改
作為區塊鏈最為顯著的特征,不可篡改性是區塊鏈系統的必要條件,而不是充分條件,有很多基于硬件的技術同樣可以實現數據一次寫入,多次讀取且無法篡改,典型的例子如一次性刻錄光盤(CD-R)。區塊鏈的不可篡改基于密碼學的散列算法,以及多方共同維護的特性,但同時由于這個特性,區塊鏈的不可篡改并不是嚴格意義上的,稱之為難以篡改更為合適。
區塊鏈的核心技術
1. 分布式賬本
分布式賬本技術 DLT (Distributed Ledger Technology)本質上是一種可以在多個網絡節點、多個物理地址或者多個組織構成的網絡中進行數據分享、同步和復制的去中心化數據存儲技術。相較于傳統的分布式存儲系統,分布式賬本技術主要具備兩種不同的特征:
· 傳統分布式存儲系統執行受某一中心節點或權威機構控制的數據管理機制,分布式賬本往往基于一定的共識規則,采用多方決策、共同維護的方式進行數據的存儲、復制等操作。面對互聯網數據的爆炸性增長,當前由單一中心組織構建數據管理系統的方式正受到更多的挑戰,服務方不得不持續追加投資構建大型數據中心,不僅帶來了計算、網絡、存儲等各種龐大資源池效率的問題,不斷推升的系統規模和復雜度也帶來了愈加嚴峻的可靠性問題。然而,分布式賬本技術去中心化的數據維護策略恰恰可以有效減少系統臃腫的負擔。在某些應用場景,甚至可以有效利用互聯網中大量零散節點所沉淀的龐大資源池。
· 傳統分布式存儲系統將系統內的數據分解成若干片段,然后在分布式系統中進行存儲,而分布式賬本中任何一方的節點都各自擁有獨立的、完整的一份數據存儲,各節點之間彼此互不干涉、權限等同,通過相互之間的周期性或事件驅動的共識達成數據存儲的最終一致性。經過幾十年的發展,傳統業務體系中的高度中心化數據管理系統在數據可信、網絡安全方面的短板已經日益受到人們的關注。普通用戶無法確定自己的數據是否被服務商竊取或篡改,在受到黑客攻擊或產生安全泄露時更加顯得無能為力,為了應對這些問題,人們不斷增加額外的管理機制或技術,這種情況進一步推高了傳統業務系統的維護成本、降低了商業行為的運行效率。分布式賬本技術可以在根本上大幅改善這一現象,由于各個節點均各自維護了一套完整的數據副本,任意單一節點或少數集群對數據的修改,均無法對全局大多數副本造成影響。換句話說,無論是服務提供商在無授權情況下的蓄意修改,還是網絡黑客的惡意攻擊,均需要同時影響到分布式賬本集群中的大部分節點,才能實現對已有數據的篡改,否則系統中的剩余節點將很快發現并追溯到系統中的惡意行為,這顯然大大提升了業務系統中數據的可信度和安全保證。
這兩種特有的系統特征,使得分布式賬本技術成為一種非常底層的、對現有業務系統具有強大顛覆性的革命性創新。
2. 共識機制
區塊鏈是一個歷史可追溯、不可篡改,解決多方互信問題的分布式(去中心化)系統。分布式系統必然面臨著一致性問題,而解決一致性問題的過程我們稱之為共識。
分布式系統的共識達成需要依賴可靠的共識算法,共識算法通常解決的是分布式系統中由哪個節點發起提案,以及其他節點如何就這個提案達成一致的問題。我們根據傳統分布式系統與區塊鏈系統間的區別,將共識算法分為可信節點間的共識算法與不可信節點間的共識算法。前者已經被深入研究,并且在現在流行的分布式系統中廣泛應用,其中 Paxos 和 Raft及其相應變種算法最為著名。對于后者,雖然也早被研究,但直到近年區塊鏈技術發展如火如荼,相關共識算法才得到大量應用。而根據應用場景的不同,后者又分為以 PoW(Proofof Work)和 PoS(Proof of Stake)等算法為代表的適用于公鏈的共識算法和以PBFT( Practical Byzantine Fault Tolerance)及其變種算法為代表的適用于聯盟鏈或私有鏈的共識算法。
工作量證明 POW 算法是比特幣系統采用算法,該算法于 1998 年由 W. Dai 在 B-money的設計中提出。以太坊系統當前同樣采用 PoW 算法進行共識,但由于以太坊系統出塊更快(約 15 秒),更容易產生區塊,為了避免大量節點白白陪跑,以太坊提出了叔(Uncle)塊獎勵機制。PoS(Proof of Stake)算法最早由 Sunny King 在 2012 年 8 月發布的 PPC(PeerToPeerCoin 點點幣)系統中首先實現,而以太坊系統也一直對 PoS 抱有好感,計劃后續以 PoS 代替 PoW 作為其共識機制。PoS 及其變種算法可以解決 PoW 算法一直被詬病的浪費算力問題,但其本身尚未經過足夠驗證。PBFT 算法最早由 Miguel Castro(卡斯特羅)和Barbara Liskov(利斯科夫)在 1999 年的 OSDI99 會議上提出,該算法相較原始拜占庭容錯算法具有更高的運行效率。假設系統中共有 N 個節點,那么 PBFT 算法可以容忍系統中存在F 個惡意節點,并且 3F+1 不大于 N。PBFT 共識算法雖然隨著系統中節點數增多而可以容忍更多的拜占庭節點,但其共識效率卻是以極快的速率下降,這也是我們能看到的應用 PBFT做共識算法的系統中很少有超過 100 個節點的原因。
無論是 PoW 算法還是 PoS 算法,其核心思想都是通過經濟激勵來鼓勵節點對系統的貢獻和付出,通過經濟懲罰來阻止節點作惡。公鏈系統為了鼓勵更多節點參與共識,通常會發放代幣(token)給對系統運行有貢獻的節點。而聯盟鏈或者私鏈與公鏈的不同之處在于,聯盟鏈或者私鏈的參與節點通常希望從鏈上獲得可信數據,這相對于通過記賬來獲取激勵而言有意義得多,所以他們更有義務和責任去維護系統的穩定運行,并且通常參與節點數較少,PBFT 及其變種算法恰好適用于聯盟鏈或者私鏈的應用場景。
3. 智能合約
· 什么是智能合約?
智能合約(Smart contract )是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議。智能合約允許在沒有第三方的情況下進行可信交易。這些交易可追蹤且不可逆轉。其目的是提供優于傳統合同方法的安全,并減少與合同相關的其他交易成本。
智能合約概念可追溯到 20 世紀 90 年代,由計算機科學家、法學家及密碼學家尼克·薩博(Nick Szabo)首次提出。他對智能合約的定義如下:“一個智能合約是一套以數字形式定義的承諾,包括合約參與方可以在上面執行這些承諾的協議。” 尼克·薩博等研究學者,希望能夠借助密碼學及其他數字安全機制,將傳統的合約條款的制定與履行方式,置于計算機技術之下,降低相關成本。然而,由于當時許多技術尚未成熟,缺乏能夠支持可編程合約的數字化系統和技術,尼克 薩博關于智能合約的工作理論遲遲沒有實現。
隨著區塊鏈技術的出現與成熟,智能合約作為區塊鏈及未來互聯網合約的重要研究方向,得以快速發展。基于區塊鏈的智能合約包括事件處理和保存的機制,以及一個完備的狀態機,用于接受和處理各種智能合約,數據的狀態處理在合約中完成。事件信息傳入智能合約后,觸發智能合約進行狀態機判斷。如果自動狀態機中某個或某幾個動作的觸發條件滿足,則由狀態機根據預設信息選擇合約動作的自動執行。因此,智能合約作為一種計算機技術,不僅能夠有效地對信息進行處理,而且能夠保證合約雙方在不必引入第三方權威機構的條件下,強制履行合約,避免了違約行為的出現。
· 智能合約的優點與風險
隨著智能合約在區塊鏈技術中的廣泛應用,其優點已被越來越多的研究人員與技術人員認可。總體來講,智能合約具備以下優點:
a. 合約制定的高時效性:智能合約在制定中,不必依賴第三方權威機構或中心化代理機構的參與,只需合約各方通過計算機技術手段,將共同約定條款轉化為自動化、數字化的約定協議,大大減少了協議制定的中間環節,提高了協議制定的響應效率。
b. 合約維護的低成本性:智能合約在實現過程中以計算機程序為載體,一旦部署成功后,由計算機系統按照合約中的約定監督、執行,一旦發生毀約可按照事前約定由程序強制執行。因此,極大降低了人為監督與執行的成本。
c. 合約執行的高準確性:智能合約的執行過程中,由于減少了人為參與的行為,因此利益各方均無法干預合約的具體執行,計算機系統能夠確保合約正確執行,有效提高了合約的執行準確性。
雖然智能合約較傳統合約具有明顯的優點,但對智能合約的深入研究與應用仍在不斷探索中,我們不能忽略這種新興技術潛在的風險。
2017 年,多重簽名的以太坊錢包 Parity 宣布了一個重大漏洞,這個關鍵漏洞會使多重簽名的智能合約無法使用,該漏洞導致了價值超過 1.5 億美元的以太坊資金被凍結。無獨有偶,2018 年 2 月,新加坡國立大學、新加坡耶魯大學學院和倫敦大學學院的一組研究人員發布了一份報告聲稱,他們運用分析工具 Maian,分析基于以太坊的近 100 萬個智能合約,發現有 34,200 個合約含有安全漏洞,予黑客可趁之機,可竊取以太幣或是凍結資產、刪除合約。
安全風險事件的發生值得我們反思,但不管怎樣,業內人士普遍認為,區塊鏈技術及智能合約將成為未來 IT 技術發展的一個重要方向,目前的風險是新技術成熟所必然經歷的過程。
· 智能合約的應用
目前,智能合約作為區塊鏈的一項核心技術,已經在以太坊、Hyperledger Fabric 等影響力較強的區塊鏈項目中,得到廣泛應用。
a. 以太坊的智能合約應用:以太坊的一個智能合約就是一段可以被以太坊虛擬機執行的代碼。以太坊支持強大的圖靈完備的腳本語言,允許開發者在上面開發任意應用,這些合約通常可以由高級語言(例如:Solidity、Serpent、LLL 等)編寫,并通過編譯器轉換成字節碼(byte code) 存儲在區塊鏈上。智能合約一旦部署就無法被修改。用戶通過合約完成賬戶的交易,實現對賬戶的貨幣及狀態進行管理與操作。
b. Hyperledger Fabric 的智能合約應用:在 Hyperledger Fabric 項目中,智能合約的概念及應用被更廣泛的延伸。作為無狀態的、事件驅動的、支持圖靈完備的自動執行代碼,智能合約在 Fabric 中部署在區塊鏈網絡中,直接與賬本進行交互,處于十分核心的位置。和以太坊相比,Fabric 智能合約和底層賬本是分開的,升級智能合約時并不需要遷移賬本數據到新智能合約當中,真正實現了邏輯與數據的分離。Fabric的智能合約稱為鏈碼(chaincode),分為系統鏈碼和用戶鏈碼。系統鏈碼用來實現系統層面的功能,負責 Fabric 節點自身的處理邏輯,包括系統配置、背書、校驗等工作。用戶鏈碼實現用戶的應用功能,提供了基于區塊鏈分布式賬本的狀態處理邏輯,由應用開發者編寫,對上層業務進行支持。用戶鏈碼運行在隔離的鏈碼容器中。
4. 密碼學
信息安全及密碼學技術,是整個信息技術的基石。在區塊鏈中,也大量使用了現代信息安全和密碼學的技術成果,主要包括:哈希算法、對稱加密、非對稱加密、數字簽名、數字證書、同態加密、零知識證明等。本章從安全的完整性、機密性、身份認證等維度,簡要介紹區塊鏈中安全及密碼學技術的應用。
· 完整性(防篡改)
區塊鏈采用密碼學哈希算法技術,保證區塊鏈賬本的完整性不被破壞。哈希(散列)算法能將二進制數據映射為一串較短的字符串,并具有輸入敏感特性,一旦輸入的二進制數據,發生微小的篡改,經過哈希運算得到的字符串,將發生非常大的變化。此外,優秀哈希算法還具有沖突避免特性,輸入不同的二進制數據,得到的哈希結果字符串是不同的。
區塊鏈利用哈希算法的輸入敏感和沖突避免特性,在每個區塊內,生成包含上一個區塊的哈希值,并在區塊內生成驗證過的交易的 Merkle 根哈希值。一旦整個區塊鏈某些區塊被篡改,都無法得到與篡改前相同的哈希值,從而保證區塊鏈被篡改時,能夠被迅速識別,最終保證區塊鏈的完整性(防篡改)。
· 機密性
加解密技術從技術構成上,分為兩大類:一類是對稱加密,一類是非對稱加密。對稱加密的加解密密鑰相同;而非對稱加密的加解密密鑰不同,一個被稱為公鑰,一個被稱為私鑰。公鑰加密的數據,只有對應的私鑰可以解開,反之亦然。
區塊鏈尤其是聯盟鏈,在全網傳輸過程中,都需要 TLS(Transport Layer Security)加密通信技術,來保證傳輸數據的安全性。而 TLS 加密通信,正是非對稱加密技術和對稱加密技術的完美組合:通信雙方利用非對稱加密技術,協商生成對稱密鑰,再由生成的對稱密鑰作為工作密鑰,完成數據的加解密,從而同時利用了非對稱加密不需要雙方共享密鑰、對稱加密運算速度快的優點。
· 身份認證
單純的 TLS 加密通信,僅能保證數據傳輸過程的機密性和完整性,但無法保障通信對端可信(中間人攻擊)。因此,需要引入數字證書機制,驗證通信對端身份,進而保證對端公鑰的正確性。數字證書一般由權威機構進行簽發。通信的一側持有權威機構根CA(Certification Authority)的公鑰,用來驗證通信對端證書是否被自己信任(即證書是否由自己頒發),并根據證書內容確認對端身份。在確認對端身份的情況下,取出對端證書中的公鑰,完成非對稱加密過程。
此外,區塊鏈中還應用了現代密碼學最新的研究成果,包括同態加密、零知識證明等,在區塊鏈分布式賬本公開的情況下,最大限度地提供隱私保護能力。這方面的技術,還在不斷發展完善中。
區塊鏈安全是一個系統工程,系統配置及用戶權限、組件安全性、用戶界面、網絡入侵檢測和防攻擊能力等,都會影響最終區塊鏈系統的安全性和可靠性。區塊鏈系統在實際構建過程中,應當在滿足用戶要求的前提下,在安全性、系統構建成本以及易用性等維度,取得一個合理的平衡。
華為在區塊鏈發展中進行的技術創新
1. 共識算法創新
共識效率是整個區塊鏈對外提供服務的核心能力,實用拜占庭容錯算法 PBFT 解決了原始拜占庭容錯算法效率不高的問題,將算法復雜度由指數級降低到多項式級,使得拜占庭容錯算法在實際系統應用中變得可行,PBFT 完成 3f+1 個節點集群內 f 個節點拜占庭容錯,即任一節點收到 2f+1 條消息后可以得到正確的結論(至多有 f 個節點發送惡意錯誤信息),是聯盟鏈中常用共識算法。
盡管得到廣泛應用,PBFT 仍然存在一些缺限。PBFT 算法為了克服 Primary Node 采用了復雜的全量點對點通信來監聽各類異常行為,通信復雜度達到 O(n^2)的同時額外增加了大量簽名校驗,由此帶來繁重的系統開銷,降低了共識效率、節點擴展性。此外,一旦發生主節點選舉,在選主期間 PBFT 將無法正常共識,若新當選的 Primary 節點作弊或者故障,可能會造成連續選主,在此期間,整個區塊鏈系統對外服務能力將會大幅降低甚至無法提供對外服務。
華為區塊鏈采用一種高效、支持拜占庭容錯、具有自主知識產權的共識算法,有效改進了 PBFT 算法的上述缺陷。通過改進共識流程,保障了節點故障和切主期間區塊鏈系統對外服務的穩定性。同時通過減少不必要的簽名驗證、簡化共識流程,將通信復雜度從 O(n^2)減少到 O(n),有效提升了共識效率和擴展性。
2. 安全隱私保護
華為區塊鏈安全隱私從以下方面提供更強保障:
· 國密算法
國密算法是國家密碼局制定標準的一系列算法,隨著金融安全上升到國家安全高度,國密算法的應用也越來越廣泛,2017 年 11 月 SM2/9 正式進入 ISO/IEC 標準。華為區塊鏈支持國密 SM2/3/4,提供多種加密算法給用戶選擇,同時滿足合規要求。
· 同態加密用戶交易隱私保護
區塊鏈可以防篡改,去中心化,在非信任的網絡運行,但是用戶的賬本對參與組織是透明的,任何組織都可以訪問到相同的數據,如果將用戶的隱私的數據放到鏈上將會放大用戶隱私泄露的風險。當前在比特幣等公有鏈系統中,所有的交易信息都是公開的(包括交易金額)。但是,在金融業的交易中,金融交易信息是敏感數據,非業務相關方不能查看,但同時要滿足監管機構的監管要求,而大部分的區塊鏈并沒有滿足隱私性要求。
華為區塊鏈交易解決方案中:(1)提供同態加密庫,對用戶的交易數據用其公鑰進行加密保護,交易的時候都是密文運算,最終賬本中加密保存,即使節點被攻破,獲取到賬本記錄也無法解密;(2)提供范圍證明校驗,背書節點能夠對密文進行背書,無需解密就能校驗交易的正確性,從而識別出惡意交易風險,保證了智能合約的正確執行。華為開發出適用于 Hyperledger Fabric 平臺的保密交易系統,通過改良的算法,比起使用傳統的加法同態加密與基于環簽名的范圍零知識證明,性能大幅提升。
· 零知識證明
零知識證明能夠在不向驗證者提供任何有用的信息情況下,使驗證者來相信該結論是正確的,證明過程中不用向驗證者泄露被證明的消息。華為區塊鏈將會提供零知識證明能力,對用戶的隱私數據進行保護,減少用戶隱私泄露風險。
· 智能合約安全
當智能合約運行錯誤或者編程錯誤時,就會導致“DAO”的事件,從而讓用戶遭受巨大損失,華為區塊鏈可提供智能合約檢測工具,防止惡意的企圖通過智能合約漏洞入侵用戶數據的行為,同時將提供安全容器,持續監控容器的運行狀態,若發現漏洞,進行有效的隔離,嚴格對容器的訪問權限進行控制,從而保證合約安全運行。
· 共識安全
華為區塊鏈將提供基于硬件的共識算法,使用形式化驗證保證共識機制的安全,同時可以提高共識效率,增加網絡的穩定性。
· 賬本安全
每個節點的本地賬本可能會被篡改,如果出現大部分節點的本地賬本都被修改,就可能造成 51%的攻擊。 華為區塊鏈將提供基于硬件的保護機制,對本地賬本的機密性和完整性保護,防止賬本被篡改。
· 通信端到端安全
通用 TLS 通信只能保護應用與應用之間的安全,如果啟動 TLS 之前,就已經被攻擊,TLS 的保護就失效。華為區塊鏈將提供基于硬件的解決方案,端到端的保證區塊鏈節點間的通信安全。
3. 離鏈通道
單位時間內交易處理能力仍是區塊鏈大規模應用的主要瓶頸之一。受限于區塊鏈的分布式架構特性,節點間不均等的計算能力,不同的網絡狀況等因素,全網共識往往無法快速達成,從而導致交易速度難以提升。現階段比特幣網絡每秒僅能處理約 7 筆交易,支持智能合約的以太坊交易處理速度約為每秒 15 筆。相比之下,中心化服務器支持的 VISA 系統峰值吞吐率可達 56,000 筆,支付寶在 2017 年雙十一期間則達每秒 256,000 筆峰值吞吐率。交易擁堵,交易費攀升已極大限制區塊鏈的規模性應用。
區塊鏈社區對交易擴容方案的爭論與嘗試由來已久,現有的主要方案包括區塊擴容,共識算法改良,安全硬件(TEE)輔助,隔離見證,閃電網絡,交易/狀態分片,多層子鏈等。但無論哪種方案都難以同時兼顧去中心化, 可擴展性,安全性三個關鍵需求。值得注意的是區塊鏈具有應用強相關性,在特定應用場景仍可找到各要素間的平衡點以滿足總體業務需求。
在大規模 DAPP(Decentralized APP)應用中,往往小額支付占據了大部分交易請求,而小額交易并無必要在主鏈及時獲得確認,例如共享經濟中廣泛存在的小額支付場景。如果將海量小額交易在鏈下通道處理,交易過程中不與主鏈交互,而在交易通道關閉或交易方退出時才請求主鏈記錄交易最終狀態,這將極大緩解主鏈的處理壓力,這也是離鏈微支付通道的設計思想。 典型應用包括比特幣框架下的閃電網絡(Lightning Network)和以太坊智能合約框架下的雷電網絡(Raiden Network)。 離鏈通道涉及到“鏈上鎖定-鏈下執行”等一系列操作,其中交易雙方的狀態變化(資金分配比例)與交易執行過程由鏈上合約監督執行。
華為開發出適用于 Hyperledger Fabric 平臺的離鏈通道交易系統, 通過交易方高效安全的握手協議,實現用戶間單通道 2,000+ TPS 的交易性能。隨著離鏈交易通道數的增加,可進一步提升系統在單位時間內交易處理能力。
評論
查看更多