區塊鏈快速入門(五)——區塊鏈技術的演化

來源:互聯網
上載者:User

標籤:官方網站   圖片   ant   擴充   情況   event   能源   方式   硬體加速   

區塊鏈快速入門(五)——區塊鏈技術的演化一、區塊鏈技術的發展

比特幣區塊鏈面向轉賬情境,支援簡單的指令碼計算。如果引入更多複雜的計算邏輯,將能支援更多應用情境,即智能合約(Smart Contract)。智能合約可以提供除了貨幣交易功能外更靈活的合約功能,執行更為複雜的操作。
引入智能合約的區塊鏈,已經超越了單純資料記錄功能;可以為區塊鏈加入許可權管理,進階程式設計語言支援等,實現更強大的、支援更多商用情境的分散式總帳系統。
區塊鏈技術的三種典型演化情境如下:

二、區塊鏈技術的分類

根據參與者的不同,區塊鏈可以分為公有(Public)鏈、聯盟(Consortium)鏈和私人(Private)鏈。
公有鏈,即任何人都可以參與使用和維護,參與者多為匿名。典型的如比特幣和以太坊區塊鏈,資訊是完全公開的。
如果進一步引入許可機制,可以實現私人鏈和聯盟鏈兩種類型。
私人鏈,由集中管理者進行管理限制,只有內部少數人可以使用,資訊不公開,跟傳統中心化記賬系統的差異不明顯。
聯盟鏈則介於兩者之間,由若干組織一起合作(如供應鏈機構或銀行聯盟等)維護一條區塊鏈,該區塊鏈的使用必須是帶有許可權的限制訪問,相關資訊會得到保護,典型如超級賬本項目。在架構上,現有大部分區塊鏈在實現都至少包括了網路層、共識層、智能合約和應用程式層等分層結構,聯盟鏈實現往還會引入額外的許可權管理機制。
目前來看,公有鏈信任度最高,也容易引發探討,但短期內更多的應用會首先在聯盟鏈上落地。公有鏈因為要面向匿名公開的情境,面臨著更多的安全挑戰和風險;同時為了支援互連網尺度的交易規模,需要更高的可擴充性,效能瓶頸在短期內很難得到解決。
對於信任度和中心化程度的關係,通常非中心化程度越高,信任度會越好。隨著節點數增加,前期的信任度往往會增長較快,達到一定程度後,信任度隨節點數增多並不會得到明顯改善。因為隨著成員數的增加,要實現共謀作惡的成本會指數上升。
根據使用目的和情境的不同,可以分為以數字貨幣為目的的貨幣鏈,以記錄產權為目的的產權鏈,以眾籌為目的的眾籌鏈等,也有不局限特定應用情境的所謂通用鏈。通用鏈因為要兼顧不同情境下的應用特點,在設計上需要考慮更加全面。

三、區塊鏈共識演算法的演化1、區塊鏈共識演算法的發展

