999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

區塊鏈存儲可擴展性研究進展*

2021-05-18 11:28:24孫知信
軟件學報 2021年1期

孫知信,張 鑫,相 峰,陳 露

1(南京郵電大學 國家郵政局郵政行業技術研發中心(物聯網技術),江蘇 南京 210003)

2(寬帶無線通信與傳感網技術教育部重點實驗室(南京郵電大學),江蘇 南京 210003)

3(物流信息互通共享技術及應用國家工程實驗室(圓通速遞股份有限公司),上海 201705)

區塊鏈技術起源于2008 年,由一名叫中本聰(Satoshi Nakamoto)的日本人在《比特幣:一個點對點電子現金系統》[1]中首次提出比特幣的概念.比特幣等數字加密貨幣的核心技術便是區塊鏈技術.2015 年之前,大家更關注的是比特幣的“幣”而不是底層的區塊鏈技術.2015 年,以太坊(Ethereum)[2]的出現以及之后的日漸成熟,使得區塊鏈這一概念為更多人所了解和研究,并且朝著更加光明和廣泛的應用場景不斷發展.

區塊鏈技術的不斷發展,給信息共享[3]、版權保護[4]、供應鏈[5]、物聯網[6,7]、醫療[8]、社交[9]以及文件存儲[10]等領域提供了更多的可能.但是與傳統貨幣相似,區塊鏈技術同樣存在三元悖論,即去中心化、安全性和可擴展性,三者只能得其二.當追求安全性和去中心化時,則無法顧及可擴展性;當追求安全性和可擴展性時,則無法實現去中心化;當追求去中心化和可擴展性時,則需要犧牲安全性.比特幣和以太坊都是優先追求去中心化和安全性,而犧牲可擴展性.比特幣的吞吐量為每秒處理7 次交易,以太坊則是每秒10~20 次.可擴展性已成為區塊鏈應用落地的最大瓶頸.區塊鏈可擴展性可分為性能可擴展性和功能可擴展性,其中,性能可擴展性包含吞吐量擴展、存儲擴展以及網絡擴展:吞吐量擴展與每個區塊中的交易數及產生兩個區塊的時間間隔有關;存儲擴展與區塊鏈生成的數據有關;網絡擴展與區塊鏈網絡中的數據傳輸有關[11].

當前,區塊鏈的應用領域[12]可分為:(1)加密數字貨幣領域,如比特幣、以太幣等;(2)數據記錄及管理領域,如數據存儲[13]、數據鑒證[14]等;(3)信息安全領域,如認證技術[15]、訪問控制[16]等;(4)其他領域,如共享經濟[17]、智能交通[18]和能源網絡[19]等等.區塊鏈在不同場景下的應用,都因高冗余存儲(每個節點存儲一份完整的數據)增強了數據的公開性、透明性,提高了系統的可用性;但另一方面,每個節點都需要同步最新的賬本,這會給區塊鏈帶來性能問題和巨大的存儲壓力.在加密數字貨幣比特幣中,節點需要對全球賬本進行同步,才能通過檢索本地副本以驗證交易的發起者是否擁有足夠的“幣”發起這筆交易.如圖1 所示,截至2019 年第2 季度末,比特幣大小約為221.29GB.潛在的用戶如果沒有足夠的存儲空間,那么它將無法加入到區塊鏈網絡中作為全節點來驗證新交易.當區塊鏈試圖解決物聯網領域的問題時,會遇到物聯網設備作為區塊鏈節點時節點數量增速快、自身體量小以及計算、存儲等能力不足[20]的問題.從應用開發的角度看,基于區塊鏈的應用開發需要滿足可擴展性要求和一致性要求[21].區塊鏈的一致性是指存儲在區塊鏈不同節點中的數據副本的取值必須一致,它通過共識算法、數據的可靠傳輸、高冗余存儲和加密技術來實現[22].由于高冗余存儲會增加節點的存儲壓力,導致存儲可擴展性問題.因此,如果需要高一致性,那么就會降低存儲可擴展性.綜上,從區塊鏈的應用領域和區塊鏈的應用開發角度來看,區塊鏈的存儲可擴展性問題已成為制約區塊鏈應用落地的一大問題[23].

Fig.1 Bitcoin blockchain size from 2010 to 2019 in MBytes圖1 從2010 年~2019 年比特幣區塊鏈的大小(以MBytes 為單位)

潘晨等學者[24]從性能擴展和功能擴展兩個角度,詳細介紹了當前3 類主流提升區塊鏈吞吐量的技術和4類擴展區塊鏈功能的技術.Xie 等學者[11]給出了目前區塊鏈吞吐量、存儲以及網絡這3 方面所面臨的挑戰,并介紹了一些解決辦法.Zhang 團隊[25]提出了一種低開銷的區塊鏈存儲架構,架構包含3 種機制,分別是將原始數據轉換為關鍵詞的語義信息模板機制、將區塊鏈賬本劃分為多個切片的滯后數據切片機制以及將低價值數據存儲到中央數據庫的歷史數據歸檔機制.Wang 團隊[26]建立了關于空間占用率和平均搜索時間之間的數學模式,并設計了一個數據分配策略,以實現在區塊鏈網絡中節約存儲空間.現有文獻一類是應對區塊鏈存儲可擴展性問題,提出了相應的解決方案;另一類則是對區塊鏈可擴展性的綜述,雖然歸納得較為完整,但更偏重性能、網絡、吞吐量等方面的可擴展性.兩者都沒有對區塊鏈的存儲可擴展性問題進行詳細、系統的分析,沒有體現出在解決存儲可擴展性問題時,數據存儲方式、節點間的相互關系等角度的差異分析.本文首先介紹區塊鏈所面臨的存儲可擴展性問題和區塊鏈的存儲模型,然后系統性地對鏈上存儲(on-chain storage)和鏈下[27]存儲(offchain storage)的基本原理、現存問題進行了分析(如圖2 所示),并對未來的發展加以展望,希望能給當前及未來的相關研究工作提供一定的參考與幫助.

Fig.2 Solutions to improve the storage scalability of blockchain圖2 提高區塊鏈存儲可擴展性方法分類

本文第1 節概述區塊鏈技術和區塊鏈的存儲模型.第2 節和第3 節分別綜述目前提升區塊鏈存儲可擴展性的兩大類解決方案——鏈下存儲和鏈上存儲.第4 節指出當前解決方案所面臨的問題,并給出未來可能的研究方向.

1 區塊鏈概述和存儲模型

1.1 區塊鏈概述

