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