區塊連常見共識演算法包括Paxos、Raft、PBFT、POW、POS、DPOS等,但隨著區塊鏈技術的發展,不同區塊鏈項目在不同應用情境下通過對基礎的共識演算法的相互融合、改進,誕生了多種新的共識演算法,如DBFT、BFT-DPoS、SBFT、VBFT、Tendermint等。
(1)DBFT
DBFT(Delegated Byzantine Fault Tolerant),即代理拜占庭容錯演算法,是基於PBFT改進的區塊鏈共識演算法。
DBFT的演算法中,參與記賬的是超級節點,普通節點可以看到共識過程,並同步賬本資訊,但不參與記賬。總共n個超級節點分為一個議長和n-1個議員, 議長會輪流當選。每次記賬時,先有議長發起區塊提案(擬記賬的區塊內容), 一旦有至少(2n+1)/3個記賬節點(議長加議員)同意提案,那麼提案就成為最終發布的區塊,並且該區塊是無法復原的,所有裡面的交易都是百分之百確認的,區塊不會分叉。
為了便於在區塊鏈開放系統中應用,DBFT將PBFT中的將C/S(客戶機/伺服器)架構的請求響應模式,改進為適合P2P網路的對等節點模式,並將靜態共識參與節點改進為可動態進入、退出的動態共識參與節點,使其適用於區塊鏈的開放節點環境。
由於BFT演算法存在的擴容性問題,DBFT演算法由權益持有人投票選舉產生代理記賬人,由代理人驗證和產生區塊,以此大幅度降低共識過程中的節點數量,解決了BFT演算法固有的擴容性問題。
NEO項目使用了DBFT共識演算法,NEO共識機制下只設定了7個超級節點,以一種弱中心化的模式實現較高的共識效率。目前,超級節點是靜態選出的,並完全由項目方部署。
DBFT的優點如下:
A、效率高。
NEO每15~20秒產生一個區塊,交易輸送量可達到約1000TPS,最佳化後效能可達10000TPS;
B、良好的最終性。
區塊不會分叉,以此來驗證參與者的身份,保護網路安全,使區塊鏈能夠適用於對交易確認即時性要求高的真實金融情境。
DBFT的缺點如下:
A、較低的容錯率。
當有1/3或以上超級節點為惡意節點或宕機後,系統將無法提供服務。
B、超級節點數量過少,中心化程度高。
(2)BFT-DPOS
BFT-DPOS(Byzantine Fault Tolerance - Delegated Proof of Stake),即帶拜占庭容錯的股份授權證明演算法,是EOS項目通過引入PBFT演算法對DPOS進行改進而來的共識演算法。
在傳統DPOS共識機制中,每個受託人在出塊時向全網廣播新建立區塊,但即使其它受託人收到目前的新區塊,也無法對新區塊進行確認,需要等待輪到自己出塊時,才能通過生產區塊來確認之前的區塊。
BFT-DPOS共識機制下,每個受託人出塊時依然全網廣播,其它受託人收到新區塊後,立即對此區塊進行驗證,並將驗證簽名完成的區塊立即返回出塊受託人,不需等待其它受託人自己出塊時再確認。因此,出塊受託人生產了一個區塊,並全網廣播,然後陸續收到了其它受託人對此區塊的確認,在收到2/3受託人確認的瞬間,區塊(包括其中的交易)就無法復原。
在EOS中有21個超級節點,主要有兩方面原因:一是由於使用者很難對較多數量的超級節點充分瞭解,所以過多的超級節點會降低使用者投票的活躍度;二是規模為20的節點數目可以在拜占庭問題中以更低的資源成本來獲得高效的共識。
超級節點的主要職責是:提供相關計算資源和網路資源,保證節點的正常運行;當輪到某超級節點擁有出塊權時,超級節點收集該時段內的所有交易,並對交易驗證後打包成區塊廣播至其它超級節點,其它超級節點驗證後把區塊添加到自己的資料庫中。在EOS中,每個出塊間隔定義為3秒,由於在當前的網路環境下,一個超級節點打包區塊並將其廣播,絕大多數其它超級節點收到該區塊的過程耗時最多3秒。只有下一個超級節點收到了上一個超級節點廣播的區塊時,再進行新區塊的產生才不會造成對某個超級節點產生區塊的忽略。而一個區塊要成為無法復原區塊需要超過三分之二的超級節點進行確認,在DPOS中只有超級節點產生一個新區塊,才能對之前收到的區塊鏈進行確認,所以一個區塊產生後,其後續串聯14(21個超級節點的2/3)個區塊才表明該區塊是無法復原區塊,區塊中的交易是無法復原交易,整個確認過程需要45秒(包括出塊節點的區塊產生時間)。
為了挖掘EOS系統的效能,Daniel Larimer對BFT-DPOS進行了最佳化,將出塊速度由3秒縮短至0.5秒,理論上可以極大提升系統效能,但帶來網路延遲問題:0.5秒的確認時間會導致下一個出塊者還沒有收到上一個出塊者的區塊,就要生產下一個區塊,那麼下一個出塊者會忽略上一個區塊,導致區塊鏈分叉(相同區塊高度有兩個區塊)。
為解決網路延遲問題,Daniel Larimer將原先的隨機出塊順序改為由受託人商議後確定的出塊順序,網路連接延遲較低的受託人之間就可以相鄰出塊,大大降低受託人之間的網路延遲,使得0.5秒的出塊速度具備理論上的可能。
為了保證萬無一失,不讓任何一個受託人因為網路延遲的意外而被跳過,Daniel Larimer讓每個受託人連續生產6個區塊,即每個見證人還是負責3秒的區塊生產,但由最初的只生產1個變成生產6個。最惡劣的情況下,6個區塊中,最後一個或兩個有可能因為網路延遲或其它意外被下一個受託人略過,但6 個區塊中的前幾個會有足夠的時間傳遞給下一個受託人。
BFT-DPoS的交易確認時間問題:每個區塊生產後立即進行全網廣播,區塊生產者一邊等待0.5秒生產下一個區塊,同時會接收其它受託人對於上一個區塊的確認結果。新區塊的生產和舊區塊確認的接收同時進行。大部分的情況下,交易會在1秒(包括0.5秒的區塊生產和要求其它受託人確認的時間)之內確認(無法復原)。
EOS系統規定,一旦區塊達到無法復原狀態(2/3受託人確認),就無法在此之前進行分叉,保證交易的永久可信。即使多數見受託人想分叉區塊鏈,也只能以相同的速度(0.5秒)與主鏈競爭,就算主鏈只剩下一個受託人,分叉鏈也永遠不會追上主鏈,保證了系統的穩定。
EOS項目解決的區塊鏈痛點如下:
A、應用效能低?
比特幣和以太坊都面臨應用效能低的瓶頸。隨著交易量和應用的增長,網路擁堵和手續約飛漲的問題日益凸顯。從交易速度方面看,比特幣為每秒7筆,以太坊交易速度為每秒30-40筆,而EOS則可以達到每秒數百萬筆交易,可以滿足商業層級應用的需要。
EOS基於石墨烯技術,通過並行鏈的方式達到毫秒級的確認速度和數百萬TPS。
B、安全性差 (DPOS共識演算法)
EOS採用的是DPOS演算法,分叉基本不可能發生,。解決了比特幣和以太坊的鏈分叉問題,從而保障了全網啟動並執行安全性。因為塊生產者生產區塊的方式是合作性的而不是競爭性的。如果發生區塊分叉,DPOS共識將自動切換到最長的鏈條。此外,不會發生塊生產者同時在兩個區塊鏈分叉上生產塊的情況。如果有,就可能被投票出局。
C、開發難度高
比特幣只能作為貨幣交付使用,只滿足交易的功能;以太坊實現了智能合約,突破了比特幣的貨幣功能,向非金融領域邁出了一步,但由於其模組的複雜性,無法使得開發人員輕鬆自如地建立自己想建立的應用;EOS處理了額外的複雜性,為開發人員們提供了方便使用的底層模組,可以支援多種程式設計語言。
D、手續約高
EOS為使用者提供了免費服務,相比較比特幣和以太坊高昂的轉賬手續約,EOS公鏈使用者無需支付手續約。開發人員依據使用者規模,建立對應的盈利模式。
(3)SBFT
SBFT(Simpled BFT),即簡化拜占庭容錯演算法,是PBFT演算法的簡化版本。
在Fabric的提案中,採用SBFT(Simple BFT)演算法。但Fabric0.6版本採用PBFT,Fabric1.0中移出了PBFT,而是使用Kafka、Solo進行排序,作為共識節點。Fabric應該會在後期版本實現SBFT。
(4)Tendermint
Tendermint是一個模組化的區塊鏈應用程式框架,能夠實現拜占庭容錯 (BFT)。Tendermint主要包括兩部分:
A、Tendermint Core
Tendermint Core實現了P2P網路,在節點之間共用區塊和交易,實現了拜占庭容錯的共識演算法,確定了不可更改的交易順序;
B、ABCI Interface
ABCI Interface負責處理具體的邏輯處理層,可以基於不同的語言 (Golang,JS) 來實現,可以實現交易的驗證處理以及查詢等操作。
Tendermint地址:https://github.com/tendermint/tendermint
Tendermint官方網站:https://tendermint.com/
(5)VBFT
VBFT演算法融合POS、VRF以及BFT的思想。在VBFT演算法中,節點需要通過權益抵押來申請參與網路共識。此後,系統通過可驗證隨機函數來隨機從所有備選的共識節點中選擇n個節點,並提出、驗證備選區塊,最終通過對驗證結果進行背書投票來完成區塊共識。
共識節點構成共識網路,負責對網路中的事務請求進行共識,產生區塊;而備選的共識節點構成候選網路,不參與共識,但保持與共識網路同步的狀態。此外,候選網路對共識網路進行監控,並對共識區塊進行驗證。
VBFT演算法流程如下:
A、根據VRF從共識網路中選擇備案提案節點,各個備選節點獨立提出備選區塊。
B、根據VRF從共識網路中選擇多個驗證節點,每個驗證節點將從網路中收集備選區塊,進行驗證,然後對最高優先順序的備選區塊進行投票。
C、根據VRF從共識網路中選擇多個確認節點,對上述驗證節點的投票結果進行統計驗證,並決定最終的共識結果。
D、所有節點接受確認節點的共識結果,開始下一輪共識流程。
在VBFT演算法中,每一輪區塊的VRF值都基於上一輪共識區塊的易變資訊,並通過計算該資訊的雜湊值來作為下一輪共識區塊的VRF值。由此,每一個區塊的VRF值都是可驗證的。
根據VBFT文中介紹,依據VRF選定節點的同時,也確定了節點的排序次序,即節點的優先順序順序。優先順序順序的存在,為節點應對主鏈分叉提供了參考方案。由於惡意分叉很難一直維持最高優先順序,從而達到遏制惡意分叉的目的。

