官术网_书友最值得收藏!

2.3 關鍵問題和挑戰

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

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

1.隱私保護

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

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

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

2.分布式共識

共識是分布式系統領域經典的技術難題,學術界和業界都已有大量的研究成果(包括Paxos、拜占庭系列算法等)。問題的核心在于確保某個變更在分布式網絡中得到一致的執行結果,是被參與的多方都承認的,同時這個信息是不可推翻的。

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

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

后來更多的區塊鏈技術(如超級賬本)在帶權限許可的場景下,開始考慮支持更多的確定性的共識機制,包括改進的拜占庭算法等,可以解決快速確認的問題。但已有算法在大規模和動態場景下往往表現不佳。

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

3.交易性能

一般情況下,區塊鏈并不適用于高頻交易的場景,但由于金融系統的迫切需求,業界目前積極探討如何提高其交易性能,包括吞吐量(throughput)和確認延遲(latency)兩個方面。

目前,公開的比特幣公有區塊鏈只能支持平均每秒約7筆的吞吐量,其安全的交易確認時間為一小時。以太坊公有區塊鏈的吞吐量略高,達到每秒幾十筆,但仍不能滿足較大的應用需求。2017年年底,游戲應用CryptoKitties就造成了以太坊網絡的嚴重堵塞。

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

聯盟鏈場景下,參與方在共同的信任前提和利益約束下,可以采取更激進的設計,換取性能的提升。以超級賬本Fabric項目為例,普通虛擬機配置即可達到每秒數千次的交易吞吐量;在進一步優化或硬件加速的情況下,可以達到每秒數萬次的處理性能。

整體來看,目前開源區塊鏈系統已經可以滿足大量應用場景的性能需求,但離大規模商用交易系統的吞吐性能(每秒穩定數萬筆)還有差距。

注意

據公開的數據顯示,VISA系統的處理均值為2000tps,峰值為56000tps;某大規模金融支付系統的處理峰值超過了85000tps;某大型證券交易所號稱的處理均(峰)值在80000tps左右。

4.擴展性

對于常見的分布式系統,可以通過橫向增加節點來擴展整個系統的處理能力。對于區塊鏈網絡系統來說,跟傳統分布式系統不同,這個問題往往不那么簡單。實際上,大部分區塊鏈系統的性能很大程度上取決于單個節點的處理能力。對這些系統來說,節點需要具備“高性能、安全、穩定、硬件輔助加解密能力”。

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

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

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

另外,未來必然會涉及不同賬本之間互通的需求(跨鏈)。目前無論是基于公證人(notary)、側鏈/中繼鏈錨定機制,還是基于哈希鎖定(hash-locking)機制,在實踐中仍存在一些不足。公證人機制往往需要依賴第三方的公證人,存在中心化的弱點;側鏈/中繼鏈錨定機制目前應用在資產類轉移場景,依賴不同鏈之間的合約配合;哈希鎖定最早在閃電網絡中提出,并應用在W3C的Interledger協議中,目前只支持支付類交換操作,而且要求雙方賬本理解彼此的合約。

超級賬本的Quilt項目和W3C的Interledger Payments工作組已對上述問題開展研究,但離滿足通用的跨鏈需求還有距離。目前來看,要想解決跨鏈的擴展性問題,需要有辦法打通不同框架,類似于用路由器來溝通不同的子網。

5.安全防護

區塊鏈目前最熱門的應用場景是金融相關的服務,安全自然是最敏感也是最具挑戰性的問題。區塊鏈在設計上大量采用了現代成熟的密碼學算法和網絡通信協議。但這是否就能確保其絕對安全呢?

世界上并沒有絕對安全的系統。系統越復雜,攻擊面越多,安全風險越高。另外,系統是由人設計和運營的,難免出現漏洞。

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

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

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

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

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

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

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

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

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

注意

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

6.數據庫和存儲系統

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

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

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

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

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

此外,在高吞吐量的場景下,本地賬本結構會快速累積大量數據,這些數據如何有效地保存和索引,發生故障后如何快速恢復,新加入的網絡節點如何迅速追蹤最新數據并開始工作,都是值得探索的開放問題。

7.互操作和運營治理

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

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

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

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

主站蜘蛛池模板: 加查县| 庆阳市| 景东| 延川县| 南宫市| 五河县| 环江| 上高县| 云龙县| 上杭县| 贵德县| 措美县| 辽阳市| 台东市| 阿图什市| 建始县| 吐鲁番市| 长宁县| 祁连县| 彝良县| 乌拉特前旗| 云梦县| 巴楚县| 麟游县| 平邑县| 杭州市| 诏安县| 麻阳| 聂拉木县| 正镶白旗| 枣阳市| 宝应县| 连城县| 武清区| 铁岭市| 苏尼特左旗| 沂水县| 双牌县| 万州区| 贵阳市| 敦煌市|