從技術角度講,區塊鏈所涉及的領域比較繁雜,包括分布式系統、儲存、密碼學、心理學、經濟學、博弈論、控制論、網路協議等,這也就意味著大量工程實踐上的技術挑戰。
下面列出了目前業內關注較多的一些技術話題。
1.?抗抵賴與隱私保護
怎麼防止交易記錄被篡改?
怎麼證明交易雙方的身份?
怎麼保護交易雙方的隱私?
密碼學的發展為解決這些問題提供了不少手段。傳統方案包括 hash 演算法、加解密演算法、數字證書和簽名(盲簽名、環簽名)等。
隨著區塊鏈技術的應用,新出現的需求將刺激密碼學的進一步發展,包括更高效的隨機數產生、更高強度的加密、更快速的加解密處理等。同時,量子計算等新技術的出現,也會帶來更多的挑戰,例如,rsa 演算法等目前商用的加密演算法,在未來可能無法提供足夠的安全性。
能否滿足這些新的需求,將依賴於數學科學的進一步發展和新一代計算技術的突破。
2.?分布式共識
這是個經典的技術難題,學術界和業界都已有大量的研究成果(包括paxos、拜占庭系列演算法等)。
問題的核心在於如何解決某個變更在分布式網路中得到一致的執行結果,是被參與多方都承認的,同時這個資訊是被確定的,不可推翻的。
該問題在公開匿名場景下和帶許可權管理的場景下需求差異較大,從而導致了基於概率的演算法和確定性演算法兩類思想。
最初,位元幣區塊鏈考慮的是公開匿名場景下的最壞保證。通過引入了「工作量證明」策略來規避少數人的惡意行為,並通過概率模型保證最後參與方共識到最長鏈。演算法在核心思想上是基於經濟利益的博弈,讓惡意破壞的參與者損失經濟利益,從而保證大部分人的合作。同時,確認必須經過多個區塊的生成之後達成,從概率上進行保證。這類演算法的主要問題在於效率的低下。類似演算法還有以權益為抵押的 pos、dpos 和 casper 等。
後來更多的區塊鏈技術(如超級賬本)在帶許可權管理的場景下,開始考慮支援更多的確定性的共識機制,包括經典的拜占庭演算法等,可以解決快速確認的問題。
共識問題在很長一段時間內都將是極具學術價值的研究熱點,核心的指標將包括容錯的節點比例、決策收斂速度、出錯後的恢復、動態特性等。pow 等基於概率的系列演算法理論上允許少於一半的不合作節點,pbft 等確定性演算法理論上則允許不超過 1/3 的不合作節點。
3.?交易效能
雖然一般來說,區塊鏈不適用於高頻交易的場景,但由於金融系統的需求,業界目前十分關心如何提高區塊鏈系統交易的吞吐量,同時降低交易的確認延遲。
目前,公開的位元幣區塊鏈只能支援平均每秒約 7 筆的吞吐量,一般認為對於大額交易來說,安全的交易確認時間為乙個小時左右。以太坊區塊鏈的吞吐量略高一些,但交易效能也被認為是較大的瓶頸。
實際上,小額交易只要確認被廣播到網路中並帶有合適的交易服務費用,即有較大概率被最終打包。
區塊鏈系統跟傳統分布式系統不同,其處理效能很難通過單純增加節點數來進行橫向擴充套件。實際上,傳統區塊鏈系統的效能,在很大程度上取決於單個節點的處理能力。高效能、安全、穩定性、硬體輔助加解密能力,都將是考查節點效能的核心要素。
這種場景下,為了提高處理效能,一方面可以提公升單個節點的效能(如採用高配置的硬體),同時設計優化的策略和演算法;另外一方面試圖將大量高頻的交易放到鏈外來,只用區塊鏈記錄最終交易資訊,如位元幣社群提出的「閃電網路」等設計。類似地,側鏈(side chain)、影子鏈(shadow chain)等思路在當前階段也有一定的借鑑意義。類似設計可以將交易效能提公升 1~2 個數量級。
此外,在聯盟鏈的場景下,參與多方存在一定的信任前提和利益約束,可以採取更優化的設計,換來效能的提公升。以超級賬本 fabric 專案為例,在普通虛擬機器配置下,單客戶端交易吞吐量可達幾百次每秒(transactions per second,tps);在有一定工程優化或硬體加速情況下可以達到每秒數千次的吞吐量。
客觀地說,目前開源區塊鏈系統已經可以滿足不少應用場景的效能需求,但離大規模交易系統在峰值每秒數萬筆的吞吐效能還有較大差距。
據公開的資料,visa 系統的處理均值為 2000tps,號稱的峰值為 56?000tps;某金融支付系統的處理峰值超過了 85?000tps;某大型**交易所號稱的處理均(峰)值在 80?000tps 左右。
4.?擴充套件性
常見的分布式系統可以通過增加節點來橫向擴充套件整個系統的處理能力。對於區塊鏈網路系統來說,根據共識機制的不同,這個問題往往並非那麼簡單。
例如,對於位元幣和以太坊區塊鏈而言,網路中每個參與維護的核心節點都要保持乙份完整的儲存,並且進行智慧型合約的處理。此時,整個網路的總儲存和計算能力取決於單個節點的能力。甚至當網路中節點數過多時,可能會因為一致性的達成過程延遲降低整個網路的效能。尤其在公有網路中,由於存在大量低效能處理節點,導致這個問題將更加明顯。
要解決這個問題,根本上是放鬆對每個節點都必須參與完整處理的限制(當然,網路中節點要能合作完成完整的處理),這個思路已經在超級賬本中得到應用;同時儘量減少核心層的處理工作。
在聯盟鏈模式下,還可以專門採用高效能的節點作為核心節點,相對較弱的節點僅作為**訪問節點。
5.?安全防護
區塊鏈目前最熱門的應用場景是金融相關的服務,安全自然是討論最多、挑戰最大的話題。區塊鏈在設計上大量採用了現代成熟的密碼學演算法。但這是否就能確保其絕對安全呢?
世界上並沒有絕對安全的系統。
系統是由人設計的,系統也是由人來運營的,只要有人參與的系統,就難免出現漏洞。如下幾個方面是很難避免的。
首先是立法。對區塊鏈系統如何進行監管?攻擊區塊鏈系統是否屬於犯罪?攻擊銀行系統是要承擔後果的。但是目前還沒有任何法律保護區塊鏈(特別是公有鏈)以及基於它的實現。
其次是軟體實現的潛在漏洞。考慮到使用了幾十年的 openssl 還帶著那麼低階的漏洞(heart bleeding),而且是源**完全開放的情況下,讓人不禁對執行中的大量線上系統持謹慎態度。而對於金融系統來說,無論客戶端還是平台側,即便是很小的漏洞都可能造成難以估計的損失。
另外,公有區塊鏈所有交易記錄都是公開可見的,這意味著所有的交易即便被匿名化和加密處理,但總會在未來某天被破解。安全界一般認為,只要物理上可接觸就不是徹底的安全。實際上,已有文獻證明,位元幣區塊鏈的交易記錄很大可能是能追蹤到真實使用者的。
作為一套完全分布式的系統,公有的區塊鏈缺乏有效的調整機制。一旦執行起來,出現問題也難以修正。即使是讓它變得更高效、更完善的修改,只要有部分既得利益者聯合起來反對,就無法得到實施。位元幣社群已經出現過多次類似的爭論。
最後,執行在區塊鏈上的智慧型合約應用可能是五花八門的,可能存在潛在的漏洞,必須有辦法進行安全管控,在註冊和執行前需要有合理的機制進行探測,以規避惡意**的破壞。
2016 年 6 月 17 日發生的「 dao 系統漏洞被利用 」事件,直接導致價值 6000 萬美元的數字貨幣被利用者獲取。儘管對於這件事情的反思還在進行中,但事實再次證明,目前基於區塊鏈技術進行生產應用時,務必要細心謹慎地進行設計和驗證。必要時,甚至要引入「形式化驗證」和人工審核機制。
可以參考著名黑客公尺特尼克所著的《反欺騙的藝術——世界傳奇黑客的經歷分享》,其中介紹了大量的實際社交工程欺騙場景。
6.?資料庫和儲存系統
區塊鏈網路中的大量資訊需要寫到檔案和資料庫中進行儲存。
觀察區塊鏈的應用,大量的讀寫操作、hash 計算和驗證操作,跟傳統資料庫的行為十分不同。當年,人們觀察到網際網路應用大量非事務性的查詢操作,而設計了非關係型(nosql)資料庫。那麼,針對區塊鏈應用的這些特點,是否可以設計出一些特殊的針對性的資料庫呢?
leveldb、rocksdb 等鍵值資料庫,具備很高的隨機寫和順序讀、寫效能,以及相對較差的隨機讀的效能,被廣泛應用到了區塊鏈資訊儲存中。但目前來看,面向區塊鏈的資料庫技術仍然是需要突破的技術難點之一,特別是如何支援更豐富語義的操作。
大膽**,未來將可能出現更具針對性的「塊資料庫」(blockdb),專門服務類似區塊鏈這樣的新型資料業務,其中每條記錄將包括乙個完整的區塊資訊,並天然地跟歷史資訊進行關聯,一旦寫入確認則無法修改。所有操作的最小單位將是乙個塊。為了實現這種結構,需要原生支援高效的簽名和加解密處理。
7.?整合和運營
即便大量企業系統準備遷移到區塊鏈平台上,但在相當長的一段時間內,基於區塊鏈的新業務系統必將與已有的中心化系統整合共存。
兩種系統如何共存,如何分工,彼此的業務交易如何進行合理傳遞?出現故障如何排查和隔離?已有資料如何在不同系統之間進行遷移和災備?區塊鏈系統自身又該如何進行運營(如網路的設計選擇、狀態監控、災備等)?
這些都是迫切要解決的實際問題。若解決不好,將是區塊鏈技術落地的不小阻礙。
《區塊鏈原理 設計與應用》一導讀
區塊鏈和機器學習被譽為未來十年內最有可能提高人類社會生產力的兩大創新科技。如果說機器學習的興起依賴於新型晶元技術的發展,那麼區塊鏈技術的出現,則是來自商業 金融 資訊 安全等多個領域眾多科技成果和業務創新的共同推動。位元幣網路自橫空出世,以前所未有的新型理念支援了前所未有的交易模式 以太坊專案站在前...
《區塊鏈原理 設計與應用》一2 4 趨勢與展望
關於區塊鏈技術發展趨勢的 和爭論,自其誕生之日起就從未停息。或許,讀者從計算技術的演變歷史中能得到一些啟發。計算技術的發展歷史如圖2 3所示。以雲計算為代表的現代計算技術,其發展歷史上有若干重要的時間點和事件 1969 arpanet advanced research projects agenc...
《區塊鏈原理設計與應用》讀後感
有的人國慶國外遊,國內遊,有的人國慶堵在高速路上,我國慶沒有出去玩,在家把楊保華的區塊鏈原理設計與應用書看了一遍。這本書國慶前就買了一直沒有時間看,總體感覺這書講的不是很深入,很適合區塊鏈入門者。另一部分是超級賬本fabric的實戰篇。講解了fabric的環境搭建和部署,及fabric的配置管理,還...