關鍵問題和挑戰

從技術角度講,區塊鏈所涉及到的領域比較繁雜,包括分佈式系統、密碼學、心理學、經濟學、博弈論、控制論、網絡協議等,這也意味著工程實踐中大量的挑戰。

下面列出了目前業界關注較多的一些技術話題。

隱私保護

隱私保護一直是分佈式系統領域十分關鍵的問題。在分佈式場景下,因為缺乏獨立的管理機制,參與網絡的各方無法保證嚴格遵守協議,甚至會故意試圖獲取網絡中他人的數據,這些行為都很難進行約束。

而分佈式賬本要在共享協同信息和隱私保護之間達到合適的平衡,是個不小的挑戰。特別隨著公有賬本系統屢屢出現安全漏洞,動輒造成數千萬美金的風險;隨著《一般數據保護條例》(General Data Protection Regulation,GDPR)的落地,隱私保護的合規要求愈加嚴格;傳統的信息安全技術、形式化驗證技術在應對新的需求時暴露出實踐性不強的缺陷,都亟待解決。

尤其以醫療健康領域,對數據的隱私性需求最為強烈,要求嚴格控制數據的來源、所有權和使用範圍,傳統手段很難滿足這些特性,需要有機結合零知識證明、同態加密等新的密碼學手段。而這些新技術在實際應用中還存在不少問題。

分佈式共識

共識是分佈式系統領域經典的技術難題,學術界和業界都已有大量的研究成果(包括 Paxos、拜占庭系列算法等)。

問題的核心在於確保某個變更在分佈式網絡中得到一致的執行結果,是被參與多方都承認的,同時這個信息是不可推翻的。

該問題在公開匿名場景下和帶權限管理的場景下需求差異較大,從而導致了基於概率的算法和確定性算法兩類思想。

最初,比特幣區塊鏈考慮的是公開匿名場景下的最壞保證。通過引入了“工作量證明”(Proof of Work)策略來規避少數人的惡意行為,並通過概率模型保證最後參與方共識到最長鏈。算法的核心思想是基於經濟利益的博弈,讓惡意破壞的參與者損失經濟利益,從而保證大部分人的合作。同時,確認必須經過多個區塊的生成之後達成,從概率上進行保證。這類算法的主要問題在於效率的低下和能源的浪費。類似地,還有以權益為抵押的 PoS 和 DPoS 算法等。

後來更多的區塊鏈技術(如超級賬本)在帶權限許可的場景下,開始考慮支持更多的確定性的共識機制,包括經典的拜占庭算法等,可以解決快速確認的問題。

共識問題在很長一段時間內都將是極具學術價值的研究熱點,核心的指標將包括容錯的節點比例、決策收斂速度、出錯後的恢復、動態特性等。PoW 等基於概率的系列算法理論上允許少於一半的不合作節點,PBFT 等確定性算法理論上則允許不超過 1/3 的不合作節點。

交易性能

一般情況下,區塊鏈並不適用於高頻交易的場景,但由於金融系統的需求,業界目前也十分關心如何儘量提高區塊鏈系統的交易性能,包括吞吐量和確認延遲兩個方面。

目前,公開的比特幣區塊鏈只能支持平均每秒約 7 筆的吞吐量,安全的交易確認時間為一個小時左右。以太坊區塊鏈的吞吐量略高一些能到幾十筆每秒,但交易性能也被認為是較大的瓶頸。2017 年底一款名為 CryptoKitties 的遊戲應用造成以太坊網絡的嚴重堵塞。

這種場景下,為了提高處理性能,一方面可以提升單個節點的性能(如採用高配置的硬件),同時設計優化的策略和算法,提高性能;另外一方面可將交易處理卸載(off-load)到鏈下。只用區塊鏈記錄最終交易信息,如比特幣社區提出的 閃電網絡 等設計。類似地,側鏈(side chain)、影子鏈(shadow chain)等思路在當前階段也有一定的借鑑意義。類似設計可將整體性能提升 1~2 個數量級。