2、區塊鏈共識演算法的選擇

在區塊鏈網路中,由於應用情境的不同,所設計的目標各異,不同的區塊鏈系統採用了不同的共識演算法。通常,在私人鏈和聯盟鏈情況下,對一致性、正確性有很強的要求,要採用強一致性的共識演算法;而在公有鏈情況下,對一致性和正確性通常沒法做到百分之百,通常採用最終一致性(Eventual Consistency)的共識演算法。
共識演算法的選擇與應用情境高度相關,可信環境使用Paxos演算法或者Raft演算法,帶許可的聯盟可使用PBFT演算法,非許可鏈可以使用POW,POS,Ripple共識等,根據對手方信任度分級,自由選擇共識機制。

四、區塊鏈的關鍵問題和挑戰1、隱私保護

隱私保護一直是分布式系統領域十分關鍵的問題。在分布式情境下,因為缺乏獨立的管理機制,參與網路的各方無法保證嚴格遵守協議,甚至會故意試圖擷取網路中他人的資料,對於隱私的竊取行為都很難進行約束。
而分散式總帳要在共用協同資訊和隱私保護之間達到合適的平衡,是個不小的挑戰,特別隨著公有賬本系統屢屢出現安全性漏洞,動輒造成數千萬美金的風險。隨著《一般資料保護條例》(General Data Protection Regulation,GDPR)的落地,隱私保護的合規要求愈加嚴格。傳統的資訊安全技術、形式化驗證技術在應對新的需求時暴露出實踐性不強的缺陷,都亟待解決。尤其以醫學健康領域,對資料的隱私性需求最為強烈,要求嚴格控制資料的來源、所有權和使用範圍,傳統手段很難滿足隱私保護特性需求,需要有機結合零知識證明、同態加密等新的密碼學手段,但新技術在實際應用中還存在不少問題。