區塊鏈是一種結合分布式共識、加密、時間戳以及經濟激勵等方法,在一個完全無信任的環境下,實現去中心化的點對點交易、協調與協作的技術[7].區塊鏈技術有許多優點,例如去中心化、安全性、匿名性、透明性以及自動化等.去中心化的特性解決了在傳統中心化場景下成本高昂、效率低下、安全性不可靠等問題[28].區塊鏈將前一塊的hash 值添加至后一區塊的區塊頭中,從而實現鏈式結構.當經過6 個區塊確認后,這筆交易幾乎沒有被破解的可能性.通過使用匿名地址并將現實世界地址或標識隱藏,區塊鏈實現了匿名的特性.在中本聰設計的區塊鏈中,任何人都可以查詢區塊鏈世界中的每一筆交易信息,從而實現了透明性.區塊鏈技術可以提供靈活的編程特性,支持用戶創建可在區塊鏈上自動運行的高級程序,包括智能合約、加密貨幣及去中心化應用(DApp).通過共識算法[29],區塊鏈中的節點們確保了數據的一致性.

區塊鏈根據其應用場景或開放程度[30]可分為 3 種:公有鏈(public blockchain)、聯盟鏈(consortium blockchian)和私有鏈(private blockchain).三者的差異主要體現在網絡結構(是否完全去中心化)、共識機制、激勵機制等方面.根據不同場景下的信任構建方式[31],區塊鏈可分為“非許可鏈(permissionless blockchain)”和“許可鏈(permissioned blockchain)”.非許可鏈又稱為公有鏈,是一種完全開放的區塊鏈,彼此間不需要信任;許可鏈可分為聯盟鏈和私有鏈,彼此間需要通過一定的方式建立信任關系,具有非完全去中心化的特點.

1.2 區塊鏈存儲模型

在區塊鏈系統中,節點作為完全節點存儲完整的區塊鏈數據,能夠有效地保證區塊鏈的數據安全[32],即,通過高冗余存儲機制保證區塊鏈的數據安全.但是,對于具有高冗余存儲特點的任何類型的區塊鏈,現在或未來都將有可能遇到存儲可擴展性問題.本節將通過結合典型的采用高冗余存儲機制的比特幣模型來介紹區塊鏈存儲的基本模型和關鍵技術,區塊鏈的存儲模型如圖3 所示.區塊鏈存儲模型可抽象為兩層,分別是數據層和網絡共識層[33].區塊鏈網絡本質上是一個P2P 網絡[34],節點地位相同.區塊在礦工節點計算出正確的nonce值后,由礦工節點廣播至整個區塊鏈網絡,其余節點收到區塊后驗證,通過后將新區塊鏈接至自己存儲的區塊鏈之后.

Fig.3 Storage model of blockchain圖3 區塊鏈存儲模型

(1)數據層

一個完整的區塊由區塊頭和區塊體構成.區塊頭中包含版本號、前一區塊的哈希值;當前區塊的難度、當前區塊經過PoW 解出的隨機值Nonce;當前區塊的時間戳以及當前區塊所有交易的Merkle 根.區塊體中包含當前區塊內的交易數量以及所有經過驗證后的交易.區塊結構如圖4 所示.

Fig.4 Structure of blocks圖4 區塊結構

鏈式結構是區塊鏈數據結構的核心.當新區塊被生成后,礦工將其添加至區塊鏈的尾端.區塊間依次鏈節,從而形成完整的區塊鏈數據.當需要訪問任意數據時,都可以通過鏈式結構依次向前溯源.Merkle 根是連接區塊頭和區塊體的重要組件.Merkle 根可以快速歸納和檢查區塊中交易的存在性和區塊的完整性.首先,將區塊中所有交易進行分組哈希;然后,將計算出的哈希值插入到Merkle 樹中;接著,對這些哈希值再次分組哈希.如此遞歸,直至最后生成Merkle 根并保存至區塊頭中.時間戳表明當前區塊的生成時間,因此,區塊鏈中的所有區塊依照時間順序排列.時間戳可作為區塊存在的證明,提高了區塊鏈的不可偽造性和不可篡改性,進而有利于區塊鏈應用到公證、存證等領域.哈希函數具有單向性、易計算性以及抗碰撞性等良好的性質.此外,數據經過哈希函數計算后產生定長的哈希值.這些特性使得哈希函數非常適合應用至區塊鏈中.加密技術,特別是非對稱加密,用于保護區塊鏈數據的安全性.

(2)網絡共識層

網絡共識層包括區塊鏈網絡的組成方式、消息傳播機制、數據驗證機制和共識機制.比特幣等公有鏈網絡中的節點具有分布式以及可自由進出等特點,因此采用P2P 網絡構成區塊鏈網絡.P2P 網絡中每個節點地位相等,每個節點的功能完全一樣,并且不存在任何中心化的機構管理網絡.消息傳播機制是指當新區塊被生成后,將被生成它的礦工廣播至區塊鏈網絡中的其他節點處驗證.數據驗證是指任意節點任意時刻都監聽區塊鏈網絡中廣播的交易和新區塊.節點在接收到其他節點廣播來的交易后,驗證其有效性:若交易有效,則將其加入用以存儲尚未添加至區塊的有效交易的交易池中;若交易無效,則將其刪除.共識機制是存儲模型中網絡共識層的核心,它可以使得區塊鏈網絡中的節點高效地達成共識并保持區塊鏈的一致性.在比特幣網絡中,節點們通過比拼算力,以解決一個計算困難但驗證簡單的數學問題,最先解答出該問題的節點擁有記賬權,并可獲得一定的經濟獎勵.

2 鏈下存儲

鏈下存儲是一種將區塊體中數據內容從原區塊體轉移到鏈下存儲系統,區塊體中僅存儲指向這些數據的“指針”和其他非數據信息,以解決區塊鏈存儲可擴展性問題的方法.當需要存儲完整數據時,將原始數據保存至非區塊鏈系統中,同時,按照一定規則生成該數據的唯一標識,并返回給區塊鏈系統;當需要訪問完整數據時,通過數據的唯一標識在非區塊鏈存儲系統中尋找原始數據,如圖5 所示.

Fig.5 Off-chain storage圖5 鏈下存儲

定義區塊為B,區塊頭為H,區塊體為Body,區塊體中的數據為D,P為指向鏈下存儲系統的“指針”,鏈下存儲系統為OffChainSS,則有:

? 基于DHT 的鏈下存儲

分布式哈希表(distributed hash table,簡稱DHT)是一種分布式存儲方法[35].DHT 在不需要中心服務器的情況下,每個節點負責一個小范圍內的路由,同時存儲一小部分數據,從而實現DHT 網絡的尋址和存儲.Zyskind 等學者[36]改變了傳統區塊鏈網絡(例如比特幣)存儲所有交易的存儲模式,將數據與數據引用進行分離式存儲,設計了一種使用DHT 的鏈下存儲模式,其中,DHT 由Kademlia[37]實現,如圖6 所示.原始數據的引用(即原始數據經SHA-256 計算后的散列值)保存在區塊鏈中,而原始數據則保存在鏈下的DHT 中,如圖6 所示.DHT 由與區塊鏈網絡無關的節點維護,這些節點履行經區塊鏈網絡批準的讀寫操作.數據在DHT 網絡中的節點位置足夠隨機,并且保持一定的重復率,從而確保了高效的可用率.

