性能決定著每秒可以處理多少請求。舉個簡單的例子,2016年時淘寶雙十一訂單交易的創(chuàng)建就達到了每秒鐘17.5萬筆,而在區(qū)塊鏈領(lǐng)域,國內(nèi)外很多知名主鏈的TPS(每秒交易次數(shù))都不超過二位數(shù),因此極大限制了區(qū)塊鏈技術(shù)應(yīng)用于用戶數(shù)量較大的C端場景。目前,業(yè)內(nèi)公認為性能最為領(lǐng)先的是迅雷鏈,它憑借獨創(chuàng)的同構(gòu)多鏈框架實現(xiàn)了百萬TPS的處理能力,也使得區(qū)塊鏈技術(shù)大規(guī)模應(yīng)用過程中的性能瓶頸迎刃而解。
再說存儲。
區(qū)塊鏈的存儲問題也是行業(yè)內(nèi)眾所周知的難題,區(qū)塊鏈不適合存儲大塊的數(shù)據(jù),但與我們生活息息相關(guān)的各種應(yīng)用又有大數(shù)據(jù)存儲的需要,比如圖片、存證等等。
迅雷鏈通過同構(gòu)多鏈框架,每個鏈上的記賬節(jié)點只需要記錄所在鏈的數(shù)據(jù),一定程度緩解了單個記賬節(jié)點存儲的壓力。但是為了安全性的考慮,一個鏈的多個記賬節(jié)點仍然存有全量數(shù)據(jù),對于大塊的數(shù)據(jù)比如合同、存證等可能高達幾兆的數(shù)據(jù)在鏈上存儲依然十分不經(jīng)濟。為了解決這個問題,迅雷鏈在去年7月份推出了針對區(qū)塊鏈應(yīng)用存儲的迅雷鏈文件系統(tǒng)TCFS,解決了區(qū)塊鏈上存儲大塊數(shù)據(jù)的問題,更適用于區(qū)塊鏈開發(fā)。
但這依然還不夠,區(qū)塊鏈數(shù)據(jù)的快速增長,歷史數(shù)據(jù)不斷增大,導(dǎo)致節(jié)點的存儲負擔(dān)越來越重,如比特幣全量數(shù)據(jù)大小已超過200GB,并以每月3-4GB的速度增長。如果你打算加入比特幣網(wǎng)絡(luò)啟動一個全量節(jié)點,在10M/s的下載速度的情況下需要6個小時才能完成數(shù)據(jù)的同步,如果只有1M/s的下載速度則需要60個小時。
新節(jié)點加入不僅需要消耗大量帶寬還需要占用大量的存儲空間,這次迅雷鏈繼續(xù)迎難而上。
在最近迅雷鏈發(fā)布的四大技術(shù)升級中,其中之一就是對存儲層進行了優(yōu)化,通過存儲引擎可插拔技術(shù)和快照壓縮技術(shù)完美解決了區(qū)塊鏈存儲難題。
1. 存儲引擎可插拔
迅雷鏈將存儲層進行了抽象,實現(xiàn)適配多種存儲引擎,以適應(yīng)不同數(shù)據(jù)量場景的要求:
當數(shù)據(jù)量較小時可選擇輕量級單機數(shù)據(jù)庫,如leveldb,滿足性能和易維護的要求;
當數(shù)據(jù)量較大時可選擇主流分布式存儲數(shù)據(jù)庫,增強節(jié)點的存儲能力。目前迅雷鏈已經(jīng)實現(xiàn)基于mongoDB存儲集群的樣例,其他擴展需求只需要實現(xiàn)相應(yīng)的接口,就可以輕松、無縫切換掉底層存儲系統(tǒng)。
2. 快照壓縮
迅雷鏈通過構(gòu)建區(qū)塊數(shù)據(jù)快照,利用百萬共享計算節(jié)點進行歷史數(shù)據(jù)存儲,并提供數(shù)據(jù)的完整性和存在性證明,使得迅雷鏈中參加共識的節(jié)點無需同步和存儲全量的歷史數(shù)據(jù),只需同步最新的區(qū)塊快照數(shù)據(jù)和最新的狀態(tài)數(shù)據(jù)即可,實現(xiàn)了真正的輕量記賬節(jié)點。具體工作流程如圖所示:
1)數(shù)據(jù)快照
利用基于百萬級的共享計算節(jié)點的TCFS(迅雷鏈文件系統(tǒng))存儲迅雷鏈的歷史數(shù)據(jù)和每個區(qū)塊的數(shù)據(jù)狀態(tài)快照,確保數(shù)據(jù)永不丟失,同時提供數(shù)據(jù)的完整性證明和存在性證明。
每個區(qū)塊的交易被確認執(zhí)行之后,迅雷鏈會記錄當前區(qū)塊高度的全局數(shù)據(jù)狀態(tài),即數(shù)據(jù)快照。數(shù)據(jù)快照內(nèi)容包括區(qū)塊頭部信息、交易數(shù)據(jù)、所有賬戶數(shù)據(jù)以及共識投票信息等。歷史數(shù)據(jù)使用TCFS進行歸檔存儲,TCFS提供數(shù)據(jù)安全性的保障。
2)真正的輕節(jié)點
加入迅雷鏈的節(jié)點只需要同步最新的狀態(tài)數(shù)據(jù)便可加入共識流程。
在之后的運行過程中,只需保留最近的數(shù)據(jù),已歸檔的數(shù)據(jù)可刪除,本地存儲數(shù)據(jù)量不會過快的增長。
這使得一個輕節(jié)點也可加入共識流程,擴大了適用范圍,使移動設(shè)備加入迅雷鏈網(wǎng)絡(luò)成為可能。
3)快速啟動
新節(jié)點的啟動只需要下載極少量的數(shù)據(jù),即可快速完成啟動并入共識流程,極大降低加入門檻,提高節(jié)點加入迅雷鏈的積極性。
在公網(wǎng)的環(huán)境下,節(jié)點由于網(wǎng)絡(luò)抖動或其他原因,掉線一段時間后重連,這時節(jié)點不需要同步掉線期間錯過的所有數(shù)據(jù),只需從最新快照開始同步。這部分的數(shù)據(jù)量是非常小的,能在短時間內(nèi)跟進最新狀態(tài),重新加入到迅雷鏈網(wǎng)絡(luò)之中。
此次優(yōu)化不僅降低整個網(wǎng)絡(luò)的帶寬消耗,同時也提升了迅雷鏈網(wǎng)絡(luò)的魯棒性。
區(qū)塊鏈存儲的重要性不言而喻。迅雷鏈針對區(qū)塊鏈存儲問題提出新思路,以解決實際的問題為出發(fā)點,保證主鏈性能的基礎(chǔ)上,優(yōu)化存儲技術(shù),使得區(qū)塊鏈開發(fā)變得更加簡單、可應(yīng)用。迅雷鏈對技術(shù)的不斷投入,解決了大型企業(yè)在區(qū)塊鏈上的存儲需求。而隨著研發(fā)的不斷深入,這些新技術(shù)必然會為區(qū)塊鏈技術(shù)落地實體經(jīng)濟,帶來至關(guān)重要的驅(qū)動力。