2、分布式共識

共識是分布式系統領域經典的技術難題,學術界和業界都已有大量的研究成果(包括Paxos、BFT系列演算法等)。
分布式共識問題的核心在於確保某個變更在分布式網路中得到一致的執行結果,是被參與多方都承認的,同時資訊是不可推翻的。
分布式共識在公開匿名情境下和帶許可權管理的情境下需求差異較大,從而導致了基於機率的演算法和確定性演算法兩類思想。
最初,比特幣區塊鏈考慮的是公開匿名情境下的最壞保證。通過引入了POW工作量證明策略來規避少數人的惡意行為,並通過機率模型保證最後參與方共識到最長鏈。POW演算法的核心思想是基於經濟利益的博弈,讓惡意破壞的參與者損失經濟利益,從而保證大部分人的合作。同時,確認必須經過多個區塊的產生後達成,從機率上進行保證。機率性演算法的主要問題在於效率的低下和能源的浪費,如POW,POS和DPOS演算法等。
區塊鏈技術(如超級賬本)在帶許可權許可的情境下,開始考慮支援更多的確定性共識機制,包括BFT系列演算法等,可以解決快速確認的問題。
共識問題在很長一段時間內都將是極具學術價值的研究熱點,核心的指標將包括容錯的節點比例、決策收斂速度、出錯後的恢複、動態特性等。POW等基於機率的系列演算法理論上允許少於一半的不合作節點,BFT等確定性演算法理論上則允許不超過1/3的不合作節點。

3、交易效能

通常,區塊鏈並不適用於高頻交易的情境,但由於金融系統的需求,業界目前十分關心如何盡量提高區塊鏈系統的交易效能,包括輸送量和確認延遲兩個方面。
目前,公開的比特幣區塊鏈只能支援平均每秒約7 筆的輸送量,安全的交易確認時間為一個小時左右;以太坊區塊鏈的輸送量略高,能達到幾十筆每秒,但交易效能也是較大的瓶頸。
為了提高處理效能,一方面可以提升單個節點的效能(如採用高配置的硬體),同時設計最佳化的策略和演算法,提高效能;另外一方面可將交易處理卸載(off-load)到鏈下。只用區塊鏈記錄最終交易資訊,如比特幣社區提出的閃電網路等設計。側鏈(side chain)、影子鏈(shadow chain)等思路在當前階段也有一定的借鑒意義,可將整體效能提升1~2個數量級。
聯盟鏈情境下,參與多方存在一定的信任前提和利益約束,可以採取更最佳化的設計,換來效能的提升。以Hyperleger Fabric項目為例,在普通虛擬機器設定下,單用戶端每秒可以達到數百次(Transactions per second,TPS)的交易輸送量;在有一定工程最佳化或硬體加速情況下可以達到每秒數千次的輸送量。
目前開源區塊鏈系統已經可以滿足不少應用情境的效能需求,但離大規模交易系統每秒穩定數萬筆的吞吐效能還有較大差距。根據公開的資料,VISA系統的處理均值為2000 TPS,峰值為56,000TPS;某金融支付系統的處理峰值超過85,000TPS;大型證券證券交易所的處理均值在 80,000TPS左右。