聯盟鏈場景下,參與多方存在一定的信任前提和利益約束,可以採取更優化的設計,換來性能的提升。以超級賬本 Fabric 項目為例,在普通虛擬機配置下,單客戶端每秒可以達到數百次(Transactions per second,tps)的交易吞吐量;在有一定工程優化或硬件加速情況下可以達到每秒數千次的吞吐量。

客觀地說,目前開源區塊鏈系統已經可以滿足不少應用場景的性能需求,但離大規模交易系統每秒穩定數萬筆的吞吐性能還有較大差距。

注:據公開的數據,VISA 系統的處理均值為 2,000 tps,峰值為 56,000 tps;某金融支付系統的處理峰值超過了 85,000 tps;某大型證券交易所號稱的處理均(峰)值在 80,000 tps 左右。

擴展性

常見的分佈式系統,可以通過橫向增加節點來擴展整個系統的處理能力。

對於區塊鏈網絡系統來說,跟傳統分佈式系統不同,這個問題往往並非那麼簡單。實際上,大部分區塊鏈系統的性能,很大程度上取決於單個節點的處理能力。對這些系統來說,節點需要滿足 高性能、安全、穩定、硬件輔助加解密能力

例如,對於比特幣和以太坊區塊鏈而言,網絡中每個參與維護的核心節點都要保持一份完整的存儲,並且進行智能合約的處理。此時,整個網絡的總存儲和計算能力,取決於單個節點的能力。甚至當網絡中節點數過多時,可能會因為共識延遲而降低整個網絡的性能。尤其在公有網絡中,由於大量低性能處理節點的存在,問題將更加明顯。

要解決這個問題,根本上是放鬆對每個節點都必須參與完整處理的限制(當然,網絡中節點要能合作完成完整的處理),這個思路已經在超級賬本項目中得到應用;同時儘量減少核心層的處理工作,甚至採用多層處理結構來分散交易。

在聯盟鏈模式下,還可以專門採用高性能的節點作為核心節點,用相對較弱的節點作為代理訪問節點。

另外,未來必然會涉及到不同賬本之間互通的跨鏈需求。超級賬本的 Quilt 項目和 W3C 的 Interledger Payments 工作組已對此問題開展研究。

安全防護

區塊鏈目前最熱門的應用場景是金融相關的服務,安全自然是最敏感也是挑戰最大的問題。

區塊鏈在設計上大量採用了現代成熟的密碼學算法和網絡通信協議。但這是否就能確保其絕對安全呢?

世界上並沒有絕對安全的系統。

系統越複雜,攻擊面越多,安全風險越高;另外系統是由人設計的和運營的,難免出現漏洞。

作為分佈式系統,區塊鏈首先要考慮傳統的網絡安全(認證、過濾、攻防)、信息安全(密碼配置、密鑰管理)、管理安全(審計、風險分析控制)等問題。其次,尤其要注意新場景下凸顯的安全挑戰。

首先是立法。對區塊鏈系統如何進行監管?攻擊區塊鏈系統是否屬於犯罪?攻擊銀行系統是要承擔後果的。但是目前還沒有任何法律保護區塊鏈(特別是公有鏈)以及基於它的實現。

其次是代碼實現的漏洞管理。考慮到使用了幾十年的 openssl 還帶著那麼低級的漏洞(heart bleeding),而且是源代碼完全開放的情況下,讓人不禁對運行中的大量線上系統持謹慎態度。而對於金融系統來說,無論客戶端還是平臺側,即便是很小的漏洞都可能造成難以估計的損失。

另外,公有區塊鏈所有交易記錄都是公開可見的,這意味著所有的交易,即便被匿名化和加密處理,但總會在未來某天被破解。安全界一般認為,只要物理上可接觸就不是徹底的安全。實際上,已有文獻證明,比特幣區塊鏈的交易記錄大部分都能追蹤到真實用戶。

公有鏈普遍缺乏有效的治理和調整機制,一旦運行中出現問題難以及時修正。即使是有人提交了修正補丁,只要有部分既得利益者聯合起來反對,就無法得到實施。比特幣社區已經出現過多次類似的爭論。