據美國高德納公司之前的估計,到2020 年,世界上有約200 億個設備互聯到物聯網中.這些設備數量巨大,給數據的安全存儲帶來了挑戰.為了有效地存儲大規模的物聯網數據,Li 等學者[38]提出了一種適用于大規模物聯網數據的存儲與保護方案,如圖7 所示.該方案利用邊緣計算技術克服了物聯網設備計算能力不足的問題,并且將數據轉發到鏈下的DHT 存儲系統中.當實體需要訪問數據時,在區塊鏈中廣播已添加由無證書密碼體制[39]生成的公鑰的數據請求,并由區塊鏈的礦工節點負責對實體的認證工作.

Fig.6 Overview of the decentralized platform圖6 平臺結構示意圖

Fig.7 Structure of data storage scheme with blockchain圖7 基于區塊鏈和邊緣計算的物聯網數據的存儲方案

? 基于IPFS 的鏈下存儲

星際文件系統(inter planetary file system,簡稱IFPS)是一種旨在將所有計算設備與相同文件系統連接起來的點對點分布式文件系統[40].IPFS 是內容尋址的,即內容本身決定了內容的位置[41].文件存儲到IPFS 后,將會得到一個IPFS hash.IPFS hash 既可以作為訪問文件的索引,又可以檢驗文件內容是否被篡改.基于IPFS 的這一特性,IPFS 作為區塊鏈的存儲方案(即區塊中只保存IPFS hash)是目前鏈下存儲中使用較多的一種方案.

Zheng 等學者[42]設計了一種基于IPFS 的區塊鏈存儲模型,礦工檢查待驗證的交易是否有效:如果有效,則將其存入IPFS 中,并將IPFS 返回的哈希加入至交易池.當新區塊產生后,其他節點驗證新區塊:如果新區塊中的交易哈希與本地交易池中的交易哈希相同,則代表這些節點同樣驗證過這筆交易;如果本地交易池中沒有,則通過哈希從IPFS 中下載并確認.Ali 等學者[43]針對物聯網數據隱私問題提出了一種基于區塊鏈和IPFS 的“模塊化聯盟架構”,既解決了傳統區塊鏈網絡無法存儲海量數據的缺點,又消除了IoT 數據的中心化管理模式.Desema[44]是一個基于Ethereum 和IPFS 的分布式服務市場系統.在Desema 中,服務的元數據和大型數據都存儲在IPFS中,而區塊鏈中僅存儲這些數據的散列值.Xu 團隊[45]提出了一種基于Ethereum 和IPFS 的社交媒體應用,其中,Ethereum 用于保存用戶數據,IPFS 用于保存大型文件數據.這既保證了用戶數據的完整性和真實性,又解決了文件存儲的冗余.以太坊創建智能合約時,需要將智能合約代碼保存至以太坊中.這意味著老舊的或者不再使用的智能合約都保存在以太坊中,從而極大地增加了創建智能合約時的存儲消耗.Norvill 等學者[46]在創建智能合約時,把智能合約源碼存儲到IPFS 中,從而顯著地減少了這類存儲消耗.

? 基于DHT 和IPFS 的鏈下存儲

PingER(ping end-to-end reporting)是一個由SLAC 國家加速器實驗室美國開發和管理的全球端到端互聯網性能測量框架[47].PingER 由遍布全球20 個國家的50 個MA(monitoring agent)組成.每個MA 每天將ping 統計信息存儲到本地MA 上,然后SLAC 再將每個MA 的數據歸檔至中心服務器.為了防止未來SLAC 支持的消失,文獻[48]提出了一種基于區塊鏈和DHT 的去中心化的數據存儲和訪問框架.MA 的身份由客戶端轉變為節點,因此,MA 的作用不再僅限于收集數據,而是成為數據存儲、處理的節點.區塊鏈中存儲數據文件的元數據信息以管理身份和訪問控制,數據文件的引用存儲在鏈下的DHT 中,而數據文件本身則存儲在IPFS 中,如圖8 所示.

Fig.8 Off-chain storage pattern using DHT and IPFS圖8 DHT 與IPFS 共同作為鏈下存儲

? 基于云的鏈下存儲

Ali[49]提出了一種方法,通過把實際數據存儲到云端,數據的散列值保存在區塊鏈中,從而解決區塊鏈的存儲擴展性問題.Chameleon[50]是一個動態適應、可擴展的私有鏈架構.Chameleon 架構由控制和認證層、云存儲層、共識和處理層以及訪問層組成.與文獻[49]不同,Chameleon 不是將所有的數據都存儲在云上,而是將數據的散列值存儲在區塊鏈中.而Chameleon 認為:在一些場景下,數據與之前的數據幾乎是沒有關聯的.因此,它將最近一段時期(一天或者一周)的數據存儲在區塊鏈中,以前的數據存儲到云上.存儲在云上的以前的數據中,最新的一個區塊的散列值將被保存至區塊鏈中,從而實現數據的一致性(見表1).

Table 1 Comparison of off-chain storage patterns表1 鏈下存儲對比

在鏈下存儲方式中,區塊頭或重要數據依然保存至區塊鏈賬本中,原始區塊體以及其他數據由鏈下存儲系統負責存儲.新區塊體中可存儲訪問鏈下存儲系統的訪問記錄等信息,而指向鏈下存儲系統的“指針”信息可存儲于新區塊體中,也可存儲于區塊頭中.由比特幣區塊的結構可知:一個區塊所占的大小約為1M,而一個區塊的區塊頭的大小為80byte[1].因此,從存儲效率的角度看,鏈下存儲可以大幅度地減輕區塊存儲的壓力.