4、可擴充性

常見的分布式系統,可以通過橫向增加節點來擴充整個系統的處理能力。
大部分區塊鏈系統的效能很大程度上取決於單個節點的處理能力,節點需要滿足高效能、安全、穩定、硬體輔助加解密能力。例如,對於比特幣和以太坊區塊鏈,網路中每個參與維護的核心節點都要保持一份完整的儲存,並且進行智能合約的處理。此時,整個網路的總儲存和計算能力,取決於單個節點的能力。甚至當網路中節點數過多時,可能會因為共識延遲而降低整個網路的效能。尤其在公有網路中,由於大量低效能處理節點的存在,問題將更加明顯。
要解決區塊鏈系統的擴充能力,根本上是放鬆對每個節點都必須參與完整處理的限制(網路中節點要能合作完成完整的處理),已經在超級賬本項目中得到應用;同時盡量減少核心層的處理工作,甚至採用多層處理結構來分散交易。
在聯盟鏈模式下,可以專門採用高效能的節點作為核心節點,用相對較弱的節點作為代理訪問節點。
另外,未來必然會涉及到不同賬本之間互連的跨鏈需求。超級賬本的Quilt項目和W3C的Interledger Payments工作群組已對此問題開展研究。

5、安全防護

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

6、資料庫和儲存系統

區塊鏈網路中的大量資訊需要寫到檔案和資料庫中進行持久化儲存。
區塊鏈的應用需要進行大量的讀寫操作、Hash計算和驗證操作,跟傳統資料庫的行為十分不同。
LevelDB、RocksDB 等索引值資料庫,具備很高的隨機寫和順序讀、寫效能,以及相對較差的隨機讀的效能,被廣泛應用到了區塊鏈資訊儲存中。但目前來看,面向區塊鏈的資料庫技術仍然是需要突破的技術痛點之一,特別是如何支援更豐富語義的操作。未來將可能出現更具針對性的區塊鏈資料庫,專門服務區塊鏈新型資料業務,其中每條記錄將包括一個完整的區塊資訊,並天然地跟曆史資訊進行關聯,一旦寫入確認則無法修改。所有操作的最小單位將是一個塊。需要原生支援高效的簽名和加解密處理。

7、整合和運營治理

大部分企業內和企業之間都已經存在一些資訊化產品和工具,例如處於核心位置的資料庫、公司資訊管理系統、通訊系統等。企業在採用新的產品時,往往會重點考察與已有商業流程和資訊系統進行整合時的平滑度。
兩種系統如何共存,如何分工,彼此的業務交易如何進行合理傳遞,出現故障如何排查和隔離,已有資料如何在不同系統之間進行遷移和災備,都是很迫切要解決的實際問題。解決不好,將是區塊鏈技術落地的不小阻礙。
雖然大部分區塊鏈系統在平台層面都支援了非中心化機制,在運營和治理層面確往往做不到非中心化。以比特幣網路為例,曆史上多次發生過大部分算力集中在少數礦池的情況,同時軟體的演化路線集中在少數開發人員手中。運營和治理機制是現有區塊鏈系統中普遍缺失的,但在實際應用中又十分重要。
如何進行合理的共識、高效的治理仍屬於尚未解決的問題。公有鏈中試圖通過將電腦系統中的令牌與經濟利益掛鈎,維護系統持續運行;聯盟鏈中通過商業合作和投票等方式,推舉聯盟治理機構,進行聯盟網路的維護管理。但相關機制仍需在實踐過程中不斷完善和改進。以供應鏈情境為例,動輒涉及到數百家企業,上下遊幾十個環節,而且動態性較強,都需要分散式總帳平台能提供很強的治理投票和許可權管控機制。

區塊鏈快速入門(五)——區塊鏈技術的演化

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.