區(qū)塊鏈將如何為數(shù)據(jù)存儲(chǔ)問題提供更佳解決方案
簡(jiǎn)介
隨著當(dāng)今科技的迅速發(fā)展,區(qū)塊鏈技術(shù)被當(dāng)作是解決包括云存儲(chǔ)問題在內(nèi)的許多現(xiàn)有系統(tǒng)問題的熱門方法。云存儲(chǔ)是一種運(yùn)用了分布式數(shù)據(jù)中心和虛擬技術(shù)的數(shù)據(jù)存儲(chǔ)系統(tǒng)。因?yàn)樽陨淼谋憷院透咝?,云存?chǔ)收到了大量個(gè)人和商業(yè)組織的關(guān)注:用戶可以在任何時(shí)間,任何地點(diǎn),通過網(wǎng)絡(luò)去訪問存儲(chǔ)在云端的數(shù)據(jù)。然而,云存儲(chǔ)的某些弱點(diǎn),例如數(shù)據(jù)安全性和數(shù)據(jù)隱私性,一直未得到有效解決。
當(dāng)用戶上傳數(shù)據(jù)到云端時(shí),數(shù)據(jù)會(huì)首先被系統(tǒng)的“大腦”(主控?cái)?shù)據(jù)服務(wù)器)接收。然后,數(shù)據(jù)會(huì)被備份存儲(chǔ)在不同的數(shù)據(jù)中心,以防止源數(shù)據(jù)損壞后數(shù)據(jù)無法訪問的現(xiàn)象。當(dāng)數(shù)據(jù)上傳完成后,其安全性就完全取決于數(shù)據(jù)中心的可靠性。如果數(shù)據(jù)中心因?yàn)樽匀粸?zāi)害或人為因素導(dǎo)致?lián)p壞,那么數(shù)據(jù)就有可能完全丟失。近年來,數(shù)據(jù)損壞和丟失的問題在包括谷歌在內(nèi)的科技公司層出不窮。例如2015年,谷歌位于比利時(shí)的數(shù)據(jù)中心被閃電擊中4次,導(dǎo)致部分?jǐn)?shù)據(jù)的永久性丟失。
除了對(duì)數(shù)據(jù)安全的擔(dān)憂之外,中心化的存儲(chǔ)方式及數(shù)據(jù)加密的缺乏,也是目前云存儲(chǔ)技術(shù)難以解決的問題。大多數(shù)云存儲(chǔ)服務(wù)只提供數(shù)據(jù)傳輸之間的加密方法,例如,SSL/TLS。 然而,這種加密方法是很容易被攻擊的。除此之外,因?yàn)橹行幕?wù)器管理員有權(quán)限直接訪問用戶上傳的數(shù)據(jù)。即使大部分公司對(duì)保護(hù)用戶隱私有著很嚴(yán)格的條例,但是只要有人為的干預(yù),就永遠(yuǎn)有信息泄露的風(fēng)險(xiǎn)。
為了解決上述問題,我們?cè)O(shè)計(jì)了DxChain,并研發(fā)實(shí)現(xiàn)了一款基于DxChain Testnet的區(qū)塊鏈存儲(chǔ)應(yīng)用 - DxBox。
架構(gòu)設(shè)計(jì)
DxBox是一款運(yùn)行于DxChain Testnet v0.3.6的演示應(yīng)用,為用戶提供簡(jiǎn)單明了的文件上傳下載功能。這款應(yīng)用運(yùn)用了委托方和供應(yīng)商的模型來進(jìn)行文件的傳輸。更詳細(xì)來說,委托方是一個(gè)節(jié)點(diǎn),它會(huì)消耗基于DxChain的原生通證(DX Token),來獲取數(shù)據(jù)的傳輸以及存儲(chǔ)服務(wù)。而供應(yīng)商則是用閑置的磁盤存儲(chǔ)空間來提供數(shù)據(jù)存儲(chǔ)服務(wù)的節(jié)點(diǎn),并以此來賺取傭金(DX Token)。要成為一個(gè)供應(yīng)商,節(jié)點(diǎn)必須要進(jìn)行廣播,廣播的內(nèi)容會(huì)存儲(chǔ)在區(qū)塊鏈上。委托方會(huì)從區(qū)塊鏈上得到廣播信息,存入自身的數(shù)據(jù)庫中。
在進(jìn)行文件上傳之前,委托方必須要找到符合條件的供應(yīng)商,與他們簽訂合約。委托方會(huì)不間斷的向每一個(gè)存入數(shù)據(jù)庫的供應(yīng)商詢問他們的參數(shù),例如合約生成,文件上傳、下載及存儲(chǔ)的費(fèi)用。根據(jù)這些信息,委托方會(huì)自動(dòng)選取排名靠前的供應(yīng)商與之簽訂合約。每一個(gè)合約中都包含了合約截止的區(qū)塊高度,存儲(chǔ)文件的大小等信息。當(dāng)合約成功簽訂后,用戶就可以通過委托方上傳和下載文件了。為了簡(jiǎn)化體驗(yàn)過程,目前DxBox應(yīng)用中的所有供應(yīng)商參數(shù)都已提前設(shè)置完畢。
如圖一所示,當(dāng)用戶開始上傳文件時(shí),文件會(huì)被分成不同的數(shù)據(jù)塊。每一個(gè)數(shù)據(jù)塊會(huì)通過委托方節(jié)點(diǎn)產(chǎn)生的私鑰進(jìn)行加密,然后通過糾刪碼算法進(jìn)行分片。糾刪碼算法通過擴(kuò)展和編碼原有數(shù)據(jù)來進(jìn)行數(shù)據(jù)保護(hù),能有效提升存儲(chǔ)系統(tǒng)的可靠性。當(dāng)供應(yīng)商節(jié)點(diǎn)下線或者一些數(shù)據(jù)片發(fā)生損壞時(shí),原文件只需要通過部分?jǐn)?shù)據(jù)片就可以被還原。
對(duì)于DxBox應(yīng)用來說,每個(gè)數(shù)據(jù)塊會(huì)被分成10個(gè)數(shù)據(jù)片。其中,一個(gè)數(shù)據(jù)塊只需要5個(gè)數(shù)據(jù)片就可以進(jìn)行還原,剩余的5個(gè)作為備份。一個(gè)文件被分成數(shù)據(jù)塊的個(gè)數(shù),取決于文件大小、恢復(fù)數(shù)據(jù)塊所需數(shù)據(jù)片的個(gè)數(shù)和數(shù)據(jù)片的大?。J(rèn)為 4 MB)。他們之間的關(guān)系可以用下面的公式來表示:
比如,當(dāng)用戶通過DxBox上傳一個(gè)大小為10MB的文件時(shí),文件會(huì)被分成3個(gè)數(shù)據(jù)塊,30個(gè)數(shù)據(jù)片。當(dāng)數(shù)據(jù)塊的每一個(gè)數(shù)據(jù)片都上傳成功后,文件的上傳過程便完成了。在此過程中,數(shù)據(jù)塊加密和糾刪碼算法的應(yīng)用,確保了文件存儲(chǔ)系統(tǒng)的安全性和可靠性。由于每一個(gè)供應(yīng)商只能拿到數(shù)據(jù)片,對(duì)他們來說,拿到所有需要的數(shù)據(jù)片并還原數(shù)據(jù)基本是一項(xiàng)不可能的任務(wù)。即使在最壞的情況下,攻擊者拿到了所有的數(shù)據(jù)片以用來還原數(shù)據(jù)塊,但數(shù)據(jù)塊已被委托方進(jìn)行私鑰加密,原文件的內(nèi)容仍舊無法被讀取。
文件下載與文件上傳是完全相反的過程。如圖二所示,當(dāng)用戶發(fā)送了下載請(qǐng)求后,委托方節(jié)點(diǎn)會(huì)從隨機(jī)挑選的五個(gè)供應(yīng)商那里拿到數(shù)據(jù)片。文件下載時(shí),所需的供應(yīng)商數(shù)量是根據(jù)以下公式來計(jì)算的:
當(dāng)所需數(shù)據(jù)片都成功從供應(yīng)商處下載后,數(shù)據(jù)片會(huì)被轉(zhuǎn)換成為加密過后的數(shù)據(jù)塊。當(dāng)數(shù)據(jù)塊被成功解密并還原成原文件后,用戶便可以從委托方節(jié)點(diǎn)下載到本地設(shè)備。
經(jīng)濟(jì)模型
在生成新的存儲(chǔ)合約的時(shí)候,供應(yīng)商和委托方都需要存放一定數(shù)量的金額(DX通證)到合約中。其中:
1)委托方放入合約中的金額將用于所有文件存儲(chǔ)、合約生成、文件上傳以及文件下載所需要的費(fèi)用;
2)供應(yīng)商放入合約中的金額為押金。
當(dāng)簽訂合約的時(shí)候,委托方需支付一筆手續(xù)費(fèi),此后,每次的文件上傳、下載及文件存儲(chǔ),委托方都要支付給供應(yīng)商一筆費(fèi)用。這些費(fèi)用都將取決于供應(yīng)商的設(shè)置。委托方每一次的花費(fèi),都會(huì)被記錄在存儲(chǔ)合約中,也就是修訂存儲(chǔ)合約。然而,為了存儲(chǔ)合約的不可抵賴性以及不在區(qū)塊鏈上存入過多的數(shù)據(jù),只有最新的一個(gè)修訂存儲(chǔ)合約才會(huì)被供應(yīng)商提交并記錄在區(qū)塊鏈上。
在合約截止時(shí)供應(yīng)商會(huì)自動(dòng)提交存儲(chǔ)證明,并得到合約收益和返還的押金。委托方放入合約的存款中,未被使用的部分將被返還給委托方。若供應(yīng)商無法證明其為委托方存儲(chǔ)了有效文件,那么押金中的一部分通證會(huì)被扣除。
DxBox采用了自動(dòng)續(xù)約機(jī)制,即在合約截止前委托方會(huì)嘗試與每一個(gè)供應(yīng)商建立一份新的合約。當(dāng)新合約生效后,即使舊合約還沒有截止,所有文件的存儲(chǔ)、上傳以及下載的花費(fèi),都會(huì)被記錄在新合約中。
結(jié)論
如今,云存儲(chǔ)因?yàn)槠浔憷院透咝宰兊迷絹碓绞軞g迎。然而,人們?cè)谑褂盟耐瑫r(shí),對(duì)它的安全性和隱私性問題的擔(dān)憂也在日益增長(zhǎng)。隨著區(qū)塊鏈技術(shù)的發(fā)展,像DxBox這樣基于區(qū)塊鏈技術(shù)的存儲(chǔ)產(chǎn)品的誕生,可以為存儲(chǔ)的安全和隱私問題提供更好的解決方案:文件被分塊、加密,并通過糾刪碼算法進(jìn)一步編碼及分片,確保了存儲(chǔ)系統(tǒng)的安全性與可靠性。再加上DxBox使用了DxChain的原生通證及經(jīng)濟(jì)模型,能夠鼓勵(lì)更多存儲(chǔ)供應(yīng)商和個(gè)人用戶共享他們的閑置硬盤空間,在獲得有效經(jīng)濟(jì)收益的同時(shí)也提高了整體生態(tài)的資源利用率。
DxBox只是基于DxChain Testnet研發(fā)的一款Demo Dapp,它仍不完美,還存在很多可提升的空間和可增加的功能,例如優(yōu)化注冊(cè)系統(tǒng),允許有區(qū)塊鏈經(jīng)驗(yàn)的用戶能夠手動(dòng)調(diào)試委托方的節(jié)點(diǎn)設(shè)置等。