最後,運行在區塊鏈上的智能合約應用五花八門,可能存在潛在的漏洞,必須要有辦法進行安全管控,在註冊和運行前進行形式化驗證和安全探測,以規避惡意代碼的破壞。運行智能合約的環境也會成為攻擊的目標。近些年區塊鏈領域的安全事件大都跟智能合約漏洞有關。

2014 年 3 月,Mt.gox 交易所宣稱其保存的 85 萬枚比特幣被盜,直接導致破產。

2016 年 6 月 17 日,發生 DAO 系統漏洞被利用 事件,直接導致價值 6000 萬美元的數字貨幣被利用者獲取。儘管對於這件事情的反思還在進行中,但事實再次證明,目前基於區塊鏈技術進行生產應用時,務必要細心謹慎地進行設計和驗證。必要時,甚至要引入“形式化驗證”和人工審核機制。

2018 年 3 月,幣安交易所被黑客攻擊,造成用戶持有比特幣被大量賣出。雖然事後進行了追回,但仍在短期內對市場價格造成了巨大沖擊。

注:著名黑客凱文•米特尼克(Kevin D. Mitnick)所著的《反欺騙的藝術——世界傳奇黑客的經歷分享》一書中分享了大量的真實社交工程欺騙案例。

數據庫和存儲系統

區塊鏈網絡中的大量信息需要寫到文件和數據庫中進行存儲。

觀察區塊鏈的應用,大量的讀寫操作、Hash 計算和驗證操作,跟傳統數據庫的行為十分不同。

當年,人們觀察到互聯網應用大量非事務性的查詢操作,而設計了非關係型(NoSQL)數據庫。那麼,針對區塊鏈應用的這些特點,是否可以設計出一些特殊的針對性的數據庫呢?

LevelDB、RocksDB 等鍵值數據庫,具備很高的隨機寫和順序讀、寫性能,以及相對較差的隨機讀的性能,被廣泛應用到了區塊鏈信息存儲中。但目前來看,面向區塊鏈的數據庫技術仍然是需要突破的技術難點之一,特別是如何支持更豐富語義的操作。

大膽預測,未來將可能出現更具針對性的“塊數據庫(BlockDB)”,專門服務類似區塊鏈這樣的新型數據業務,其中每條記錄將包括一個完整的區塊信息,並天然地跟歷史信息進行關聯,一旦寫入確認則無法修改。所有操作的最小單位將是一個塊。為了實現這種結構,需要原生支持高效的簽名和加解密處理。

集成和運營治理

大部分企業內和企業之間都已經存在了一些信息化產品和工具,例如處於核心位置的數據庫、企業信息管理系統、通訊系統等。企業在採用新的產品時,往往會重點考察與已有商業流程和信息系統進行集成時的平滑度。

兩種系統如何共存,如何分工,彼此的業務交易如何進行合理傳遞?出現故障如何排查和隔離?已有數據如何在不同系統之間進行遷移和災備?這些都是很迫切要解決的實際問題。解決不好,將是區塊鏈技術落地的不小阻礙。

另外,雖然大部分區塊鏈系統在平臺層面都支持了非中心化機制,在運營和治理層面確往往做不到那麼非中心化。以比特幣網絡為例,歷史上多次發生過大部分算力集中在少數礦池的情況,同時軟件的演化路線集中在少數開發者手中。運營和治理機制是現有區塊鏈系統中普遍缺失的,但在實際應用中又十分重要。

如何進行合理的共識、高效的治理仍屬於尚未解決的問題。公有賬本中試圖通過將計算機系統中的令牌與經濟利益掛鉤,維護系統持續運行;聯盟賬本中通過商業合作和投票等方式,推舉聯盟治理機構,進行聯盟網絡的維護管理。這些機制仍需在實踐過程中不斷完善和改進。以供應鏈場景為例,動輒涉及到數百家企業,上下游幾十個環節,而且動態性較強。這些都需要分佈式賬本平臺能提供很強的治理投票和權限管控機制。

Last updated