五種去中心化的分布式存儲平臺介紹
區(qū)塊鏈和分布式技術(shù)的最重要一部分就是共識算法(整個網(wǎng)絡(luò)如何達成共同決策)和智能合約(用于執(zhí)行我們在這個中心化世界中每天使用的應用程序)。
但是當我們在使用日常應用程序時,這些屬性是不足以滿足當今世界的需求。如果只具備上述兩種屬性,想在優(yōu)酷Netflix上面觀看喜歡的電影/電視劇、在社交網(wǎng)絡(luò)facebook上面存儲/記錄視頻/圖片、或是在區(qū)塊鏈上面玩你最喜歡的游戲,比如DOTA、LOL等,這一切都將很難實現(xiàn)。
我們現(xiàn)在所缺失的是一個強大的、安全的且去中心化的內(nèi)容存儲和分布式系統(tǒng),來為當前數(shù)以億計的應用程序提供數(shù)據(jù)存儲的服務(wù)。
下面我們將探索并評估一些最受歡迎的分布式存儲平臺(IPFS、Swarm、Sia、Storj、MaidSafe),由于篇幅較長,我們將分成上下部分。
1. IPFS
狀態(tài):已上線(其激勵系統(tǒng),“Filecoin”尚未上線)
闡述:IPFS(星際文件系統(tǒng))一種點對點(p2p)文件共享系統(tǒng),旨在從根本上改變信息在全球各地的分布方式。
IPFS由通信協(xié)議和分布式系統(tǒng)中的部分創(chuàng)新演變而生,這些創(chuàng)新已被組合以產(chǎn)生與眾不同的文件系統(tǒng)。因此,要全面了解IPFS試圖實現(xiàn)的廣度和深度,重要的是要了解將其實現(xiàn)的技術(shù)突破以及它試圖解決的所有問題。
IPFS的最終目的是取代HTTP,那么,讓我們來看看現(xiàn)今的互聯(lián)網(wǎng)是如何運作的。
簡而言之,互聯(lián)網(wǎng)是一組描述數(shù)據(jù)如何在網(wǎng)絡(luò)中移動的協(xié)議。開發(fā)人員隨著時間的推移采用這些協(xié)議,并在此基礎(chǔ)架構(gòu)之上構(gòu)建應用程序。作為Web主干的協(xié)議之一是HTTP即超文本傳輸協(xié)議,這是由Tim Berners-Lee于1991年發(fā)明的。
HTTP是一個請求-響應的協(xié)議,客戶端(例如Web瀏覽器)向外部服務(wù)器發(fā)送請求, 然后,服務(wù)器將響應消息(例如,Google主頁)返回給客戶端, 這是一個位置尋址協(xié)議,意味著當我將google.com鍵入我的瀏覽器時,它會被轉(zhuǎn)換為某個Google服務(wù)器的IP地址,然后該服務(wù)器會啟動請求 - 響應周期。
HTTP的問題
假設(shè)你正坐在演講廳,教授要求你去訪問指定的網(wǎng)站。講座中的每個學生都向該網(wǎng)站提出請求并得到回復。這意味著相同的準確數(shù)據(jù)會單獨發(fā)送給屋子里的每個學生。如果有100名學生,則有100個請求和100個回復。這顯然不是最有效的做事方式。理想情況下,學生將能夠利用他們的物理距離優(yōu)勢來更有效地檢索他們所需的信息。
如果網(wǎng)絡(luò)通信線路中存在某些問題并且客戶端無法與服務(wù)器連接,則HTTP也會出現(xiàn)大問題。如果ISP發(fā)生中斷,某個國家/地區(qū)禁止某些內(nèi)容,或者內(nèi)容只是被刪除或移動,就會發(fā)生這種情況。這些類型的斷開鏈接存在HTTP Web上隨處可見。
HTTP的基于位置的尋址模型鼓勵中心化,使用我們的所有數(shù)據(jù)信任少數(shù)幾個應用程序很方便,但由于這一點,網(wǎng)絡(luò)上的大部分數(shù)據(jù)都變得很混亂,這使得這些提供商對我們的信息負有巨大的責任和權(quán)力(例如facebook)。
HTTP非常適合加載網(wǎng)站,但它不是為傳輸大量數(shù)據(jù)(如音頻和視頻文件)而設(shè)計的。這些限制可能使Napster(音樂共享服務(wù))和BitTorrent(電影共享服務(wù))等替代文件共享系統(tǒng)的出現(xiàn)和主流成功。
快進到2018年,按需高清視頻流和大數(shù)據(jù)正在變得無處不在; 我們正在繼續(xù)向上生產(chǎn)/消耗越來越多的數(shù)據(jù),以及開發(fā)越來越強大的計算機來處理數(shù)據(jù)。 云計算的重大進步有助于維持這種轉(zhuǎn)變,但分發(fā)所有這些數(shù)據(jù)的基礎(chǔ)架構(gòu)基本保持不變。
解決方案
IPFS最初是由Juan Benet努力構(gòu)建一個能夠快速遷移版本化科學數(shù)據(jù)的系統(tǒng)。它是經(jīng)過充分測試的互聯(lián)網(wǎng)技術(shù)的綜合,如DHT,Git版本系統(tǒng)和Bittorrent。 它創(chuàng)建了一個P2P群,允許交換IPFS對象。 IPFS對象的總體形成加密認證的數(shù)據(jù)結(jié)構(gòu),稱為Merkle DAG,并且該數(shù)據(jù)結(jié)構(gòu)可用于模擬許多其他數(shù)據(jù)結(jié)構(gòu)。 或者換句話說。..。..
IPFS是一種分布式文件系統(tǒng),旨在將所有計算設(shè)備與相同的文件系統(tǒng)連接起來。在某些方面,這類似于Web的原始目標,但IPFS實際上更類似于交換git對象的單個bittorrent群。 IPFS可以成為互聯(lián)網(wǎng)的一個新的主要子系統(tǒng)。如果搭建正確,它可以補充或替換HTTP,或許補充或替代更多,聽起來很瘋狂,是很瘋狂。
IPFS的核心是一個版本化文件系統(tǒng),它可以接收文件并對其進行管理,并將它們存儲在某個地方,然后跟蹤版本。 IPFS還考慮了這些文件如何在網(wǎng)絡(luò)中移動,因此它也是一個分布式文件系統(tǒng)。
IPFS規(guī)定了數(shù)據(jù)和內(nèi)容如何在網(wǎng)絡(luò)上移動,其性質(zhì)與bittorrent相似。此文件系統(tǒng)層提供了非常有趣的屬性,例如:
完全分布式的網(wǎng)站。
沒有原始服務(wù)器的網(wǎng)站。
可以完全在客戶端瀏覽器上運行的網(wǎng)站。
沒有任何服務(wù)器可以與之交談的網(wǎng)站。
讓我們看看這些不同的技術(shù)突破如何協(xié)同工作。
分布式哈希表
哈希表是將信息存儲為鍵/值對的數(shù)據(jù)結(jié)構(gòu)。在分布式哈希表(DHT)中,數(shù)據(jù)分布在計算機網(wǎng)絡(luò)上,并且有效地協(xié)調(diào)以實現(xiàn)節(jié)點之間的有效訪問和查找。
DHT的主要優(yōu)點是去中心化,容錯和可擴展性。節(jié)點不需要集中協(xié)調(diào),即使節(jié)點發(fā)生故障或離開網(wǎng)絡(luò),系統(tǒng)也能可靠地運行,DHT可以擴展以容納數(shù)百萬個節(jié)點。這些特征共同導致系統(tǒng)通常比客戶端 - 服務(wù)器結(jié)構(gòu)更具彈性。
區(qū)塊交換
流行的文件共享系統(tǒng)Bittorrent能夠通過依賴創(chuàng)新的數(shù)據(jù)交換協(xié)議成功協(xié)調(diào)數(shù)百萬個節(jié)點之間的數(shù)據(jù)傳輸,但它僅限于torrent生態(tài)系統(tǒng)。 IPFS實現(xiàn)了該協(xié)議的通用版本,稱為BitSwap,它作為任何類型數(shù)據(jù)的市場運行。這個市場是Filecoin的基礎(chǔ):一個基于IPFS的p2p存儲市場。
Merkle DAG
merkle DAG是Merkle樹和有向無環(huán)圖(DAG)的混合體。 Merkle樹確保在p2p網(wǎng)絡(luò)上交換的數(shù)據(jù)塊是正確的,未損壞的和不變的。 通過使用加密哈希函數(shù)組織數(shù)據(jù)塊來完成此驗證。 這只是一個函數(shù),它接受輸入并計算與該輸入相對應的唯一字母數(shù)字字符串(哈希)。 很容易檢查輸入是否會產(chǎn)生給定的哈希值,但很難猜測哈希的輸入。
各個數(shù)據(jù)塊稱為“葉節(jié)點”,它們被散列形成“非葉節(jié)點”。 然后可以組合和散列這些非葉節(jié)點,直到所有數(shù)據(jù)塊可以由單個根哈希表示。這是一種更簡單的概念化方法:
DAG是一種模擬沒有周期的拓撲信息序列的方法。 DAG的簡單示例是族譜。 merkle DAG基本上是一種數(shù)據(jù)結(jié)構(gòu),其中哈希用于引用DAG中的數(shù)據(jù)塊和對象。 這創(chuàng)建了幾個有用的功能:IPFS上的所有內(nèi)容都可以唯一標識,因為每個數(shù)據(jù)塊都有唯一的哈希。 此外,數(shù)據(jù)是防篡改的,因為改變數(shù)據(jù)就會改變哈希,如下所示:
IPFS的核心原則是對廣義Merkle DAG上的所有數(shù)據(jù)進行建模。這種安全功能的重要性很難夸大。用一個例子來表明這個想法有多么強大,價值數(shù)萬億美元的資產(chǎn)受到這一原則的保護。
版本控制系統(tǒng)
Merkle DAG結(jié)構(gòu)的另一個強大功能是它允許您構(gòu)建分布式版本控制系統(tǒng)(VCS)。最受歡迎的例子是Github,允許開發(fā)人員輕松地同時協(xié)作項目。 Github上的文件使用merkle DAG進行存儲和版本化。允許用戶獨立復制和編輯文件的多個版本,存儲這些版本并且稍后將編輯文件與原始文件合并。
IPFS對數(shù)據(jù)對象使用類似的模型:只要響應于原始數(shù)據(jù)的對象和任何新版本都可訪問,就可以檢索整個文件歷史記錄。鑒于數(shù)據(jù)塊通過網(wǎng)絡(luò)本地存儲并且可以無限期緩存,這意味著可以永久存儲IPFS對象。
此外,IPFS不依賴于對Internet協(xié)議的訪問。 數(shù)據(jù)可以分布在覆蓋網(wǎng)絡(luò)中,覆蓋網(wǎng)絡(luò)只是構(gòu)建于另一個網(wǎng)絡(luò)之上的網(wǎng)絡(luò)。 這些特點值得注意,因為這是抗審查網(wǎng)絡(luò)的核心要素。 可以成為促進言論自由以對抗全球互聯(lián)網(wǎng)審查普及程度的有用工具,但我們也應該認識到不良行為者可能濫用言論。
自我認證文件系統(tǒng)
我們將介紹的IPFS的最后一個重要組成部分是自我認證文件系統(tǒng)(SFS)。它是一個分布式文件系統(tǒng),不需要特殊的數(shù)據(jù)交換權(quán)限。它是“自我認證”的,因為提供給客戶端的數(shù)據(jù)是通過文件名(由服務(wù)器簽名)進行身份驗證的。結(jié)果?您可以利用本地存儲的透明性安全地訪問遠程內(nèi)容。
IPFS以此概念為基礎(chǔ),創(chuàng)建了星際名稱空間(IPNS)。它是一個SFS,使用公鑰加密技術(shù)來自我認證網(wǎng)絡(luò)用戶發(fā)布的對象。我們之前提到IPFS上的所有對象都可以唯一標識,但這也會擴展到節(jié)點。網(wǎng)絡(luò)上的每個節(jié)點都有一組公鑰,私鑰和一個節(jié)點ID,是其公鑰的哈希值。因此,節(jié)點可以使用其私鑰來“簽署”他們發(fā)布的任何數(shù)據(jù)對象,并且可以使用發(fā)件人的公鑰來驗證此數(shù)據(jù)的真實性。
以下是關(guān)鍵IPFS組件的快速回顧:
使用分布式哈希表,節(jié)點可以存儲和共享數(shù)據(jù),而無需中央?yún)f(xié)調(diào)。
IPNS允許使用公鑰加密技術(shù)立即預先驗證和驗證交換的數(shù)據(jù)。
Merkle DAG可實現(xiàn)唯一標識,防篡改和永久存儲的數(shù)據(jù)。
可以通過ConsenSys查看有關(guān)文件如何在網(wǎng)絡(luò)中分發(fā)的更多信息(深入了解)。
2. Swarm
狀態(tài):已上線
說明:
Swarm是一種分布式存儲平臺和內(nèi)容分發(fā)服務(wù),是以太坊web3堆棧的本地基礎(chǔ)層服務(wù)。 Swarm的主要目標是為以太坊的公共記錄提供充分去中心化和冗余的存儲,特別是存儲和分發(fā)dapp代碼和數(shù)據(jù)以及區(qū)塊鏈數(shù)據(jù)。 從經(jīng)濟角度來看,它允許參與者有效地匯集其存儲和帶寬資源,以便為所有網(wǎng)絡(luò)參與者提供這些服務(wù),同時受到以太坊的激勵。
目的
Swarm更全面的目標是為去中心化網(wǎng)絡(luò)應用程序(dapps)的開發(fā)人員提供基礎(chǔ)設(shè)施服務(wù),特別是:消息傳遞,數(shù)據(jù)流,點對點管賬,可變資源更新,存儲保險,監(jiān)管掃描和維修證明,支付渠道和數(shù)據(jù)庫服務(wù)。
從最終用戶的角度來看,除了上傳不托管在特定服務(wù)器上,Swarm與萬維網(wǎng)沒有什么不同。 Swarm提供點對點存儲和服務(wù)解決方案,具有DDoS抗性,零停機,容錯和抗審查以及自我維護的特點,因為內(nèi)置的激勵系統(tǒng)使用點對點管賬并允許交易資源進行支付。 Swarm旨在與以太坊的devp2p多協(xié)議網(wǎng)絡(luò)層以及以太網(wǎng)區(qū)塊鏈進行深度集成,以進行域名解析(使用ENS),服務(wù)支付和內(nèi)容可用性保險。
注意:為了解析ENS名稱,您的Swarm節(jié)點必須連接到以太坊區(qū)塊鏈(主網(wǎng)或測試網(wǎng))。
請參閱我們的發(fā)展路線圖,隨時了解swarm的進展情況。
概述
Swarm旨在為新的去中心化互聯(lián)網(wǎng)提供基礎(chǔ)層基礎(chǔ)架構(gòu)。 Swarm是節(jié)點的點對點網(wǎng)絡(luò),通過向彼此提供資源(存儲,消息轉(zhuǎn)發(fā),支付處理)來提供分布式數(shù)字服務(wù)。以太坊基金會運行Swarm測試網(wǎng)絡(luò),可用于以類似于以太坊測試網(wǎng)(ropsten)的方式測試功能。每個人都可以通過在其服務(wù)器,臺式機,筆記本電腦或移動設(shè)備上運行Swarm客戶端節(jié)點來加入網(wǎng)絡(luò)。有關(guān)如何執(zhí)行此操作,請參閱Swarm入門。 Swarm客戶端是以太坊堆棧的一部分,參考實現(xiàn)是用golang編寫的,可以在go-ethereum存儲庫中找到。目前Swarm正在POC(概念證明)0.3版本所有節(jié)點上運行。
Swarm提供了一個本地HTTP代理API,dapp或命令行工具可以使用其與Swarm交互。某些模塊(如消息傳遞)僅可通過RPC-JSON API獲取。測試網(wǎng)上的基礎(chǔ)服務(wù)器提供公共網(wǎng)關(guān),用于輕松演示功能并允許自由訪問,以便人們可以在不運行自己的節(jié)點的情況下嘗試Swarm。
Swarm是devp2p網(wǎng)絡(luò)的節(jié)點集合,每個節(jié)點在相同的網(wǎng)絡(luò)ID上運行bzz協(xié)議組件。
swarm節(jié)點還可以與一個(或多個)以太坊區(qū)塊鏈連接以進行域名解析,并使用一個以太坊區(qū)塊鏈進行帶寬和存儲補償。運行相同網(wǎng)絡(luò)ID的節(jié)點應該連接到相同的區(qū)塊鏈進行支付。Swarm網(wǎng)絡(luò)由其網(wǎng)絡(luò)id標識,該網(wǎng)絡(luò)id是任意整數(shù)。
Swarm允許上傳和離開,這意味著任何節(jié)點都可以只將內(nèi)容上傳到Swarm,然后允許其離線。只要節(jié)點不丟失或不可用,由于節(jié)點在彼此之間連續(xù)傳遞可用數(shù)據(jù)的“同步”過程,內(nèi)容仍然可以訪問。
公共網(wǎng)關(guān)
Swarm提供了一個本地HTTP代理API,Dapp可以使用它與Swarm進行交互。以太坊基金會正在托管一個公共網(wǎng)關(guān),允許免費訪問,以便人們可以在不運行自己的節(jié)點的情況下嘗試使用Swarm。
可以在https://swarm-gateways.net找到Swarm公共網(wǎng)關(guān),并始終運行最新的穩(wěn)定Swarm版本。
注意:此網(wǎng)關(guān)目前僅接受有限大小的上傳。在未來,可能無法上傳到此網(wǎng)關(guān)。
上傳和下載數(shù)據(jù)
上傳內(nèi)容包括將內(nèi)容“上傳”到你的本地Swarm節(jié)點,然后你的本地Swarm節(jié)點將所生成的數(shù)據(jù)塊與網(wǎng)絡(luò)中的節(jié)點“同步”。同時,下載內(nèi)容包括你的本地Swarm節(jié)點查詢網(wǎng)絡(luò)中的節(jié)點以獲取相關(guān)數(shù)據(jù)塊,然后在本地重新組合內(nèi)容。
內(nèi)容解析器:ENS
注意:為了解析ENS名稱,你的Swarm節(jié)點必須連接到以太坊區(qū)塊鏈(主網(wǎng)或測試網(wǎng))。
ENS是Swarm用于允許通過可讀名稱引用內(nèi)容的系統(tǒng),例如“theswarm.eth”。它的操作類似于DNS系統(tǒng),將可讀名稱轉(zhuǎn)換為機器標識符 - 在本例中,是你引用內(nèi)容的Swarm哈希值。通過注冊名稱并將其設(shè)置為解析你網(wǎng)站根目錄的內(nèi)容哈希,用戶可以通過bzz://theswarm.eth/等網(wǎng)址訪問您的網(wǎng)站。
注意:目前主流瀏覽器(如Chrome,F(xiàn)irefox或Safari)不支持bzz方案。如果您想通過這些瀏覽器訪問bzz方案,目前您必須使用HTTP網(wǎng)關(guān),例如https://swarm-gateways.net/bzz:/theswarm.eth/或使用支持bzz方案的瀏覽器,如Mist。
可變資源更新
可變資源更新是一個高度實驗性的功能,可從Swarm POC3獲得。 目前正在積極開發(fā),所以讓我們靜觀其變。
我們之前在本指南中已經(jīng)了解到,當我們在Swarm中對數(shù)據(jù)進行更改時,上傳該數(shù)據(jù)時返回的哈希將以完全不可預測的方式發(fā)生變化。 通過可變資源更新,Swarm提供了一種內(nèi)置方法,可以為不斷變化的數(shù)據(jù)保留永久標識符。
保持指向更改數(shù)據(jù)的指標的常用方法是使用以太坊名稱服務(wù)ENS。 但是,ENS是一個鏈上功能,它限制了某些領(lǐng)域的功能:
1. 每次更新ENS解析器都會花費你的燃料來執(zhí)行。
2. 更改數(shù)據(jù)的速度不可能比新塊的開采速度更快。
3. 正確的ENS解析要求你始終同步到區(qū)塊鏈。
可變資源更新允許我們在不必使用ENS的情況下為變更數(shù)據(jù)提供非變量標識符??梢允褂脛?chuàng)建資源時獲得的密鑰(MRU_MANIFEST_KEY),像常規(guī)Swarm對象一樣引用可變資源。更新資源的數(shù)據(jù)時,MRU_MANIFEST_KEY將指向新數(shù)據(jù)。
如果將可變資源更新與ENS解析器合約一起使用,則只需要一個初始交易來注冊MRU_MANIFEST_KEY。此密鑰將解析為最新版本的資源(更新資源不會更改密鑰)。
與Mutable資源更新有3種不同的交互方式:HTTP API,Golang API和Swarm CLI。
需要注意的事項:
只有創(chuàng)建資源的私鑰(地址)才能更新。
創(chuàng)建可變資源時,必須提供的參數(shù)之一是預期的更新頻率。指的是你的資源更新的頻率(以秒為單位)。雖然您可以以其他速率更新資源,但這樣做會減慢檢索資源的過程。
Swarm數(shù)據(jù)加密
現(xiàn)在,在POC 0.3中引入了對稱加密,可以與swarm up上傳命令一起使用。加密機制旨在保護您的信息,并使得分塊數(shù)據(jù)對于任何Swarm控制節(jié)點都不可讀。
Swarm使用Counter模式加密來加密和解密內(nèi)容。將內(nèi)容上傳到Swarm時,上傳的數(shù)據(jù)將拆分為4 KB塊。這些塊將全部使用分別隨機生成的加密密鑰進行編碼。在本地Swarm節(jié)點上加密,未加密的數(shù)據(jù)不與其他節(jié)點共享。單個塊(以及整個內(nèi)容)的引用將是編碼數(shù)據(jù)的哈希和解密密鑰的連接。這意味著引用將比標準的未加密Swarm引用(64字節(jié)而不是32字節(jié))更長。
當你的節(jié)點將內(nèi)容的加密塊與其他節(jié)點同步時,不會與其他節(jié)點共享完整引用(或任何方式的解密密鑰)。這意味著其他節(jié)點將無法訪問你的原始數(shù)據(jù),而且他們將無法檢測同步的塊是否已加密。
檢索數(shù)據(jù)時,只會在本地Swarm節(jié)點上解密。在整個檢索過程中,塊以加密形式遍布網(wǎng)絡(luò),并且沒有參與的節(jié)點能夠?qū)⑵浣饷?。它們僅在您用于下載的Swarm節(jié)點上解密和匯編。
需要注意的事項:
Swarm支持加密。由于無法撤消上傳,因此強烈建議不要上傳未加密的敏感數(shù)據(jù)和私有數(shù)據(jù)。用戶應避免上傳非法,有爭議或不道德的內(nèi)容。
Swarm目前通過使用--encrypt標志支持加密和未加密的swarm up命令。這在將來可能會發(fā)生變化。
加密功能是非確定性的(由于在每個上傳請求中生成隨機密鑰),API的用戶不應該依賴于等冪結(jié)果;因此,在啟用加密的情況下將相同內(nèi)容兩次上載到Swarm將不會產(chǎn)生相同的引用。
PSS
pss(Swarm上的Postal Service)是一種基于Swarm的消息傳遞協(xié)議,具有強大的隱私功能。 pss API通過API Reference中描述的JSON RPC接口公開,這里我們解釋了基本概念和功能。
注意:pss仍然是一個實驗性功能,正在積極開發(fā)中,可從Swarm的POC3開始使用。敬請期待更新。
基本概念
使用pss,您可以將消息發(fā)送到Swarm網(wǎng)絡(luò)中的任何節(jié)點。消息的路由方式與檢索塊請求的方式相同。 pss消息不是塊哈希引用,而是在覆蓋地址空間中指定目的地,而與消息有效負載無關(guān)。如果特定節(jié)點是完整的覆蓋地址,則該目的地可以描述該特定節(jié)點,如果部分指定了一個節(jié)點,則到該目的地之前,使用轉(zhuǎn)發(fā)kademlia通過devp2p對等連接中繼消息(使用kademlia路由通過中繼節(jié)點之間的半永久性對等TCP連接傳遞消息)。在目的地鄰域內(nèi),使用gossip廣播消息。
由于pss消息是加密的,因此最終接收者是可以解密消息的人。 可以使用非對稱或?qū)ΨQ加密方法來完成加密。
消息有效負載由接收方節(jié)點分派給消息處理程序,并通過API分派給訂戶。
注意:pss不保證此時的消息排序(盡力傳遞)和消息傳遞(例如,不會緩存和重放到脫機節(jié)點的消息)。
隱私功能
由于端到端加密,pss適合私人通信。
由于轉(zhuǎn)發(fā)kademlia,pss提供發(fā)件人匿名服務(wù)。
使用部分尋址,pss提供了收件人匿名的浮動比例:目標鄰域越大(顯示的預期收件人覆蓋地址的前綴越?。R別真實收件人就越困難。 另一方面,由于暗路由效率低,因此在匿名性與消息傳遞延遲和帶寬(因此成本)之間存在折衷。 這個選擇留給應用程序。
如果使用Handshakes模塊,則提供轉(zhuǎn)發(fā)保密服務(wù)。
注意事項:
始終對敏感內(nèi)容使用加密!對于加密內(nèi)容,上傳數(shù)據(jù)是“受保護的”,即只有那些了解對根塊的引用(文件的swarm哈希以及解密密鑰)才能訪問內(nèi)容的。由于發(fā)布此引用(在ENS或MRU上)需要其他步驟,因此只要用戶使用加密,就可以輕松地確保用戶不會手誤發(fā)布。即使不能保證刪除,尚未確保安全性的未訪問內(nèi)容最終也會從Swarm中消失,因為節(jié)點將被激勵,以便在存儲容量限制的情況下對其進行垃圾回收。
在執(zhí)行存儲保險之前,不保證上傳的內(nèi)容會持久存儲在測試網(wǎng)上(有關(guān)詳細信息,請參閱路線圖)。所有參與節(jié)點都應該考慮參與志愿服務(wù)而沒有任何正式義務(wù),并且應該按照他們的意愿刪除內(nèi)容。因此,在激勵系統(tǒng)運行之前,用戶在任何情況下都不應將Swarm視為安全存儲。
Swarm是一個持久數(shù)據(jù)結(jié)構(gòu),因此在Swarm中沒有刪除操作的概念。這是因為內(nèi)容被傳播到被激勵的swarm節(jié)點以提供服務(wù)。
3. SIA
狀態(tài):已上線
闡述:
SIA為租用者提供訪問去中心化云存儲平臺,以便利用更便宜,更快捷的方式使用對任何人開放且不受單一權(quán)威來源管理的數(shù)據(jù)中心。 Siacoin基于獨立的Sia區(qū)塊鏈,并在存儲租用者和提供者之間達成協(xié)議。
文件在上傳之前被劃分
Sia軟件在上傳之前將文件分為30個段,每個段都用于分發(fā)給世界各地的托管方。 此分發(fā)確保沒有托管方會出現(xiàn)單點故障,并加強了整體網(wǎng)絡(luò)正常運行時間和冗余。
文件段是使用名為Reed-Solomon擦除編碼的技術(shù)創(chuàng)建的,通常用于CD和DVD。 擦除編碼允許Sia以冗余方式劃分文件,其中30個段中的任何10個段可以完全恢復用戶的文件。
這意味著如果30個托管方中有20個離線,Sia用戶仍然可以下載他/她的文件。
每個文件段都是加密的
在離開租用者計算機之前,每個文件段都是加密的。 這可確保托管方僅存儲加密的用戶數(shù)據(jù)段。
這與亞馬遜等傳統(tǒng)云存儲提供商不同,后者默認不加密用戶數(shù)據(jù)。 Sia比現(xiàn)有解決方案更安全,因為托管方只存儲加密的文件段,而不是整個文件。
Sia使用Twofish算法,這是一種開源和安全加密標準,是高級加密標準(AES)競賽的決勝者。
使用智能合約將文件發(fā)送給托管方
使用Sia區(qū)塊鏈,租用者與托管方形成文件合約。 這些合約規(guī)定了租用者和托管方之間的定價,正常運行時間承諾和其他方面的關(guān)系。
文件合約是一種智能合約。 允許我們創(chuàng)建存儲在Sia區(qū)塊鏈中的加密服務(wù)級別協(xié)議(SLA)。
由于文件合約由網(wǎng)絡(luò)自動執(zhí)行,因此Sia不需要中介或受信任的第三方。
租用者和托管方使用Siacoin支付
租用者和托管方都使用Siacoin,這是一種基于Sia區(qū)塊鏈的獨特加密貨幣。 租用者使用Siacoin購買托管方的存儲容量,而托管方將Siacoin存入每個文件合約作為抵押品。
微支付使用稱為支付渠道的技術(shù)在租用者和托管方之間產(chǎn)生資產(chǎn)流動,這類似于比特幣的閃電網(wǎng)絡(luò)。 租用者和托管方之間的付款發(fā)生在鏈外,大大提高了網(wǎng)絡(luò)效率和可擴展性。 您可以在此處查看有關(guān)付款渠道的詳情:
由于托管方為每個存儲合同支付抵押品,因此它們對離線具有很強的抑制作用。
每當用戶和托管服務(wù)提供商在Sia上簽訂合約時,用戶必須提供津貼(以支付托管費用),并且托管服務(wù)提供商必須存入押金(以確保良好的行為)。合約訂立后,軟件將收取3.9%的津貼和押金,并支付給Siafunds的持有人,Siafunds是協(xié)議的次要代幣。制定協(xié)議的公司Nebulous Labs擁有約90%的Siafunds。
這當然是一個有趣的長期融資模式,是當今流行的“一次性”ICO模式的替代品;但是,此功能可能會給系統(tǒng)帶來結(jié)構(gòu)成本,使其比競爭對手費用更高。文件存儲可能是一個競爭激烈的市場,顯著降低了價格(與目前的中心化選項相比)。一旦部署了若干不同的去中心化云存儲平臺,這些協(xié)議將不僅與中心化替代方案競爭,而且還將彼此競爭。 Sia對津貼和押金分別征收3.9%的費用,但在大多數(shù)合約中,兩項費用均由用戶支付。其他協(xié)議沒有這種結(jié)構(gòu)成本,長期看來這種方式更優(yōu)惠并且對用戶更具吸引力。
價格會發(fā)生變化,但您可以預計在109個Siacoins地區(qū)進行支付或者可以選擇每個TB每月1美元的價格。
合同隨著時間的推移而更新
租用者進行預付款以便在文件合約中存儲,留出固定數(shù)量的Siacoin用于存儲和傳輸數(shù)據(jù)。文件合約通常為期90天。
當Sia在某個到期窗口內(nèi)時,會自動續(xù)訂合約。如果合約沒有續(xù)簽,Sia會在合約期結(jié)束時將任何未使用的金額退還給租用者。
當各個主機脫機時,Sia會在文件修復的過程中自動將租用者數(shù)據(jù)移動到新托管方。
托管方提交存儲證明
在文件合約結(jié)束時,托管方必須證明他/她正在存儲租用者的數(shù)據(jù)。稱為存儲證明。如果存儲證明在特定時間范圍內(nèi)出現(xiàn)在區(qū)塊鏈上,則托管方將收到付款。如果沒有,托管方將受到處罰。
通過稱為Merkle樹的技術(shù)實現(xiàn)存儲證明。 Merkle樹可以證明一小段數(shù)據(jù)是較大文件的一部分。這些證明的優(yōu)點是它們非常小,無論文件有多大。這很重要,因為證明永久存儲在區(qū)塊鏈中。
最后,Sia面臨著入門的重要障礙。目前,必須購買比特幣,使用它來購買Siacoins,并將Siacoins發(fā)送到Sia客戶端軟件以開始使用網(wǎng)絡(luò)。對于尚未持有加密貨幣的日常用戶,這是一個主要障礙。也為企業(yè)客戶提出了一個問題,因為出于監(jiān)管和財務(wù)風險的原因,大多數(shù)企業(yè)仍然不愿意持有或交易加密貨幣。迄今為止,Sia團隊沒有優(yōu)先考慮方案,可訪問性或我們自身的能力,也沒有表明這是一個重要的優(yōu)先事項。
注意事項:
與Swarm和IPFS不同,Sia是一個分布式云存儲系統(tǒng)。它不專注于創(chuàng)建替代http的基礎(chǔ)架構(gòu),而是專注于為云存儲創(chuàng)建分布式,自我維持且價格優(yōu)惠的市場。
4. Storj
狀態(tài):已上線
闡述:
Storj(發(fā)音為:storage)旨在成為一個無法審查,監(jiān)控或停機的云存儲平臺。它是首個去中心化端到端加密云存儲平臺之一。
Storj由一系列互鎖件組成,共同構(gòu)成一個統(tǒng)一的系統(tǒng)。當人們與該系統(tǒng)的各個部分進行交互時,他們對Storj的含義有了不同的看法。家庭用戶不需要任何Bridge或協(xié)議知識來共享存儲空間,并且開發(fā)人員不需要知道有關(guān)家庭用戶的任何信息以便使用Storj API。每個人在與同一系統(tǒng)交互時都可以擁有截然不同的體驗。那么Storj是什么?它是一個協(xié)議,一套軟件,也是設(shè)計,構(gòu)建和使用它的人。
Storj協(xié)議
Storj的核心技術(shù)是可執(zhí)行的點對點存儲合約。這是兩個人(或計算機)同意在不了解對方的情況下交換一定數(shù)量的存儲空間的方式。我們稱計算機銷售空間為“礦工”,計算機購買空間為“租用者”。租用者和礦工會面,協(xié)商協(xié)議,并將數(shù)據(jù)從租用者轉(zhuǎn)移到礦工處進行保管。
合約和審計
合約有一定的期限。在這段時間內(nèi),租用者會定期檢查礦工是否仍然有閑置空間。礦工用加密證明回答仍在保留文件。最后,租用者向礦工支付其收到并驗證過的每份證明。該挑戰(zhàn)過程 - 》證明 - 》付款被稱為“審計”,因為租用者正在審核礦工的存儲。在合約期結(jié)束時,礦工和租用者可以自由地重新協(xié)商或結(jié)束這種關(guān)系。
雖然核心技術(shù)允許任何類型的支付,但某些類型比其他類型更適合。傳統(tǒng)的支付系統(tǒng),如ACH或SEPA,非常不適合按審計付費。它們很慢,很難驗證,并且通常會收取高昂的費用。 Storj協(xié)議的理想支付方式是加密貨幣微支付渠道。支持小額付款,可立即驗證和安全,費用最低。意味著付款和審核可以盡可能地配對。
執(zhí)行遵循一個簡單的針鋒相對模式:如果礦工未通過審核,即離線或無法證明她仍然擁有數(shù)據(jù),則租用者無需支付。畢竟,他沒有繼續(xù)得到相應的服務(wù)。同樣,如果租用者離線或未能按時付款,礦工可以放棄數(shù)據(jù),并向其他人尋找新的合約。只要雙方都遵守合約條款,大家就可以愉快地結(jié)束交易。
將付款直接與審計配對可以最大限度地降低與陌生人交易的風險。如果文件在合約期內(nèi)中途被丟棄, 則租用者僅按審計證明支付實際執(zhí)行的服務(wù)。 他需要找到新的礦工,但不能花費太多。如果租用者消失或停止向礦工付款,那么礦工已經(jīng)收到了她以前所有服務(wù)的費用。 只損失一筆審計費用,以及找到新租用者購買該空間所需的時間。
Storj網(wǎng)絡(luò)
為了使租用者和礦工能夠相互遇見,合約和談判系統(tǒng)建立在分布式哈希表(DHT)之上。 DHT基本上是將一系列節(jié)點自我組織成有用網(wǎng)絡(luò)的一種方式。我們正在使用名為Kademlia的算法的修改版本。
DHT不是讓中央服務(wù)器注冊每個節(jié)點并協(xié)調(diào)所有合約,而是讓礦工和租用者將他們的合約通知廣播到大量節(jié)點。感興趣的節(jié)點可以輕松聯(lián)系提供合約的人。通過這種方式,礦工和租用者可以找到任意數(shù)量的潛在合作伙伴,并在廣泛的無權(quán)市場上購買或出售存儲空間。
為了尋找合作伙伴,節(jié)點可以簽署不完整的合約并將其發(fā)布到網(wǎng)絡(luò)。網(wǎng)絡(luò)上的其他節(jié)點可以訂閱某些類型的合約(即他們可能感興趣的類型)并響應這些發(fā)布的報價。該模型稱為publish-subscribe或pub / sub。節(jié)點可以輕松確定他們感興趣的合約,并將合約轉(zhuǎn)發(fā)給他們認為可能感興趣的其他節(jié)點。
總之,合約系統(tǒng)和網(wǎng)絡(luò)共同構(gòu)成了我們所謂的Storj協(xié)議。它描述了網(wǎng)絡(luò)上的節(jié)點如何運作,節(jié)點如何與其他節(jié)點通信,協(xié)議如何協(xié)商和執(zhí)行,以及在分布式系統(tǒng)上買賣存儲空間所需的一切。任何人都可以以任何方式實施Storj協(xié)議。
Storj工具箱
該協(xié)議包含安全地制定存儲合約所需的所有工具,但它缺少很多東西。它是有作用的,但還沒有開始使用。為了方便租用者使用,系統(tǒng)需要以服務(wù)水平協(xié)議(SLA)的形式提供可用性,帶寬和任何數(shù)量的其他承諾。交易軟件需要管理功能,以避免使用過多的資源和自動化功能來有效地部署到多個主機。 Storj沒有嘗試將所有這些功能融入核心協(xié)議,而是選擇在其他軟件層中解決這些問題。為了使這個網(wǎng)絡(luò)有用并且易于與之交互,Storj發(fā)布了兩個工具:Storj Share和Bridge。
Storj分享
Storj分享是參考交易客戶端。它允許用戶在任何機器上輕松設(shè)置和運行服務(wù)器場。 StorjShare可作為命令行界面(CLI)提供給更高級的用戶并實現(xiàn)自動化。 CLI允許用戶設(shè)置參數(shù),例如要共享的存儲空間量,存儲位置和付款地址。它還處理合同協(xié)商,審計響應和所有其他網(wǎng)絡(luò)通信。
Storj還發(fā)布了StorjShare圖形用戶界面(GUI),以簡化非技術(shù)用戶的交易過程。任何人都可以下載StorjShare GUI,填寫幾個字段,然后進入網(wǎng)絡(luò)。 GUI是CLI的一個包裝器,可以完成所有繁重的操作。初始設(shè)置后,用戶很少需要與StorjShare GUI進行互動??梢赃M行設(shè)置,最小化,并讓其在后臺運行。
如果用戶選擇進行數(shù)據(jù)收集,StorjShare還將收集系統(tǒng)遙測。 此數(shù)據(jù)可能包括硬盤容量和利用率以及有關(guān)網(wǎng)絡(luò)連接質(zhì)量的信息。 遙測數(shù)據(jù)被發(fā)送回Storj Labs,以便Storj開發(fā)人員可以使用這些數(shù)據(jù)來改進網(wǎng)絡(luò)和我們的軟件。 在未來,StorjShare甚至可以讓人們選擇加入特殊服務(wù)和計劃。
Bridge
為了幫助租用者使用網(wǎng)絡(luò),Storj還創(chuàng)建了Bridge。 Bridge旨在部署到生產(chǎn)服務(wù)器,以處理合同協(xié)商,審計,付款,可用性和許多其他需求。 Bridge通過擴展,應用程序編程接口(API)和客戶端的存儲資源公開這些服務(wù)??蛻舳酥荚诩傻狡渌麘贸绦蛑校员闳魏螒贸绦蚨伎梢允褂肂ridge服務(wù)器在Storj網(wǎng)絡(luò)上存儲數(shù)據(jù),而無需成為網(wǎng)絡(luò)的一部分。
顧名思義,Bridge是去中心化Storj網(wǎng)絡(luò)的中心化橋梁。它的目標是允許傳統(tǒng)應用程序與Storj網(wǎng)絡(luò)交互,就像使用任何其他對象存儲一樣。它提煉了p2p通信和存儲合同協(xié)商的所有復雜性來推送和拉取請求。與大多數(shù)對象存儲不同,Bridge不直接處理對象,而是處理對象的引用。它存儲指向分布式網(wǎng)絡(luò)上對象位置,以及審計這些對象所需的信息。理想情況下,沒有數(shù)據(jù)通過Bridge傳輸,而是直接傳輸?shù)骄W(wǎng)絡(luò)上的礦工。
Bridge Client處理所有客戶端工作以有效地使用網(wǎng)絡(luò)。它在文件進入網(wǎng)絡(luò)時對文件進行加密,保護隱私和安全。為了確??捎眯?,它會對文件進行分片,應用擦除編碼,并將分片傳播給多個礦工。然后,客戶端與Bridge通信以管理網(wǎng)絡(luò)上的每個分片位置,并幫助用戶在本地管理其加密密鑰。雖然Bridge Client的初始實現(xiàn)是Node.js包,但最終目標是提供多語言版本。
Storj API
Storj核心服務(wù)是對象存儲,類似于Amazon S3。此對象存儲由一組公共Bridge節(jié)點管理。我們維護基礎(chǔ)架構(gòu)以協(xié)商合約,管理付款,審計等。我們的客戶通過Bridge Client與我們的Bridge進行交互,甚至不必知道他們正在使用分布式網(wǎng)絡(luò)。 API是為可用性而設(shè)計的,因此在后臺處理所有復雜的內(nèi)容,以提供流暢,可擴展的開發(fā)體驗。
Storj利用其廣泛的網(wǎng)絡(luò)知識提供一流的服務(wù)質(zhì)量。Bridge做出的決定是基于與無數(shù)礦工的歷史互動。 Storj使用與其性能相關(guān)的數(shù)據(jù)以及他們自我報告的遙測數(shù)據(jù)來智能地在網(wǎng)絡(luò)上分發(fā)數(shù)據(jù)。 Storj優(yōu)化了高正常運行時間以及快速檢索。
帳戶管理功能可通過Bridge Client或Storj的精美網(wǎng)絡(luò)應用程序獲得。同樣,GUI的功能使體驗盡可能順暢。 Storj認為大多數(shù)面向開發(fā)人員的服務(wù)都忽略了用戶體驗(UX),因此,他們在設(shè)計產(chǎn)品時考慮了簡單性和可用性。他們的目標是提供一種細致的用戶體驗,而不是提供廣泛的云計算和存儲服務(wù)。
使用Storj API,他們正在嘗試為像我們這樣的開發(fā)人員構(gòu)建理想的工具:關(guān)注時間原型,高質(zhì)量代碼和快速迭代的人。他們希望為小型團隊,快速擴展的產(chǎn)品和個人開發(fā)人員提供工具和支持。他們理解每個開發(fā)人員實際上都是為自己和他/她關(guān)心的項目工作。這是對我們愛的傳遞。 Storj希望構(gòu)建一個不受影響的對象存儲庫,以便開發(fā)人員可以專注于構(gòu)建他們喜歡的項目。
5. MaidSafe
狀態(tài):已上線
闡述:
SAFE網(wǎng)絡(luò)是一個用于數(shù)據(jù)存儲和通信的分布式自治網(wǎng)絡(luò)。為每個人提供安全訪問(SAFE)。存儲在網(wǎng)絡(luò)上的數(shù)據(jù)具有極高的可用性,耐用性,隱私性和安全性。網(wǎng)絡(luò)有效擴展,網(wǎng)絡(luò)上存儲的數(shù)據(jù)的安全性隨著網(wǎng)絡(luò)的增長而增加。
為何選擇SAFE網(wǎng)絡(luò)?
現(xiàn)有的基于服務(wù)器客戶端的互聯(lián)網(wǎng)為操作服務(wù)器的人,而不是創(chuàng)建數(shù)據(jù)的人提供數(shù)據(jù)所有權(quán)。運營商可以限制,修改,刪除或出售該數(shù)據(jù),而無需創(chuàng)建該數(shù)據(jù)的用戶。在有利于創(chuàng)建者的條款上,分發(fā)用戶數(shù)據(jù)的聯(lián)合協(xié)議的接受度和可用性差,促使創(chuàng)建SAFE網(wǎng)絡(luò)。
默認情況下,在SAFE網(wǎng)絡(luò)上存儲數(shù)據(jù)的客戶端具有強加密功能,可以通過靈活的權(quán)限層控制訪問。