從所使用的技術角度來看,現階段鏈下存儲方式主要可分為基于DHT 的鏈下存儲、基于IPFS 的鏈下存儲以及基于云的鏈下存儲.基于DHT 或IPFS 的鏈下存儲與傳統分布式存儲相似,同樣需要考慮存儲冗余的問題,以提高位于鏈下的數據的安全性.但與比特幣網絡中每個節點保存完整賬本的方式不同,這兩種改進的鏈下存儲緩解了區塊鏈網絡中節點的存儲壓力,將一部分數據存儲的工作量轉移到一個與區塊鏈網絡并行的分布式存儲系統中.該系統節點既可以由區塊鏈網絡中的節點,也可以由不在區塊鏈網絡中的節點組成.若鏈下的分布式系統全部由區塊鏈網絡中的節點組成,這樣僅僅減輕了那些在區塊鏈網絡中但不在鏈下分布式存儲系統的節點的存儲壓力.因此,通常的做法是鏈下分布式存儲節點由兩部分構成:一部分是區塊鏈網絡中的節點,另一部分是非區塊鏈網絡中的節點.這種做法緩解了大部分區塊鏈網絡中節點的存儲壓力,由一些具有足夠存儲能力的節點同時負責鏈下的分布式存儲系統.然而,這種做法也并不是完美的:一方面,在需要考慮如何挑選具有足夠存儲能力節點的同時維護鏈下存儲系統,但又要保證這些節點不是惡意節點而控制區塊鏈的數據真實性;另一方面,需要考慮如何確定鏈下分布式存儲系統中的區塊鏈節點和非區塊鏈節點之間的比例,以確保存儲系統的安全.基于云的鏈下存儲將存儲壓力轉移到云,區塊鏈的去中心化屬性將被減弱.基于云的鏈下存儲方案與前兩者的不同在于,區塊鏈節點無法參與到云存儲中.云存儲服務往往都由大型的服務商提供,依賴于中心化機構的服務.此時,區塊鏈僅能驗證數據是否被篡改,而不能保證數據的真實性.另一方面,從經濟角度來看,云存儲所產生的成本由誰承擔,以及如何控制減輕區塊鏈節點存儲壓力所帶來的收益大于云存儲所需要的額外經濟成本,都是需要慎重考慮的.鏈下存儲可以顯著減輕區塊鏈節點的存儲壓力,但需要考慮新的安全問題.

3 鏈上存儲

鏈上存儲,不需要每個節點都存儲完整的區塊鏈賬本,也不依賴于額外的鏈下存儲系統,只需要每個節點根據預先約定的規則存儲對應的部分賬本即可.鏈上存儲與前一節所述鏈下存儲的不同在于:數據仍然存儲在區塊鏈上,而不是非區塊鏈存儲系統中.根據預先約定的規則中節點間的相互關系,鏈上存儲可分為協作式存儲模式和輕節點模式.定義區塊體中的數據為D,Bodyi-1為第i至第j個節點同一區塊的區塊體,其中,j≥i,為原數據根據鏈上存儲規則確定的存儲內容,≤.D那么,鏈上存儲可表達為

3.1 協作式存儲

與比特幣的經典存儲模式相比,鏈上協作式存儲模式不再需要每個節點都保存一份完整的區塊鏈數據備份.節點協作是指若干個不同的節點進行合作,從而使這些節點具有與“全節點”一樣的功能.協作式存儲根據使用技術的不同,合作的方式也有很多種形式,可分為基于編碼的協作式存儲、基于集群的協作式存儲和基于分片的協作式存儲.

? 基于編碼的協作式存儲

Dai 等學者[51]提出了一種基于網絡編碼的分布式存儲框架(network coding-based distributed storage,簡稱NC-DS).網絡編碼是一種將編碼和路由信息交換的技術,可以對接收的多個數據包進行編碼信息融合,從而提高單次傳輸的信息量,進而提升網絡整體性能[52].NC-DS 有兩種實現:一種是碼率確定的NC-DRDS,另一種是碼率非確定的NC-RLDS.

(1)NC-DRDS 機制取代同時輸出數據包的形式,采用順序輸出的形式輸出編碼后的包.將大小為x的區塊(或多個區塊)切分成k個包,對其進行Reed-Solomn 編碼,得到n個編碼包,存放至n個節點中(即一個節點保存至一個包).倘若仍有節點未保存,則繼續將k個數據包編碼成2n個編碼包,存放至2n個節點中.重復上述操作,直至區塊鏈網絡中所有節點均保存了一個編碼包,如圖9 所示.任意k個編碼包都可恢復原始數據包;

(2)而NC-RLDS 機制則采用了一種二進制域隨機偏移編碼,將數據包右移隨機位的比特然后按位的方式組合,同樣以NC-DRDS 的方式分發至區塊鏈網絡中的每個節點.

Fig.9 NC-DRDS圖9 NC-DRDS 示意圖

Perard 等學者[53]基于糾刪碼(erasure code)提出了一種降低節點存儲負擔的LS(low storage)節點.區塊首先被切分成k個片段,再使用偽隨機數生成器生成的系數對原始片段進行線性組合,生成編碼片段并發送至節點.當節點需要恢復區塊時,只需從其他節點下載超過k個編碼片段.對這些編碼片段進行逆線性變換,便可恢復出原始區塊.當有新節點加入區塊鏈網絡中時,首先從全節點或者其他LS 節點處下載完整區塊鏈,然后對每個區塊進行驗證,并生成編碼片段.新節點將完整的區塊刪除,同時保留區塊的哈希和編碼片段.因此,LS 節點在不需要存儲完整區塊鏈的情況下,仍然可以驗證完整區塊鏈.

? 基于集群的協作式存儲

文獻[54]中提出了一種基于DHT 集群的存儲負載均衡方案,DHT 由Chord 協議[55]實現.在該方案中,區塊鏈網絡中的節點劃分成若干個DHT 集群,一個DHT 集群中的若干個節點共同維護一份完整的區塊鏈數據.區塊鏈中的節點通常需要保存兩部分內容,分別是區塊數據和區塊鏈狀態.在該方案中,DHT 集群中的一個節點只需保存完整區塊鏈副本中區塊數據的一部分,而區塊鏈狀態部分則需要區塊鏈網絡中每個節點都存儲.新區塊產生后,根據區塊的散列值映射到Chord 環的對應位置.根據哈希函數的特性來確定DHT 集群內每個節點存儲多少個區塊會滿足均勻分布的要求.在DHT 集群內,如果需要重復存儲R次,則在Chord 環中的節點后面的R個節點同樣存儲1 次.如果一個區塊在DHT 集群內的所有節點都重復存儲,那么此時DHT 集群的節點就像全節點一樣.

Kaneko 等學者[56]設計了一種基于DHT 集群的負載平衡方法,其中,DHT 由Kademlia[37]實現.在這一方法中,區塊鏈中的節點分為兩類:第1 類在純P2P 網絡中挖礦,稱為挖礦節點;另一類在DHT 網絡中驗證新交易和新區塊以及保存區塊鏈數據,成為數據節點.當數據節點產生了一個新交易,則首先廣播至該節點所在的DHT集群中;然后,集群中的其他節點將該交易廣播至其他集群中.所有數據節點對交易進行驗證,如果交易有效,將其廣播至P2P 網絡中,挖礦節點收集交易,并重復該過程直至挖出新區塊.根據新區塊的哈希得到該區塊的ID,與節點ID 進行XOR 運算,得到與區塊ID 距離最近的節點所屬的DHT 集群.挖礦節點將新生成的區塊廣播至該集群,集群的節點對區塊進行驗證,并添加至區塊鏈中.

