摘要:利用閑置的計算機的設(shè)備及帶寬構(gòu)建成一個基于共享模式的存儲系統(tǒng),是一個有價值的研究方向,基于該模式構(gòu)建的分布式云存儲系統(tǒng)具有利用空閑資源,提高社會資源利用率的特點。在該方向上擁有較為成熟的體系和解決方案的是IPFS(InterPlanetary File System,星際文件系統(tǒng))。IPFS是一個去中心化的分布式文件系統(tǒng),其是一個針對于全球范圍的結(jié)合區(qū)塊鏈技術(shù)的共享模式的分布式存儲系統(tǒng)。而其系統(tǒng)非常龐大和復(fù)雜?;谌祟惿畹牧?xí)慣,往往主要在某一片區(qū)域內(nèi)活動,多數(shù)情況僅需要特定一個區(qū)域內(nèi)的服務(wù)。根據(jù)中國架設(shè)的互聯(lián)網(wǎng)的結(jié)構(gòu),在同一片區(qū)域內(nèi)的節(jié)點之間連通性相對較好,延遲相對較低,且容易達到較高的網(wǎng)速。因此本研究將會設(shè)計并實現(xiàn)一個基于區(qū)域共享的云存儲系統(tǒng),該系統(tǒng)相比IPFS,具備更好更高效的區(qū)域服務(wù)性能和更低的區(qū)域服務(wù)成本,以及更輕量級、對硬件的要求更低的系統(tǒng)。
關(guān)鍵詞:云存儲;區(qū)塊鏈;共享模式;去中心化;IPFS
中圖分類號:TP311 ? ? ?文獻標(biāo)識碼:A
文章編號:1009-3044(2021)31-0020-06
Design and Implementation of a Cloud Storage System Based on Regional Sharing
LIU Feng
(System R&D Department,PPLabs Networking Technology (Shanghai) Ltd., Shanghai 200120, China)
Abstract: Using idle computer equipment and bandwidth to build a storage system based on a shared mode is a valuable research direction. A distributed cloud storage system based on this mode has the characteristics of using idle resources to improve the utilization of social resources. The IPFS (InterPlanetary File System, InterPlanetary File System) project has a more mature system and solution in this direction. IPFS is a decentralized distributed file system, and it is a distributed storage system for a global sharing model combined with blockchain technology. The system is very large and complex. Based on the habits of human life, activities tend to be mainly in a certain area, and most of the time, only services in a specific area are needed. According to the structure of the Internet set up in China, the connectivity between nodes in the same area is relatively good, the delay is relatively low, and it is easy to achieve higher network speeds. Therefore, this research will design and implement a cloud storage system based on regional sharing. Compared with IPFS, this system has better and more efficient regional service performance, lower regional service cost. And which lighter the system, lower the requirements.
Key words: cloud storage; blockchain; sharing mode; decentralization; IPFS
1 背景
早在1978年,美國的學(xué)者就提出了共享經(jīng)濟的理念,自2010年以來,共享的模式從原本的小規(guī)?;蛘呤菬o償模式逐漸演變出了一種新的模式,這種模式以獲得一定收益為目的,通過大型的中介平臺共享自己的閑置資源。例如 Uber、Airbnb 等平臺的運作模式。而閑置的資源并不局限于車輛、房屋等。閑置的計算機設(shè)備,有剩余流量的寬帶線路,閑置的存儲設(shè)備等,均是共享模式的新的角度。IPFS (星際文件系統(tǒng))是由 Juan Benet 設(shè)計的,并于2014年開始由Protocol Labs 在開源社區(qū)的幫助下發(fā)展的一個網(wǎng)絡(luò)傳輸協(xié)議,其旨在創(chuàng)建持久且分布式存儲和共享文件。因為該項目是一個P2P、去中心化,基于密碼學(xué)技術(shù)的文件系統(tǒng),所以其具備了安全性、隱私和可靠性方面的優(yōu)點[1]。
而其為了滿足全網(wǎng)的服務(wù)能力,其對于每一個文件,根據(jù)文件的 CID 進行檢索,檢索范圍是整個系統(tǒng),而其服務(wù)范圍會跨越國家,當(dāng) Miner(擁有閑置存儲和帶寬資源希望獲得收益的人,也稱礦工)和 User (用戶)不在相近的區(qū)域內(nèi),不僅兩個節(jié)點直接通信的質(zhì)量不好,且其他模塊(verifer驗證者,indexer檢索者)也需要進行位于不同區(qū)域的通信[2-3]。從而不僅會對網(wǎng)絡(luò)的服務(wù)質(zhì)量有影響,且會對于提高其他模塊的復(fù)雜程度,從而提高了對硬件的要求。由于所有的礦工和所有的用戶均在同一個系統(tǒng)內(nèi),因此整個系統(tǒng)負(fù)載的每秒交易量較大。容易出現(xiàn)交易擁堵的情況,其存儲市場的交易是區(qū)塊鏈的鏈上交易,因此盡管IPFS已經(jīng)采取了相應(yīng)的手段減小了 gas 費用(交易被記賬、打包成區(qū)塊的費用),但該費用仍然較為高昂。因此基于上述原因,本研究考慮到,實際應(yīng)用場景下,大多數(shù)需求均為同一地區(qū)的服務(wù),因此設(shè)計并實現(xiàn)了一個按區(qū)域劃分的系統(tǒng),每個區(qū)域的存儲系統(tǒng)獨立運行。并且針對該場景,設(shè)計并實現(xiàn)了一個混合擴容區(qū)塊鏈的方案。
2 區(qū)塊鏈交易模塊的設(shè)計
2.1 混合擴容而成的區(qū)塊鏈交易模塊的設(shè)計思路
該模塊為本系統(tǒng)的交易模塊,提供錢包、交易以及結(jié)算的功能。即為本系統(tǒng)存儲部分提供交易的服務(wù)。由于存儲部分的交易結(jié)算的流程并不是一次性支付全部的費用,而是每成功進行一次時空證明后進行一次支付(該部分在3.1節(jié)中會介紹),因此每一個文件的存儲都會產(chǎn)生大量的交易,從而該系統(tǒng)最大能存儲的文件的個數(shù)會被交易模塊的 TPS (每秒交易次數(shù))所限制??芍?TPS 的大小為該系統(tǒng)的可行性的重要指標(biāo)。
如果使用傳統(tǒng)的區(qū)塊鏈公鏈條作為該系統(tǒng)的結(jié)算模塊,將會出現(xiàn)最大TPS難以滿足需求的情況,例如比特幣的交易效率為每秒僅支持7筆交易,而目前的以太坊也僅支持每秒 15 筆左右的交易[4]。并且還存在高昂的gas費用的問題。業(yè)界很多技術(shù)人員嘗試為區(qū)塊鏈擴容。例如比特幣中出現(xiàn)了依據(jù)信任程度打分的方式提高交易效率的方案[5]。而以太坊中目前擴容方案主要有兩類:Layer 1 擴容方案,即直接增加鏈上的交易處理能力,這種方式也被稱為鏈上擴容。常見的技術(shù)方案有: Sharding 和 DAG。Layer 2 擴容方案,即將鏈上的相當(dāng)一部分工作量轉(zhuǎn)移到鏈下來完成。常見則是通過側(cè)鏈的方式進行。
由于本項目的交易的群體相對固定,用戶均為該共享的云存儲系統(tǒng)中的成員。因此可以通過Layer2的方案進行擴容,不必在公鏈(比特幣、以太坊等)上進行交易,通過2.4節(jié)實現(xiàn)中所示的跨鏈協(xié)議,支持將公鏈上賬戶的錢轉(zhuǎn)入側(cè)鏈和將側(cè)鏈上賬戶的錢轉(zhuǎn)回公鏈。而礦工以及用戶的存儲的收益和費用的交易均在側(cè)鏈中進行,從而TPS能力將不受制于公鏈的TPS,也不會因公鏈的擁堵造成該系統(tǒng)的阻塞。該側(cè)鏈僅由該系統(tǒng)參與者形成,因此節(jié)點數(shù)目遠(yuǎn)小于公鏈。從而需要進行共識的節(jié)點數(shù)目也會較少,從而該鏈達成一致性的成本較低,從而gas費用較小。從而比直接使用以太坊作為提供合約的鏈擁有更好的效果,并且通過使用 POS 或者 POA 方式構(gòu)建的側(cè)鏈 TPS 可以達到1000以上。
而該系統(tǒng)的應(yīng)用場景是針對每一個區(qū)域提供服務(wù),因此可以利用該特性繼續(xù)優(yōu)化擴容該區(qū)塊鏈交易模塊,在原有的layer2的鏈的基礎(chǔ)上,繼續(xù)擴容,將每一個區(qū)域單獨劃分成一個交易子模塊zkStore。而在某個特定的區(qū)域內(nèi),所有的用戶和礦工均通過 zkStore 進行交易,而 zkStore 與真正的鏈不同,其并沒有獨立進行共識和交易的能力。其通過利用側(cè)鏈提供的合約功能,由Operator(交易收集器)收集一定的交易之后,生成 proof 提交側(cè)鏈的合約進行驗證。從而將區(qū)域內(nèi)用戶和礦工之間的交易的 gas 費用降低。
基于上述,依據(jù)交易群體相對固定和交易發(fā)生在特定區(qū)域的性質(zhì)進行的兩次擴容后,假設(shè)每進行M次結(jié)算交易之后用戶將會將余額進行存取,Operator 每收集N個交易進行一次驗證,則平均一次交易的gas費用滿足如下公式:
其中 Gasmainchain 為公鏈一次轉(zhuǎn)賬的花費, Gassidechain 為往側(cè)鏈合約中轉(zhuǎn)賬的開銷,Gasproof為側(cè)鏈一次驗證proof的花費,Gasoperator為Operator收集交易并打包的花費。而實際測試得N穩(wěn)定在30,而M和用戶習(xí)慣有關(guān)系,通常使用情況下M大于1000,因此造成Gasmainchain 和 Gassidechain ?的開銷可以忽略,且 Gasoperator 的花費為 Gasmainchain 的1/30,Gasproof約等于3~5倍的Gasoperator,因此基于該結(jié)構(gòu)下,整體Gas約為以太坊的1/25。
測試zkStore模塊的TPS,得到表2所示的zkStore的TPS測試數(shù)據(jù)。
系統(tǒng)可承載的最大zkStore的個數(shù)為:
其中Numzkstore為最大 zkStore 的個數(shù),C為每秒一個 zkStore 造成側(cè)鏈的交易數(shù)量,TPSsidechain為側(cè)鏈的TPS,側(cè)鏈的 TPS 由側(cè)鏈的實現(xiàn)方式?jīng)Q定,使用 POS 或者 POA 的情況下側(cè)鏈的TPS通常可以達到1000。zkStore 剛開始運行的時候負(fù)載較低 TPS 測得的值會偏高,長時間穩(wěn)定運行之后測得zkStore的TPS為3。
從而系統(tǒng)的總最大TPS滿足如下公式:
依據(jù)該公式,以及測試得到的數(shù)據(jù),最大可并行11174個zkStore,也就是按照地理位置可以將服務(wù)劃分成11174個區(qū)域,每一個區(qū)域的均運行著TPS為3的zkStore模塊,系統(tǒng)理論情況下總共達最大可以到了33522的TPS,遠(yuǎn)大于僅僅使用以太坊值為15的TPS。
2.2 側(cè)鏈的設(shè)計
若在該側(cè)鏈中采用類似公鏈的 POW(工作量證明)共識機制構(gòu)建,通過算力來決定記賬權(quán)的歸屬,使用賬單內(nèi)容和種子構(gòu)成的塊的 hash 值的方式進行算力加密(該種子需要全系統(tǒng)構(gòu)成的算力總量求解10分鐘才能得到的結(jié)果,從而讓偽造變得幾乎無法完成)。該方案最具有去中心的特性但伴隨的大量的算力浪費。且若考慮在本系統(tǒng)中采用該方案打造側(cè)鏈,會因為參與的節(jié)點不及公鏈的規(guī)模導(dǎo)致構(gòu)成的算力規(guī)模不大,容易遇到51%攻擊的問題。且基于POW的側(cè)鏈會導(dǎo)致TPS不夠。因而不能使用 POW 的方式構(gòu)建側(cè)鏈。如果通過基于 POS(權(quán)益證明)或 POA(權(quán)威證明)的方式打造側(cè)鏈,雖然犧牲了區(qū)塊鏈的一些去中心化的特性,但是可以大大地減小算力的消耗。POS 基于選舉驗證者的策略,驗證者需要在該系統(tǒng)中擁有一定數(shù)量的貨幣,而這些貨幣作為保證金,當(dāng)驗證者驗證了虛假的交易的時候,其保證金將會受到懲罰,其失去的錢會大于通過虛假交易獲得的利潤。也可以通過POW的策略,通過抵押信譽的方式,進一步犧牲了一些去中心化的特征,但是不需要節(jié)點間的通信,且僅需要更少的算力,因此具備了更高的TPS和更低的Gas費用。
2.3 zkStore的設(shè)計
zkStore 是基于 zkRollup 的思想通過零知識證明的原理[6]實現(xiàn)的。上鏈前有兩種證明的策略,欺詐證明和有效性證明,而欺詐證明是一種樂觀的方式,認(rèn)為很少會發(fā)生作惡的情況,因此不需要對每一筆交易耗費算力去做零知識證明,而是交易在上鏈之前都會“公示”一段時間,而這一段時間該交易的涉及人發(fā)現(xiàn)作惡行為,便可以提出欺詐證明,從而否決掉該交易,但是存在涉及 DDOS 攻擊等因素,導(dǎo)致交易無法進行提交欺詐證明導(dǎo)致缺乏安全。而有效性證明則是所有交易的上鏈必須提交零知識證明,開銷大但是安全性高[7]。因此 zkStore 選擇的是有效性證明方案。
基于 VitalikButerin 的研究[8],零知識證明具體有兩種實現(xiàn)方法,交互性和非交互性,而交互性則是通過若干次詢問,讓欺詐的概率降到可以忽略的時候,從而信任對方。而 zkStore 則是采用非交互的方案。非交互方案并不是指完全不交互,而是僅交互數(shù)次便完成了零知識證明,雖然消耗額外的算力,但是證明的通信過程會變得簡潔。其本質(zhì)原理是 ZKSNARK 中的核心思想,計算機無法在多項式的時間復(fù)雜度內(nèi)求出橢圓曲線的對數(shù)問題從而確保安全[9]。
2.4 公鏈與側(cè)鏈之間的跨鏈協(xié)議
公鏈和側(cè)鏈之間的轉(zhuǎn)賬通過跨鏈協(xié)議實現(xiàn),跨鏈?zhǔn)褂?Validator 模塊完成。如圖1所示,公鏈和側(cè)鏈均有一個 Validato r模塊的賬號分別為 Manager 和 Holder,該模塊將會監(jiān)聽公鏈上的所有往 Manager 轉(zhuǎn)賬的交易。當(dāng)出現(xiàn)公鏈上的用戶往公鏈上的 Manager 賬戶轉(zhuǎn)賬,則會在側(cè)鏈的 Holder 賬戶中往側(cè)鏈的上該用戶對應(yīng)的賬戶轉(zhuǎn)賬,即完成存款操作。當(dāng)出現(xiàn)側(cè)鏈上用戶往側(cè)鏈上的 Holder 賬戶轉(zhuǎn)賬時,則會在公鏈的 Manager 賬戶中往公鏈的上該用戶對應(yīng)的賬戶轉(zhuǎn)賬,即完成取款。所有公鏈的交易都是公開可查的,并且所有側(cè)鏈上的交易必須公開才能被確認(rèn),因此 Validator 偽造任何的交易記錄都會和公鏈上的交易記錄無法形成匹配,從而無法偽造,因此該方案具備安全性。
2.5 側(cè)鏈和 zkStore 的關(guān)系
側(cè)鏈上會運行大量的 zkStore,每一個 zkStore 負(fù)責(zé)該區(qū)域的交易的收集,而 zkStore 主要功能就是收集交易并打包生成 proof,然后提交至側(cè)鏈的合約進行校驗。zkStore 收集交易并進行零知識證明的運算都不需要通過側(cè)鏈,在鏈下完成。每一次的狀態(tài)轉(zhuǎn)變都需要提供零知識證明,由側(cè)鏈上的合約進行驗證,只有驗證通過才能更改狀態(tài)。合約不需要單獨校驗每筆交易的合法性,只需要校驗 proof 是否有效,從而降低了鏈上 gas 消耗。
1)zkStore 鏈下利用 Merkle tree[10]存儲賬戶狀態(tài)。
2)由 zkStore 中的交易匯總器(Operator)收集用戶的交易(TX1,TX2,TX3......)。
3)交易收集完成后 Operator 會執(zhí)行每個交易(校驗余額,校驗nonce,校驗簽名,執(zhí)行狀態(tài)轉(zhuǎn)換)。
4)當(dāng)交易執(zhí)行完成后會產(chǎn)生一個新的 Merkle tree Root。
5)為了證明鏈下狀態(tài)轉(zhuǎn)移是正確的,Operator 會在交易執(zhí)行完成后生成一個零知識證明的 proof。
6)如圖2所示,Operator 把 prev state root,post state root,交易數(shù)據(jù)和 proof 證明提交至側(cè)鏈的合約。
7)合約校驗 proof ,通過后,將新的狀態(tài)寫入到鏈上。
3 云存儲系統(tǒng)的設(shè)計
3.1 整體設(shè)計思路
在存儲部分的目標(biāo)是實現(xiàn)一個基于區(qū)域的、去中心化、低存儲費用、支持分享資源的系統(tǒng)。該系統(tǒng)與傳統(tǒng)的中心化存儲系統(tǒng)(百度網(wǎng)盤、騰訊網(wǎng)盤、115網(wǎng)盤等)不同,該系統(tǒng)不依賴傳統(tǒng)的中心化集群的機房的存儲和帶寬資源,而是利用零散在各地的空閑帶寬和存儲資源,提高了整個網(wǎng)絡(luò)的利用率。對比現(xiàn)有的中心存儲解決方案來說,隱私程度更高。該文件系統(tǒng)中,用戶無需暴露任何身份信息,通過不需要第三方參與的賬戶創(chuàng)建模式,保證了整個系統(tǒng)中的匿名性[11-12]。本系統(tǒng)與有相同研究方向的 IPFS 項目不同,本系統(tǒng)參考了部分 IPFS 的思想,并且在此基礎(chǔ)上進行了劃分區(qū)域,提高了服務(wù)的質(zhì)量且降低了服務(wù)的成本。并且通過多副本的方式,提高了文件的可靠性。針對隱私性高的文件,將會在每一個Miner中存儲該文件的非全部分片,從而任何一個Miner均不能還原該文件,保證了文件的隱私性。通過參考IPFS實現(xiàn)的復(fù)制證明和時空證明的確認(rèn)機制以及王玉秀[13]等人的 merkle樹校驗方案,實現(xiàn)高的安全性的檢驗策略,以防止女巫攻擊(Sybil Attack)、外部數(shù)據(jù)源攻擊(Outsourcing Attack)、生成攻擊(Generation Attack)的功能。存儲費用的支付參考微支付[14]的思路。該文件存放若干天,每一天都需要進行若干次時空證明。每一次Miner通過時空證明后支付一部分的費用方式取代一開始就付完全部費用的方式。從而降低無論哪一方發(fā)生作惡時的損失。從TPS角度考慮,本系統(tǒng)可以支持最大的文件數(shù)量滿足如下公式。
其中TPS表示系統(tǒng)總共的 TPS,由上文推導(dǎo)得為33522,Avgcnt ?表示平均文件的分片數(shù)量,D 表示每一天文件需要進行時空證明的次數(shù)。Avgcnt 通常平均為64,D 通常為1,因此該系統(tǒng)最大支持45254700個文件。
本系統(tǒng)可以用于多種場景,文件分享,文件的存儲備份,以及視頻類文件的點播等。
3.2 云存儲系統(tǒng)的結(jié)構(gòu)
首先通過域名解析,讓 User 和 Miner 獲得一些 Bootstrap 節(jié)點的地址。從而接入整個系統(tǒng)。當(dāng)用戶和Miner接入系統(tǒng)后,將會形成如下所示的結(jié)構(gòu)(圖3僅代表各個角色之間的關(guān)系,并不代表數(shù)量關(guān)系,每一個角色在系統(tǒng)中都會有多個)。
如圖3所示為系統(tǒng)的整體結(jié)構(gòu),各個角色的功能如下介紹:
Indexer:索引者,主要功能是內(nèi)置了一個 bitmap,bitmap 記錄每個文件的每個分片存儲在哪一個 Miner 上。User 上傳的文件是分成許多分片的,而這些分片會分散在許多 Miner 之間。從而需要 Indexer 進行索引。 該模塊由索引礦工運行。
Bootstrap:用于服務(wù)發(fā)現(xiàn),提供接入系統(tǒng)的User 以及 Miner一個List(列表),該列表中包含了該系統(tǒng)中其他節(jié)點以及indexer和verifier的地址。
Verifier:用于驗證 Miner 以及 User 是否作惡。當(dāng) User 上傳了文件后,則需要通知 Verifier 去檢驗文件是否真實的存在于 Miner 中。而其中對于 Miner 是否真的存儲了這個文件以及Miner是否真的存在女巫攻擊等行為,通過復(fù)制證明和時空證明的方法實現(xiàn)。
Miner:礦工的客戶端,定期接受 Verifier 的檢查。接受到用戶的存儲請求后,接收用戶的文件分片并存儲。對于高隱私度的文件每一個Miner都會存儲每一個文件的部分分片。從而有兩個優(yōu)點,第一是安全性高,任意一個 Miner 均不能獲得完整的文件數(shù)據(jù),第二是傳輸效率高,文件可以從多個 Miner 同時下載。
User:用戶的客戶端,當(dāng)上線的時候,會通過 Bootstrap 發(fā)現(xiàn)服務(wù)節(jié)點,然后需要上傳文件時,與 Indexer 協(xié)調(diào)分片信息以及每個片存放的 Miner,而后連接 Miner 通過直接上傳和 Miner間的互相的傳輸并完成本次存儲。分享則是產(chǎn)生分享碼,該碼可向其他 Miner 證明自己擁有文件的下載權(quán)利,從而別的 User 可以依據(jù)該分享碼進行下載。下載時,通過調(diào)度算法,從多個 Miner 同時下載。
3.3 系統(tǒng)傳輸模型
從實際角度分析,用戶側(cè)的流量成本是最高的,因此需要讓用戶側(cè)的傳輸量最少,在文件需要進行多副本存儲的情況下,不能讓用戶對這個文件進行多次上傳。采取如下策略,每當(dāng)用戶上傳文件的一個分片的時候,通過先將該分片上傳至一個 Miner,然后通過 Miner 將該分片分發(fā)給其他的 Miner。由于是基于分片級別的轉(zhuǎn)發(fā),當(dāng)收到一個文件的分片的時候,將會立即進行轉(zhuǎn)發(fā),因此上傳一個副本和上傳多個副本的耗時相差不大。用戶還需將該分片的 merkle 樹的樹頂結(jié)點的 Hash 值發(fā)送給 Verifier,而后最開始獲得分片以及獲得副本的Miner 需要對 Verifier 進行存儲證明和時空證明。從而使用戶上傳了一份文件但是完成了多副本的存儲。
而當(dāng)文件較大的時候,會出現(xiàn)文件切片數(shù)目太多,從而會導(dǎo)致 indexer 的開銷較大,因為 indexer 需要支持查詢文件的每一個分片在哪些Miner上進行了存儲,分片數(shù)量太大將會需要indexer更大的存儲能力和更高效的查詢能力,并且針對每一個分片需要進行一次證明的生成,導(dǎo)致整個系統(tǒng)負(fù)擔(dān)太大。為了減小分片數(shù)量,如果將文件的每一個分片的大小設(shè)置的更大,則會導(dǎo)致傳輸?shù)某杀驹黾?,且對于在線播放等功能造成較大的延遲問題。因此通過二級分片的方案。先對文件進行第一次切片,保證文件的存儲以第一級分片為單位進行,從而使indexer的索引僅僅需要提供第一級分片的索引即可。而傳輸?shù)臅r候針對第一級分片進行第二次分片,從而減小傳輸時的延遲以及校驗的復(fù)雜程度。
該系統(tǒng)的冗余率主要取決于,indexer 的索引開銷,以及 miner 和 user 之間傳輸協(xié)議的開銷,通過 iptables 流量統(tǒng)計的方式,抓取該程序的通信數(shù)據(jù),得到表3所示的數(shù)據(jù),當(dāng)傳輸?shù)奈募^小的時候,會導(dǎo)致因為 indexer 的索引開銷相比較大而造成較高的冗余率,當(dāng)文件大小大于10M的時候,系統(tǒng)的冗余率趨于穩(wěn)定。
3.4 下載調(diào)度算法
文件的下載有兩種調(diào)度算法,稀缺性優(yōu)先和緊急度優(yōu)先,分別對應(yīng)兩種不同的場景。
稀缺性優(yōu)先適用于普通的文件下載,普通的文件下載的時候,考慮到 Miner 可能會出現(xiàn)掉線或者被許多 User 連接導(dǎo)致網(wǎng)絡(luò)擁堵。因此分配給每一個空閑 Miner 下載的分片,選擇下載該 Miner 擁有的但是全局最稀缺的分片。從而使穩(wěn)定性最高、完成時間的期望最短。其核心邏輯即為優(yōu)先把稀缺的部分先下載完成,而非稀缺的部分如果出現(xiàn)一些 Miner 的波動,仍然可以通過別的 Miner 下載。
如下述例子所描述的場景,假設(shè)如分片1在 A、B、C、D 四個 Miner 中有備份,分片2在 B、C、D 三個 Miner 中有備份,分片3在 A、B 兩個 Miner 中有存儲,分片4在A中有存儲。因此基于稀缺性優(yōu)先的策略。此時選擇 Miner A 下載分片4,因為分片4僅僅 A 中有備份,全局層面最稀缺。分配 B 下載分片3,因為僅僅在 A 與 B 中存在分片3,而 A 暫時為忙碌狀態(tài)(下載分片4),所以在此情況下分片2能下載的只有 Miner B,因此優(yōu)先使用 MinerB,然后需要分配 Miner C 和 Miner D,而 Miner C 與 Miner D均擁有分片1與分片2,則會隨機分配從 C 中下載分片1,分片2將會從D下載。當(dāng)有Miner下載完資源的時候,若還有新的分片也會按照上述策略進行繼續(xù)分配。
當(dāng)用戶存儲的視頻類的文件,需要邊下邊播,則采用緊急度優(yōu)先算法,緊急度優(yōu)先算法的思路如下:
視頻類文件的切片存在于各個 Miner,同時從這些 Miner中進行多路下載,從而獲得一個較高的下載速度,而針對這個下載的過程,采用緊急度的優(yōu)先調(diào)度算法。該策略是分別針對每一個分片進行決策,決策分片下載源時,首先計算所有 Miner 預(yù)期下載完成該分片的時間,選擇預(yù)計最早完成的 Miner 進行下載。而每一次選擇之后,該 Miner的任務(wù)列表中就加入了該分片的計劃,而下一個分片調(diào)度時,要在上一個分片的調(diào)度結(jié)果上進行調(diào)度。如圖6所示,每一個 tunnel 對應(yīng)一個 Miner,默認(rèn)對于該文件的前26個分片,這些分片在6個 Miner 上均有儲存。
當(dāng)調(diào)度完成 a、b、c 分片的時候,d分片會在a、b、c調(diào)度結(jié)果上繼續(xù)計算,通過 tunnel1、tunnel2 下載,要先等待之前分片下載完成,因此預(yù)計完成為2s的時刻,而 tunnel3與tunnel4 則是速度較慢,分別要2s和4s時刻完成。tunnel5 則是在1.5秒時刻完成,tunnel6 為4s時刻完成,因此該分片將會調(diào)度到 tunnel5 下載。依據(jù)該算法在所有miner均擁有所有分片的情況下第N片分片的期望到達時刻為
其中size_i表示該分片i的大小,speed_i表示第i個下載鏈路的速度,m為總共Miner的數(shù)量。
4 結(jié)束語
本研究實現(xiàn)了一個基于區(qū)塊鏈技術(shù)的區(qū)域共享型云存儲系統(tǒng),致力于為用戶在某個特定的區(qū)域內(nèi)提供服務(wù),在該場景下的區(qū)塊鏈擴容技術(shù)在實驗室環(huán)境以及理論推導(dǎo)均有較好的TPS指標(biāo)。系統(tǒng)核心技術(shù)主要由傳輸策略、檢驗策略、區(qū)塊鏈擴容組成??山鉀Q傳統(tǒng)中心化云存儲的數(shù)據(jù)不安全、價格太高的問題。
該系統(tǒng)還可以應(yīng)用在流媒體平臺的音視頻加速、用戶數(shù)據(jù)的加密存儲等領(lǐng)域,可提升區(qū)塊鏈的底層平臺服務(wù)水平,進一步促進新型共識算法、鏈上數(shù)據(jù)保密等區(qū)塊鏈服務(wù)發(fā)展。
從模式上來看,本項目通過利用區(qū)塊鏈的激勵系統(tǒng)刺激閑置的海量帶寬與存儲資源的共享,解決了傳統(tǒng)的中心化云存儲的價格太高的問題。
用戶可以用更低廉的價格獲取更優(yōu)質(zhì)的服務(wù)。該研究旨在為云服務(wù)的模式提供新的思路,面向廣大開發(fā)者,可依賴本研究提供的去中心化存儲資源和思路,在上層構(gòu)建出更豐富的存儲應(yīng)用,比如去中心化的云計算,去中心化內(nèi)容分發(fā)網(wǎng)絡(luò)等。
參考文獻:
[1] 苗齊.基于IPFS優(yōu)化的區(qū)塊鏈物流信息平臺[J].電腦知識與技術(shù),2021,17(11):257-259.
[2] 丁博文,徐躍東,王亮.IPFS網(wǎng)絡(luò)內(nèi)容和性能測量[J].計算機工程與應(yīng)用:1-14.[2020-12-07].http://kns.cnki.net/kcms/detail/11.2127.TP.20210420.1330.060.html.
[3] 石秋娥,周喜,王軼.基于去中心化索引的IPFS數(shù)據(jù)獲取方法研究[J].計算機工程與應(yīng)用:1-10.[2020-12-07].http://kns.cnki.net/kcms/detail/11.2127.TP.20210419.1450.073.html.
[4] 李雯林.以太坊吞吐量瓶頸分析與優(yōu)化研究[D].湘潭:湘潭大學(xué),2020.
[5] Lepom?ki L,Kanniainen J,Hansen H R.Retaliation in Bitcoin networks[J].Economics Letters,2021,203:109822.
[6] Miers I,Garman C,Green M,et al.Zerocoin:anonymous distributed E-cash from bitcoin[C]//2013 IEEE Symposium on Security and Privacy.May 19-22,2013,Berkeley,CA,USA.IEEE,2013:397-411.
[7] StarkWare.Validity Proofs vs.Fraud Proofs[EB/OL].[2020-10-23].https://medium.com/starkware/validity-proofs-vs-fraud-proofs-4ef8b4d3d87a.
[8] VitalikButerin.Quadratic Arithmetic Programs: from Zero to Hero[EB].[2020-10-23].https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649.
[9] 黎琳,張旭霞.zk-snark的雙線性對的國密化方案[J].信息網(wǎng)絡(luò)安全,2019(10):10-15.
[10] 胡逸飛.基于區(qū)塊鏈的數(shù)字證書審計技術(shù)研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2019.
[11] 劉敖迪,杜學(xué)繪,王娜,等.區(qū)塊鏈技術(shù)及其在信息安全領(lǐng)域的研究進展[J].軟件學(xué)報,2018,29(7):2092-2115.
[12] 祝烈煌,高峰,沈蒙,等.區(qū)塊鏈隱私保護研究綜述[J].計算機研究與發(fā)展,2017,54(10):2170-2186.
[13] 王玉秀,楊青,程偉,等.基于格的線性同態(tài)簽名在云存儲數(shù)據(jù)動態(tài)驗證方案中的應(yīng)用[J].中國科技論文,2016,11(20):2381-2386.
[14] 劉怡.基于存儲證明的區(qū)塊鏈數(shù)字內(nèi)容交易平臺設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),2020.
【通聯(lián)編輯:謝媛媛】
收稿日期:2021-06-20
基金項目:上海市科學(xué)技術(shù)委員會科研項目“基于區(qū)塊鏈的高可用分布式存儲與分發(fā)網(wǎng)絡(luò)平臺”(19511102300)
作者簡介:劉峰(1982—),男,上海交通大學(xué)碩士,主要研究方向為區(qū)塊鏈。