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