文獻[57]引入了“共識單元”這一概念,共識單元是指一起工作并維護至少一份完整區塊鏈的一組節點.根據前一個單位時間內的區塊訪問頻率,將需要訪問的區塊優先存儲到共識單元內的節點,并考慮一定的冗余.再將所有在前一個單位時間內未被訪問的區塊分配至相應的節點.至此,共識單元內的存儲空間已全部被使用.當共識單元內有新區塊需要存儲時,需要占用一部分舊區塊的空間.根據最優原則,將新區塊存儲到某個節點上有備份存儲的某個或某些區塊占用的空間.當有新節點加入共識單元時,分配一定的區塊給新節點,從而降低共識單元內的查詢消耗.當共識單元內有節點離開時,若該節點存儲的區塊也存儲在其他節點處,那么只需通知查詢者更新查詢目的地;若該節點存儲的區塊在其他節點處沒有備份,則只需將這些新區塊作為需要存儲的新節點對待即可.

? 基于分片的協作式存儲

分片技術最早被應用于分布式數據庫領域,數據庫被分割成多個部分并存儲到不同的服務器中.在區塊鏈領域中,分片是指節點被分成若干個更小的單元并行地處理交易或維護不相交的區塊鏈賬本,前者稱為交易分片,后者稱為狀態分片.Elastico[58]是第一個基于分片的公有鏈共識協議,Elastico 的思想是交易分片,因此,區塊鏈即使分片后,每個節點仍然需要存儲完整的賬本.

OmniLedger[59]意識到了Elastico 存在的問題,并做出了改進.OmniLedger 由身份鏈和多個分片組成,通過RandHound 協議,將節點自動地分配到不同的分片.為了減輕節點的存儲消耗,OmniLedger 引入了狀態塊的概念.當一個共識時代結束時,分片的領導者將UTxO 存儲在有序的Merkle 樹中,并將Merkle 的根哈希存入狀態塊的頭部.狀態塊經過驗證后,將作為下一個共識時代的創世塊.但是,OmniLedger 采用的是分片定期改組策略,所以存在大量的數據遷移消耗.

SSChain[60]將區塊鏈網絡劃分為根鏈網絡和分片網絡.市場激勵機制會動態地調整根鏈網絡和區塊鏈網絡中的哈希算力,使得哈希算力均勻地分布在不同分片中.節點可以自主選擇加入收益較高的分片.一個節點可以同時屬于根鏈網絡和分片網絡.根鏈網絡負責驗證一段時間內的分片區塊并生成根區塊,同時保存完整的分片區塊和根區塊.SSchain 采用市場激勵機制,因而不需要定期改組分片網絡,避免了數據遷移.為了減輕分片內的存儲負擔,SSChain 將前一時期內的UTxO 保存至有序Merkle 樹中,然后將Merkle 樹的根哈希保存至檢查點的頭部中,檢查點前的區塊便無需再存儲.

不同于前兩種動態劃分分片的方式,Yoo等學者[61]提出了一種基于域的靜態分片區塊鏈模型.該模型將區塊鏈網絡分為區域分片和全局分片,如圖10 所示.區域分片內存在由PoW 決定的委員會,并動態調整.委員會內的節點通過PBFT 驗證交易并生成區塊.全局分片的委員會同樣由PoW 決定,委員會通過PBFT 驗證交易.交易通過驗證后被傳輸到相關的區域分片中.區域分片內的節點負責生成區塊并保存至區域區塊鏈中.

Fig.10 Collaborative storage pattern based on sharding圖10 基于分片的協作式存儲示意圖

為了方便比較和總結3 類協作式存儲的區別,下面對一些概念進行定義.

定義1(區域).區塊鏈網絡可由若干個區域組成,區域之間可以相互交叉.集群、分片等都可視為一個區域.

定義2(靜態區域劃分).對于節點ni,根據節點分配機制,當t=t1時,ni被分配到區域Aj1;當t=t2時,ni被分配到區域Aj2.若?t2≠t1,都有Aj1=Aj2,則稱區域劃分是靜態的;反之,則稱為動態.

定義3(區域定期改組).區域定期改組是指節點ni一旦被分配到區域Aj1內,任意時間后都不會被系統重新分配到區域Aj2,其中,Aj1≠Aj2.

定義4.區域賬本是指僅記錄該區域內交易的區塊鏈賬本,記為BCarea.

定義5.對于區塊Bk,,則稱為區塊Bk的子集,稱為區塊子集的線性組合;對于區塊Bk,稱為區塊的集合.

定義6.當新節點加入區域時,區域內的原節點若需要調整已存儲的數據,則稱該模型具有自動調整性.

定義7(區塊的原子性).若區塊完整地存儲在一個節點中,則稱該存儲方式保留了區塊的原子性;反之,若一個區塊經過切分存儲在不同的節點中,則稱該存儲方式破壞了區塊的原子性.

集群是指一組共同工作的節點,而分片則指將賬本切分成粒度更小的部分.本文中,集群是從節點的角度切分區塊鏈,分片是從賬本的角度切分區塊鏈.因此,本文將集群和分片均看作是區域.基于編碼的協作式存儲模式沒有顯式的區域劃分,但可以將源于同一個數據包的若干個子包所在的節點看作是一個區域,滿足定義1.如果下一個數據包劃分成若干個子包后,這些子包所處的節點集與前一數據包時不同,則可看作為區域定期改組,周期為產生一個新區塊的時間.

表2 從區域劃分思想、劃分形式、定期改組、區域存儲內容、區塊原子性、區域自動調整性、是否有節點存儲完整賬本以及節點存儲大小的角度,詳細地對比了8 種不同的協作式存儲.動態劃分區域有利于防止惡意節點控制某一區域,從而影響整個區塊鏈的網絡性能.定期改組區域能夠提高一定的安全性,但與此同時,也會存在大量的數據遷移工作.對于文獻[54]和文獻[57]中的方案,當有新節點加入區域后,模型會自動地調整曾經存儲在原節點上的數據,重新分配到新節點上.這種自動的調整方式會占用區域內的通信帶寬,增加通信成本.從存儲效率的角度看,對于基于編碼的協作式存儲,編碼時切分的數據子包個數越多,節點所需的存儲空間越小.對于基于動態分片的協作式存儲,區塊鏈分片數越多,節點所需存儲空間越少.這兩種方式所需的存儲空間和比特幣存儲模型所需存儲空間呈線性關系.對于基于集群的協作式存儲,節點所需存儲空間與集群內節點數量相關,集群內節點數量越多,每個節點所需存儲空間越小.對于基于靜態分片的協作式存儲,當進行初始化劃分時,若某一分片規模明顯大于其他分片,則日后同樣也將面臨存儲膨脹的問題.

