區(qū)塊鏈的性能問題
VISA是目前世界上廣泛使用的信用卡品牌,區(qū)塊鏈要達(dá)到實(shí)用水平,性能上至少需要能跟VISA之類的支付系統(tǒng)作比較。根據(jù)VISA在2015年的記錄,全年共產(chǎn)生92,064百萬筆支付交易,平均2920tps,按平均每筆交易512字節(jié)左右計(jì)算,全年交易數(shù)據(jù)量約47TB。
而目前主流區(qū)塊鏈性能情況是,比特幣每秒只能進(jìn)行大約7筆交易;以太坊每秒10-20筆。目前這些區(qū)塊鏈的交易性能都無法與VISA相比。更嚴(yán)重的是,目前比特幣和以太坊的礦機(jī)都需要存儲(chǔ)全量數(shù)據(jù),而單個(gè)機(jī)器的存儲(chǔ)容量是有限的,若無法解決這個(gè)問題,即使交易性能提升了,若按每年新增數(shù)據(jù)量47 TB算,那么這些數(shù)據(jù)很快就會(huì)超過單機(jī)的容量,到時(shí)候整個(gè)區(qū)塊鏈網(wǎng)絡(luò)都無法繼續(xù)運(yùn)行。
那么,比特幣和以太坊這種擁有海量節(jié)點(diǎn)的區(qū)塊鏈系統(tǒng),為什么性能卻這么低呢?為什么區(qū)塊鏈的可擴(kuò)展性這么差呢?
原因分析
區(qū)塊鏈?zhǔn)侨?a target="_blank">中心化的賬本技術(shù),需要保證開放性、自治性、不可篡改等特性。去中心化是指使用分布式核算和存儲(chǔ),不存在中心化的硬件或管理機(jī)構(gòu),任意節(jié)點(diǎn)的權(quán)利和義務(wù)都是均等的,系統(tǒng)中的數(shù)據(jù)塊由整個(gè)系統(tǒng)中具有維護(hù)功能的節(jié)點(diǎn)來共同維護(hù)。也就是說,系統(tǒng)中任意節(jié)點(diǎn)都需要對(duì)交易數(shù)據(jù)進(jìn)行全量計(jì)算和存儲(chǔ)。因此,區(qū)塊鏈?zhǔn)菦]有可擴(kuò)展性的,即系統(tǒng)的總體性能受限于單個(gè)節(jié)點(diǎn)的性能上限,即使加入了大量節(jié)點(diǎn),系統(tǒng)的總體性能也無法提升。
可擴(kuò)展性是傳統(tǒng)分布式系統(tǒng)的基本特性,但區(qū)塊鏈由于去中心化的要求,可擴(kuò)展性卻難以滿足。業(yè)界總結(jié)了一個(gè)三元悖論描述去中心化與可擴(kuò)展性之間的矛盾,它尚未被嚴(yán)格證明,只能被稱為猜想,但實(shí)際系統(tǒng)設(shè)計(jì)過程中卻能感覺到時(shí)時(shí)受其挑戰(zhàn):
去中心化(Decentralization),安全性(Security)和可擴(kuò)展性(Scalability)這三個(gè)屬性,區(qū)塊鏈系統(tǒng)無法同時(shí)滿足,最多只能三選其二。
上圖演示了區(qū)塊鏈如何在這三個(gè)因素之間作選擇及對(duì)應(yīng)的策略,例如若若要滿足安全性與去中心化,則需要所有節(jié)點(diǎn)參與共識(shí)、計(jì)算、全量存儲(chǔ),但由此帶來的問題是失去可擴(kuò)展性,也就是系統(tǒng)的總體性能無法隨著節(jié)點(diǎn)的增多而提升;若要滿足可擴(kuò)展性與安全性,則需要中心化管理,需要保證參與共識(shí)的節(jié)點(diǎn)是可信的;若要滿足可擴(kuò)展性與去中心化,則采用分散存儲(chǔ)、計(jì)算的策略,不做全量共識(shí),則攻擊網(wǎng)絡(luò)的難度降低,安全性難以保證。
提升區(qū)塊鏈系統(tǒng)性能的方案
我們知道,影響區(qū)塊鏈交易性能的主要因素包括共識(shí)機(jī)制、交易驗(yàn)證、廣播通信、信息加解密等幾個(gè)環(huán)節(jié)。從這些環(huán)節(jié)入手,我們可以得到一些提升性能的方法。
共識(shí)機(jī)制
從PoW到PoS再到DPoS和各種BFT類算法,共識(shí)機(jī)制不斷創(chuàng)新,區(qū)塊鏈平臺(tái)性能也得到大幅提升。
交易驗(yàn)證
從交易驗(yàn)證機(jī)制角度出發(fā),目前有幾種優(yōu)化處理方式:
1)閃電網(wǎng)絡(luò)(Lightning Network)和狀態(tài)通道(State Channels),這兩種策略是保持底層的區(qū)塊鏈協(xié)議不變,將交易放到鏈下執(zhí)行,通過改變協(xié)議用法的方式來解決擴(kuò)展性問題。鏈下的部分可以用傳統(tǒng)的中心化的分布式系統(tǒng)實(shí)現(xiàn),性能具有可擴(kuò)展性。在這種策略下,分布式賬本上只是記錄粗粒度的賬本,而真正細(xì)粒度的雙邊或有限多邊交易明細(xì),則不作為交易記錄在分布式賬本上。缺點(diǎn)是存在中心化的系統(tǒng)。
2)分片處理(sharding),以太坊項(xiàng)目正在研發(fā)中的分片(shard)方案的總體思路是每個(gè)節(jié)點(diǎn)只處理一部分交易,比如一部分賬戶發(fā)起的交易,從而減輕節(jié)點(diǎn)的計(jì)算和存儲(chǔ)負(fù)擔(dān)。
3)多鏈架構(gòu)(Multi-chain)的思路則是將原本的一條鏈分成多條鏈,每條鏈都負(fù)責(zé)部分計(jì)算和存儲(chǔ)業(yè)務(wù),并且有可擴(kuò)展性,即鏈的數(shù)量可以隨著業(yè)務(wù)量和數(shù)據(jù)的增加而增加,系統(tǒng)的總體性能隨著鏈的數(shù)量的增加而提升,系統(tǒng)的存儲(chǔ)空間也能隨著鏈的數(shù)量的增加而擴(kuò)大。
廣播通信
P2P網(wǎng)絡(luò)是區(qū)塊鏈的核心技術(shù)之一,因此P2P網(wǎng)絡(luò)通信的效率對(duì)性能的影響非常重要。為了能改善廣播通信性能,需要提高節(jié)點(diǎn)機(jī)器的物理配置,提供高速網(wǎng)絡(luò)連接,并采用減少廣播的共識(shí)算法,如DPoS等。
信息的加解密
信息的加解密是區(qū)塊鏈的關(guān)鍵環(huán)節(jié),主要是哈希函數(shù)和非對(duì)稱加密兩類算法。區(qū)塊鏈系統(tǒng)中可以采用更高性能的加密算法以提升交易驗(yàn)證的性能。
方案對(duì)比
上述優(yōu)化方法中,共識(shí)機(jī)制、廣播通信、信息加解密是算法層面的優(yōu)化,盡管這些方案也是重要的優(yōu)化,但其沒有解決根本性的問題,其性能提升仍然受限于單機(jī)性能,不是可擴(kuò)展的,因此性能提升有限,本文不再詳述;交易驗(yàn)證的幾個(gè)優(yōu)化方案則是可擴(kuò)展的方案,其中閃電網(wǎng)絡(luò)和狀態(tài)通道是鏈下執(zhí)行的方案,采用中心化的系統(tǒng)提升區(qū)塊鏈性能,與區(qū)塊鏈去中心化的理念相悖,而且使用復(fù)雜、用戶體驗(yàn)差(例如閃電網(wǎng)絡(luò)要求交易中的雙方以及中間人都必須同時(shí)在線、線下系統(tǒng)開發(fā)復(fù)雜因?yàn)橐獙ふ铱捎玫闹Ц锻ǖ?、不適用于大額交易等),無法得到廣泛使用。因此EOS、以太坊、Cosmos及迅雷鏈等高性能區(qū)塊鏈項(xiàng)目均采用分片或多鏈方案。
分片或多鏈方案的思路是一樣的,都是讓每個(gè)分片或分鏈進(jìn)行部分交易數(shù)據(jù)的處理和存儲(chǔ),每個(gè)分片和分鏈可以并行處理不同的交易數(shù)據(jù),這樣分片或分鏈的數(shù)量越多,系統(tǒng)的總體性能就越高,這兩者都是可擴(kuò)展性很強(qiáng)的方案。
1.EOS的多鏈實(shí)現(xiàn)方案
EOS的技術(shù)白皮書中并沒有描述多鏈的實(shí)現(xiàn)方案,只描述了支持跨鏈通信的IBC(Inter Blockchain Communication)協(xié)議,跨鏈交互通過簡化生成消息存在的證明和消息序列的證明來實(shí)現(xiàn)。EOSIO聲稱主鏈可以支持3000以上的TPS,通過IBC可達(dá)到100萬TPS。
EOS的多鏈架構(gòu)其實(shí)是側(cè)鏈方案。開發(fā)者可以單獨(dú)部署一條EOS側(cè)鏈(公鏈、私鏈都可以),運(yùn)行自己的Dapp,這些側(cè)鏈有可以有自己的委員會(huì),見證人以及計(jì)算資源,有自己的代幣,這些代幣有自己的增發(fā)方式,而且代幣可以和EOS通過接口進(jìn)行錨定去實(shí)現(xiàn)包括鎖定在內(nèi)的某種操作。側(cè)鏈最大的特征雙向錨定(two-way-peg)技術(shù),它使得在側(cè)鏈流通的Token價(jià)格總是與EOS價(jià)格保持一定比例或者直接采用EOS。
因此EOS的多鏈架構(gòu)并不是對(duì)主鏈本身進(jìn)行可擴(kuò)展性改造,只是期望通過子鏈來分擔(dān)主鏈的壓力。
2.以太坊的分片技術(shù)(Sharding)
分片(Sharding)是以太坊正在開發(fā)中的技術(shù),其大致設(shè)計(jì)思路是:將區(qū)塊鏈網(wǎng)絡(luò)中的每個(gè)區(qū)塊變?yōu)橐粋€(gè)子區(qū)塊鏈,子區(qū)塊鏈中可以容納若干(目前為100個(gè))打包了交易數(shù)據(jù)的Collation(大概可以稱為“校驗(yàn)塊”,為了在分片的情景中將其與區(qū)塊的概念區(qū)分開),這些Collation最終組成一個(gè)在主鏈上區(qū)塊;因?yàn)檫@些Collation是整體作為區(qū)塊存在的,所以其數(shù)據(jù)必定是全部由某個(gè)特定的礦工所打包生成,本質(zhì)上和現(xiàn)有協(xié)議中的區(qū)塊沒有區(qū)別,所以不再需要增加額外的網(wǎng)絡(luò)確認(rèn)。這樣,每個(gè)區(qū)塊的交易容量就大概擴(kuò)大了100倍;而且這種設(shè)計(jì)還有利于未來的繼續(xù)擴(kuò)展。
跨分片通信: 利用 UTXO 模型,并通過在主鏈上進(jìn)行交易和創(chuàng)建一個(gè) receipt(帶有 receipt ID),用戶可以將以太存入一個(gè)指定分片。分片鏈上的用戶可以給定 receipt ID 創(chuàng)建一個(gè)消費(fèi) receipt(receipt-consuming)的交易,來花費(fèi)該 receipt。但UTXO適用于交易,對(duì)于合約狀態(tài)數(shù)據(jù)存儲(chǔ)不適用。
3.Cosmos的多鏈技術(shù)
Cosmos項(xiàng)目的目的是解決區(qū)塊鏈交互操作和可擴(kuò)展性問題,其區(qū)塊鏈間通訊協(xié)議可以實(shí)現(xiàn)區(qū)塊鏈的互聯(lián),支持不同區(qū)塊鏈之間的資產(chǎn)轉(zhuǎn)移。
網(wǎng)絡(luò)主要由兩部分組成,Cosmos Hub和若干個(gè)Zone。
Cosmos網(wǎng)絡(luò)里第一條鏈?zhǔn)荋ub,從名字和功能上都可以把它理解為Cosmos的中心鏈或者管理員鏈,所有其它區(qū)塊鏈的交易都會(huì)在Hub記錄,一條區(qū)塊鏈上的token可以通過Hub轉(zhuǎn)移到另一條區(qū)塊鏈。Hub是Cosmos網(wǎng)絡(luò)的核心,和其余的Zone是不平等的,從嚴(yán)格意義上講Cosmos網(wǎng)絡(luò)不是真正的分布式系統(tǒng),如果Hub發(fā)生了單點(diǎn)故障(當(dāng)然Hub本身是分布式的,發(fā)生問題的機(jī)率很?。?,Cosmos網(wǎng)絡(luò)的很多特性會(huì)不可用。關(guān)于這點(diǎn),白皮書中強(qiáng)調(diào)Hub必須得到嚴(yán)格保護(hù)。
每個(gè)Zone可以看做是單獨(dú)的區(qū)塊鏈空間。每個(gè)Zone會(huì)和Hub保持狀態(tài)同步。Hub通過去中心化的驗(yàn)證人組來保證安全性。Zone1向Zone2做跨鏈消息時(shí),Zone1先生成消息包,并將其證明發(fā)布在Hub上,接下來Hub會(huì)生成Zone1的跨鏈消息包已在Hub上的存在證明的證明發(fā)布于Zone2,接下來Zone2收妥消息包,并給出證明發(fā)布于Hub上,最后,Hub再給出Zone2的收妥證明的證明發(fā)布于Zone2。完成整個(gè)跨鏈消息傳遞。
4.迅雷鏈同構(gòu)多鏈架構(gòu)
迅雷鏈?zhǔn)峭瑯?gòu)多鏈的架構(gòu),即每條鏈的結(jié)構(gòu)相同、地位平等。即系統(tǒng)由一條條相對(duì)獨(dú)立(獨(dú)立進(jìn)行共識(shí))的鏈組成,每條鏈有多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)被分配到其中一條鏈上,不同的賬戶數(shù)據(jù)被錨定在不同的同構(gòu)鏈上,然后接入層將交易路由到發(fā)送方所在的鏈上進(jìn)行區(qū)塊打包與共識(shí)。系統(tǒng)中鏈的數(shù)量能夠按業(yè)務(wù)需求動(dòng)態(tài)增加。因此同構(gòu)多鏈的架構(gòu)首先保證了系統(tǒng)的可擴(kuò)展性。
不同于EOS等區(qū)塊鏈系統(tǒng)需要昂貴的高性能服務(wù)器作為記賬節(jié)點(diǎn),迅雷鏈?zhǔn)褂昧畠r(jià)省電的玩客云設(shè)備作為記賬節(jié)點(diǎn),構(gòu)建了自己的大規(guī)模共享計(jì)算平臺(tái)。目前玩客云節(jié)點(diǎn)數(shù)量已超過150萬個(gè)節(jié)點(diǎn)數(shù),如此龐大的節(jié)點(diǎn)數(shù)量,對(duì)區(qū)塊鏈系統(tǒng)的可擴(kuò)展性提出了嚴(yán)峻的挑戰(zhàn)。挑戰(zhàn)主要來自兩個(gè)方面:
1)玩客云設(shè)備廉價(jià)省電,性能也低,這就要求共識(shí)算法必須使用綠色環(huán)保、適應(yīng)家庭用戶的網(wǎng)絡(luò)環(huán)境的算法。針對(duì)這個(gè)挑戰(zhàn),迅雷鏈在改進(jìn)的PBFT的基礎(chǔ)上,還融合了DPoS的思想,在每條鏈上,都會(huì)周期性地(例如每隔5000個(gè)區(qū)塊)選舉出驗(yàn)證人節(jié)點(diǎn)參與共識(shí)。與傳統(tǒng)的DPoS不同之處在于,迅雷鏈并不是根據(jù)礦工持有的代幣數(shù)量或幣齡作為選舉標(biāo)準(zhǔn)投票權(quán)重,而是按玩客云節(jié)點(diǎn)的存儲(chǔ)容量、網(wǎng)絡(luò)穩(wěn)定性、帶寬、時(shí)延等標(biāo)準(zhǔn)作為衡量標(biāo)準(zhǔn),以獲得更好的公平性和網(wǎng)絡(luò)效率。
2)玩客云節(jié)點(diǎn)數(shù)量龐大,家庭網(wǎng)絡(luò)環(huán)境復(fù)雜,要求區(qū)塊鏈系統(tǒng)必須設(shè)計(jì)成可擴(kuò)展性高、自治能力強(qiáng)的架構(gòu)。得益于同構(gòu)多鏈的架構(gòu)非常強(qiáng)大的可擴(kuò)展性,迅雷鏈能夠充分利用海量玩客云節(jié)點(diǎn),可以將鏈數(shù)“無限”擴(kuò)展,從而具備百萬級(jí)的并發(fā)處理能力。
綜上所述,迅雷鏈采用多鏈架構(gòu)實(shí)現(xiàn)了可擴(kuò)展性 + 使用PBFT實(shí)現(xiàn)了強(qiáng)一致性 + 使用更綠色環(huán)保和公平的DPoS進(jìn)一步提升了共識(shí)效率、也得到了更高的可用性。從去中心化(Decentralization),安全性(Security)和可擴(kuò)展性(Scalability)三要素的角度看,由海量的廣泛分布的玩客云設(shè)備支撐了去中心化和安全性,采用多鏈架構(gòu)以實(shí)現(xiàn)可擴(kuò)展性。
總結(jié)
共識(shí)機(jī)制、廣播通信、信息加解密等算法層面的優(yōu)化,無法解決大規(guī)模去中心化系統(tǒng)的可擴(kuò)展性問題;而閃電網(wǎng)絡(luò)和狀態(tài)通道是鏈下執(zhí)行的方案,則與區(qū)塊鏈去中心化的理念相悖,而且使用復(fù)雜、用戶體驗(yàn)差,無法得到廣泛使用。因此前沿的區(qū)塊鏈項(xiàng)目均采用可擴(kuò)展性強(qiáng)的分片或多鏈方案。
其中,EOS目前是多線程的架構(gòu),總體性能還是受到單臺(tái)機(jī)器的性能所限,需要昂貴的服務(wù)器來運(yùn)行區(qū)塊鏈節(jié)點(diǎn),可擴(kuò)展性并不算強(qiáng);以太坊正在開發(fā)中的分片技術(shù)則需要主鏈負(fù)責(zé)驗(yàn)證子鏈的區(qū)塊,由于主鏈會(huì)存在性能瓶頸,因此子鏈數(shù)量受到限制(100個(gè)子鏈);Cosmos也是同樣的問題,Hub必須得到嚴(yán)格保護(hù);迅雷鏈采用的同構(gòu)多鏈架構(gòu)則避免了上述缺點(diǎn),適用于大規(guī)則廉價(jià)節(jié)點(diǎn)的部署, 可以將鏈數(shù)“無限”擴(kuò)展,從而具備百萬級(jí)的并發(fā)處理能力。
評(píng)論
查看更多