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