Table 2 Comparison of collaborative storage patterns表2 協作式存儲比較

3.2 輕節點

3.2.1 SPV 輕節點

在比特幣網絡中,大部分用戶是普通用戶(沒有礦機并且只消費比特幣的用戶).如果這些用戶運行一個完整的比特幣客戶端,那么需要準備大約200G 的空余硬盤.對于比特幣手機錢包來說,存儲完整的比特幣賬本是不現實的,因此便有了適用于運行在小型設備的輕量型節點.

全節點是一種存儲完整賬本、需要同步所有區塊鏈數據、能夠獨立校驗區塊鏈上的所有交易并實時更新區塊鏈的節點.輕節點是一種不需要存儲完整賬本,每當有新區塊出現時,只需要下載區塊頭的節點類型.SPV 協議(simple payment verification protocol)[1]是最早的輕節點協議,該協議指出:不運行全節點也可驗證支付,用戶只需要保存所有的區塊頭即可,如圖11 所示.SPV 輕節點只需從區塊鏈網絡中下載所有區塊的區塊頭.SPV 輕節點由于自身并不存儲區塊鏈中區塊的區塊體,因此不能獨立驗證交易,需依賴于全節點.當需要驗證支付時,向區塊鏈網絡發出請求,進而查找用于支付的那筆交易所在的區塊,再根據Merkle 根哈希驗證這筆交易是否有效.

Fig.11 SPV scheme of light node圖11 SPV 輕節點協議

第3.2 節所述的輕節點模式與第3.1 節所述的協作式存儲模式的區別與聯系可見表3.

Table 3 Difference and relation between light node mode and collaborative storage mode表3 輕節點模式與協作式存儲模式的區別

3.2.2 改進型輕節點

SPV 輕節點需要存儲每個區塊的區塊頭,意味著節點的本地存儲上限仍與區塊鏈中區塊的數量成正比例關系;另一方面,輕節點需要信賴全節點驗證支付或交易,減弱了區塊鏈無需信賴第三方的特質.因此,很多學者從不同的角度對傳統的輕節點作了改進.

Xu 等學者[62]提出了一種公有鏈客戶端協議,稱為EPBC.這種客戶端適用于物聯網設備或手機等存儲資源有限的設備.與SPV 協議不同,它不用存儲所有區塊的區塊頭,而只需存儲一個大小定長的數據,并且與區塊鏈賬本的大小無關.EPBC 在每個區塊的區塊頭中添加了一個對當前區塊鏈的總結S,但無需參與挖礦的過程.S的生成過程與RSA 類似,需要選取兩個質數p和q,生成N.在創世區塊的區塊頭中,添加N和一個隨機數g.當輕節點需要驗證時,全節點生成一個元組返回給輕節點.輕節點只需驗證和一個關于Sn的等式即可.當加入區塊鏈時,輕節點從區塊鏈網絡中選取u個節點,并獲取S(u).輕節點隨機選取一些區塊,并與這些節點交互以驗證S(u)的有效性.最后選取由最多節點返回的S(u)作為區塊鏈總結.

文獻[63]提出了一種存儲壓縮協議SCC(storage compression consensus).SCC 是一種基于PBFT 的改進協議.當物聯網節點申請加入區塊鏈時,首先要通知自己的存儲容量和存儲上限系數,以便其他節點驗證其存儲能力.存儲能力最小的節點可作為一輪SCC 中的領導者,因其執行壓縮的過程表明,它忠誠地維護和緊跟區塊鏈系統.在SCC 中,每輪除了需要處理正常生成的最新區塊外,還需要通過Merkle 樹的方法生成一個由區塊鏈中所有區塊組成的壓縮塊.壓縮塊中存儲最新區塊的hash,最新區塊中存儲壓縮塊的hash,如圖12 所示.當這兩個區塊通過驗證后,每個節點根據其自身情況進行存儲.存儲資源受限的輕節點存儲最新區塊和壓縮塊,并將之前的區塊全部移除.每輪共識結束后,執行相同的過程.

Fig.12 Compression block and next block圖12 壓縮塊和最新區塊

傳統輕節點依賴于區塊鏈網絡中的全節點,同時,這也是輕節點的局限之一.Frey 團隊[64]提出了一種模型,這種模型中的輕節點在驗證交易時無需依賴于全節點.模型將節點分為5 類角色,分別是挖礦節點、全節點、安全輕節點、傳統輕節點和DHT 節點.一個物理節點可以同時是多種角色.為了實現安全輕節點不存儲完整賬本的目的,區塊結構進行了改進.在區塊頭中額外添加兩個值,HUTxO和Hindex,如圖13 所示.根據輸出地址的前k位,將UTxO 集分割成2k個分片,對它們進行哈希運算,然后再對這些哈希值進行一次哈希,得到HUTxO.對由所有區塊的hash 構成的數組進行哈希運算得到Hindex.區塊鏈中的節點以及與區塊鏈無關的節點共同組成DHT.DHT保存UTxO集的分片和最近h個完整區塊.在安全輕節點加入區塊鏈網絡時,只需下載最近6個區塊、UTxO分片哈希列表和區塊哈希列表.當安全輕節點驗證一筆新交易時,首先從DHT 中找到對應的UTxO 分片.若該UTxO 分片hash 與先前下載的hash 相同,則該交易是有效的.這種方式將原先依賴于全節點的數據轉移至若干節點共同維護的DHT 中.對于存儲資源充足的全節點,存儲負擔僅增加了一點點;但對于對于存儲資源受限的輕節點來說,減輕了存儲負擔并不再依賴于全節點.

Fig.13 Block index hash and the UTxO hash are added to the block header圖13 添加HUTxO 和Hindex 的區塊結構

Palai 團隊[65]提出一種稱為區塊總結的方法,該方法既可以獲得比SPV 更多的權限,又不需要像全節點那樣保存完整賬本.區塊總結方法將l個原始區塊總結成一個新區塊,稱為總結區塊.總結區塊中交易的輸入與其所包含的原始塊中的交易輸入一樣,輸入同理.如果一筆交易的輸出是另外一筆交易的輸出,那么將根據凈效果合并這些交易.總結區塊也會包括原始區塊的哈希.直接總結區塊同樣會造成區塊鏈賬本大小問題.Palai 使用遞歸的方式對區塊序列進行總結,即對總結區塊進行總結.該方法引入了總結深度的概念,原始區塊的總結深度為0,原始區塊直接總結區塊的總結深度為1,以此類推.一個區塊長度為n的區塊鏈經過區塊遞歸總結后,將變成先是o個原始區塊,再是m個總結深度為1 的總結區塊,之后再是m個總結深度為2 的總結區塊,以此類推.經過區塊總結后的區塊鏈如圖14 所示.Nadiya[66]在Palai 團隊研究的基礎上,使用Deflate 壓縮算法對總結區塊進行數據壓縮,進一步減小了區塊鏈所占用的存儲空間.

Fig.14 Block summarization圖14 區塊總結示意圖

表4 從輕節點是否依賴全節點以及輕節點存儲內容的角度,對比了6 種典型的輕節點協議或模型.根據是否依賴全節點,可將輕節點協議或模型分為兩種:一種是依賴于全節點,另一種是不依賴于全節點.與比特幣原始存儲模型不同的是,SVP 輕節點只需要存儲區塊鏈賬本中的區塊頭,因此,當需要區塊體時,向全節點請求.同樣地,EPBC 輕節點僅存儲大小定長的區塊總結值,當需要完整區塊時,即請求全節點,并通過區塊總結值判斷全節點返回的區塊是否有效.SCC 通過對最新區塊前的區塊鏈按照Merkle 樹的方式進行壓縮,以與完整的區塊鏈賬本保持一致性.當全節點不再有空余空間存儲完整區塊鏈賬本時,可以簡單地去除舊區塊,僅存儲壓縮區塊和最新區塊.另一類不依賴于全節點的輕節點模型,對區塊進行總結或者壓縮,使這些原始區塊合并或組合成一個新區塊,新區塊遠小于原始區塊集合的大小.對于使用UTxO 模型而不是余額模型的區塊鏈來講,一筆交易的輸出有可能是另一筆交易的輸入,凈變化是沒有區別的.所謂總結是指,將原始區塊集合中交易集進行合并.但這種方式具有局限性,只適合區塊體中僅保存金額、數字變化的場景.對于存證、溯源等區塊體中存儲非數字型數據的領域,區塊總結的方式是無法使用的.

Table 4 Comparison of light node patterns表4 輕節點對比

4 總結與展望

本文從區塊鏈賬本存儲位置的角度,綜述了鏈下存儲和鏈上存儲兩種用于提高存儲可擴展性方法的研究進展.本節將指出兩大類方法目前所面臨的挑戰,并為未來的研究工作提供一些可能的方向.

4.1 當前解決方案所面臨的挑戰

(1)應用場景

區塊鏈可分為公有鏈和非公有鏈,后者包括聯盟鏈和私有鏈.公有鏈是完全去中心化的,任何節點都可以隨時加入或退出區塊鏈網絡.聯盟鏈是一種部分去中心化的區塊鏈,它由聯盟或企業構成組織負責維護.而私有鏈則是一種中心化的區塊鏈,適合特定的中心化機構控制.

在鏈下存儲的模式中,數據轉移至第三方可信賴的存儲系統,或由公有鏈節點負責維護鏈下存儲系統存儲.后者易出現提供額外存儲空間的超級節點,兩者都會破壞公有鏈的去中心化特質.在非公有鏈場景下,節點的寫入受中心化的機構或聯盟控制,并且數據規模較小.此時,鏈下的存儲系統可由負責非公有鏈的中心化機構或聯盟以及非公有鏈的節點來維護.

鏈上存儲更適合節點眾多的公有鏈、聯盟鏈場景.在協作式存儲模式中,節點間的關系不是單向依賴的,而是相互依賴、相互合作.輕節點模式適合存儲容量小的智能設備,如手機、PC 以及傳感器等.許多學者也提出了不依賴于全節點的輕節點方案,一定程度上提高了輕節點的獨立性和安全性,但輕節點仍無法實現全節點的所有功能.利用區塊總結方式的輕節點可以節省大量空間,但同時在應用場景上也存在一定的局限性,這些輕節點僅適合于區塊體存儲貨幣轉移的場景,而無法應用到存證、溯源等領域.

(2)安全性

區塊鏈迄今為止面臨的最大挑戰便是安全問題,即便是完全去中心化的比特幣,對于鏈下存儲模式,如何確保鏈下的存儲系統安全、可靠也仍是一個難點.一種解決方案是維護鏈下存儲系統的都是區塊鏈節點,另一種方案是維護鏈下存儲系統的節點一部分是區塊鏈節點一部分是非區塊鏈節點.前者增加了區塊鏈節點的負擔,后者犧牲了公有鏈的去中心化特性.區塊鏈與鏈下存儲系統之間的通信安全同樣需要考慮.

對于協作式存儲,如何確保區域中即使存在惡意節點,但不會影響區域內節點的協作或區域間的協作,是設計協作式存儲方案首先需要考慮的問題.協作式存儲需要考慮一定的數據冗余以確保數據的安全.而輕節點與全節點的關系是輕節點安全性的根本,負責與輕節點通信的全節點如果是惡意節點,那么至少在一個時期內,該輕節點都被惡意節點所欺騙.因此,輕節點應該要么依賴盡可能多的全節點,要么應該依賴區塊鏈整體網絡.

無論是鏈下存儲還是鏈上存儲,原先完整的區塊鏈賬本都會被拆分.那么當節點需要完整賬本時,從鏈下存儲系統或其他節點處獲取自身不存儲的賬本部分后,賬本將會被整合.整合后的賬本與區塊鏈網絡中所存儲的賬本必須保持完全一致.因此,必須考慮一定的冗余策略和補救策略以保證區塊鏈的一致性在鏈下存儲和鏈上存儲不受影響.

(3)效率

在鏈下存儲方式中,區塊鏈僅需存儲區塊頭和一些重要數據,而區塊體或一些普通數據則存儲在鏈下存儲系統中.區塊鏈存儲負擔明顯減輕.在許多協作式存儲中,節點所需的存儲空間往往與區域內節點數量無關,因此與比特幣存儲模型所需空間近似呈線性關系.當區塊不斷地增加至區塊鏈的尾端時,這些協作式存儲方案慢慢地同樣會遇到存儲瓶頸.輕節點通常存儲區塊頭或經過總結后的區塊鏈賬本.研究者需要考慮如何使得改進后的存儲模型所需空間日后不會面臨同樣的存儲問題.

鏈下存儲和鏈上存儲都在一定程度上增加了通信成本,即以時間換取空間.在鏈下存儲模式中,節點需要花費額外的通信成本從鏈下的存儲系統獲取區塊鏈數據.對于鏈上存儲模式,當節點需要完整的區塊鏈賬本時,則要向區塊鏈網絡中的節點或區域內的節點請求自己沒有存儲的賬本部分.因此,研究者們需要考慮區域的劃分與時間成本和存儲成本之間的關系.對于輕節點而言,當需要完整數據時,無法從本地找到對應區塊,而需要請求區塊鏈網絡中的全節點或整個區塊鏈網絡.在解決存儲擴展性問題的同時,需要考慮與通信成本之間的關系,從而做到在可承受范圍內,增加一定的通信成本以獲得較小的存儲壓力.

4.2 未來研究方向

第4.1 節提到了區塊鏈存儲可擴展性技術主要面臨的一些問題,在這些問題的基礎上,本文給出了幾個未來的研究方向.

(1)研究可節省存儲空間的共識機制

目前,大部分提高區塊鏈存儲可擴展性的解決方案都是對經過共識后產生的新區塊進行處理,以達到減輕節點存儲壓力的目的.這些解決方案是從區塊鏈基礎架構模型的網絡層進行改進,不涉及改變區塊鏈的共識機制.未來可從區塊鏈基礎架構模型的共識層入手,研究可節省存儲空間的共識機制;區塊鏈節點在達成共識的過程中同時考慮如何協作存儲區塊數據,以解決區塊鏈存儲日益膨脹的問題.此外,在公有鏈場景中,存在經濟激勵手段鼓勵節點參與共識.因此在可節省存儲空間的共識機制中,需要在共識機制中添加合理的經濟激勵措施,獎勵付出更多存儲資源的節點.

(2)研究與初始節點數量相關聯的動態區域劃分方法

鏈上協作式存儲模式通過將區塊鏈網絡劃分成若干個區域,區域內的節點協作地維護區塊鏈賬本.目前的鏈上協作式存儲模式中的區域劃分方法可分為動態和靜態兩種方式.然而無論是動態劃分還是靜態劃分,均與初始時節點數量無關.這就導致在區域劃分前,區塊鏈網絡中的節點即使存在數量的差異,劃分方法仍然相同,進而可能導致區域節點間的通信成本增加.未來可從區塊鏈節點數量與通信成本和存儲成本之間的關系來加以思考,建立相應的數學模型,實現訪問本地和區域內其他節點的區塊鏈數據所花費的時間之和最優,進而實現通信成本和存儲成本的最優化.

(3)研究存儲定長數據的輕節點模式

隨著物聯網技術的不斷發展,未來物聯網與區塊鏈的整合非常重要.鏈上協作式存儲模式會增加物聯網節點間的相互依賴,因此,輕節點模式更適合物聯網中的輕量級設備.按照當前主流的輕節點協議,這些輕節點所存儲的數據大小與完整區塊鏈賬本大小之間大致呈線性關系.以這種存儲方式,輕節點未來依然會遇到存儲瓶頸.因此,研究存儲定長數據的輕節點模型是一個值得研究的方向.

(4)研究不同存儲模式下的安全機制

目前提高區塊鏈可擴展性的兩類解決方案——鏈下存儲和鏈上存儲,仍存在著一定的安全性問題,包括鏈下存儲系統與區塊鏈間的交互安全問題、鏈上協作式中區域內的惡意節點問題、輕節點與全節點間的信任問題以及區塊拆分后重構時的安全問題等.屬性加密、同態加密以及零知識證明等技術為提高鏈下存儲和鏈上存儲的安全性提供了方向.未來可研究基于屬性加密、同態加密或零知識證明等技術的安全機制,進而提高鏈下存儲及鏈上存儲模式的整體安全性.

5 結束語

區塊鏈存儲的可擴展性已成為制約區塊鏈應用落地的一大問題.巨大的存儲壓力,一方面使得已有的節點可能無法繼續參與區塊鏈;另一方面,使得存儲能力差的輕型設備無法加入區塊鏈網絡.因此,研究提高區塊鏈存儲可擴展性的技術具有非常重要的意義.本文首先介紹了區塊鏈所面臨的存儲可擴展性問題以及區塊鏈的存儲模型,其次分析了兩大類提高存儲可擴展性技術的研究進展,最后對提高存儲可擴展性技術所面臨的問題和研究方向給出了我們的思考和總結.

主站蜘蛛池模板: a级毛片免费网站| h视频在线播放| 亚洲视频免费在线看| 日韩欧美国产综合| 欧美精品啪啪一区二区三区| 青青草综合网| 国产成人高清精品免费5388| 免费人成网站在线高清| 免费人欧美成又黄又爽的视频| 欧美中文一区| 国产白浆视频| 国产精品亚洲精品爽爽| 免费亚洲成人| 欧美日韩精品一区二区在线线| www.亚洲天堂| 91在线精品麻豆欧美在线| 亚洲欧洲国产成人综合不卡| 久久久久国产一级毛片高清板| 成人综合网址| 99热最新网址| 欧美啪啪网| 国产在线第二页| 久久香蕉国产线| 国产一线在线| 夜夜操天天摸| 91在线激情在线观看| 久久国产精品国产自线拍| 亚洲成aⅴ人片在线影院八| 四虎亚洲国产成人久久精品| 亚洲色婷婷一区二区| 国产精品自在在线午夜| 国产成人高清精品免费5388| 日韩AV无码免费一二三区 | 欧美成人午夜视频免看| 在线综合亚洲欧美网站| 国产一区二区三区夜色| 国产精品人成在线播放| 成人精品在线观看| 黄片一区二区三区| 国内黄色精品| 国产v精品成人免费视频71pao | 亚洲成A人V欧美综合天堂| 日本午夜在线视频| 亚洲清纯自偷自拍另类专区| 亚洲第一极品精品无码| 成人在线观看不卡| 国产精品女人呻吟在线观看| 日韩免费中文字幕| 婷婷伊人久久| 99无码熟妇丰满人妻啪啪| 国产精品久久久久久久久| 亚洲精品免费网站| 四虎永久在线精品影院| 看你懂的巨臀中文字幕一区二区| 黄色a一级视频| 国产精品一区二区在线播放| 特级毛片8级毛片免费观看| 成人欧美日韩| 色婷婷狠狠干| 国产精品美人久久久久久AV| 久久五月视频| 成人永久免费A∨一级在线播放| 天天干天天色综合网| 国产视频a| 日韩欧美成人高清在线观看| 91精品国产福利| 亚洲精品制服丝袜二区| 欧美成人亚洲综合精品欧美激情| 高潮毛片无遮挡高清视频播放| 第九色区aⅴ天堂久久香| 97久久免费视频| 成人一级免费视频| 91成人免费观看| 亚洲Av综合日韩精品久久久| 亚洲日韩AV无码精品| 国产一在线| 亚洲日韩精品伊甸| 一区二区偷拍美女撒尿视频| AV在线天堂进入| 国产午夜小视频| 成人a免费α片在线视频网站| 天堂网亚洲系列亚洲系列|