天天看點

Swarm的基本認知

  Swarm 是分布式存儲平台和内容分發服務,是以太坊 web3 棧的本地基礎層服務。Swarm 的主要目标是提供充分分散和備援存儲的以太坊公共記錄,尤其是存儲和分發 DApp 的代碼和資料以及區塊鍊資料。從經濟角度來看,它允許參與者有效彙集他們的存儲容量和帶寬資源,以給網絡的所有參與者提供這些服務,同時接受以太坊的激勵。

  目标

  Swarm 更廣泛的目标,是為去中心化的 web 應用程式(DApp)開發人員提供基礎設施服務,特别是:消息傳遞、資料流、點對點記賬、可變資源更新、存儲保險、監管掃描和修複、支付管道和資料庫服務。

  從終端使用者的角度來看,Swarm 和網際網路的差别不大,除了上傳不托管在特定的伺服器上。Swarm 提供了一個點到點的存儲和服務解決方案,它具有 DDos 抗性、零停機、容錯和審查及自我維持的特性,它内置了激勵系統,通過點對點記賬,允許使用者為交易資源進行支付。Swarm 旨在和以太坊的 devp2p 多協定網絡層以及以太坊區塊鍊進行深度內建,以進行域名解析(利用 ENS)、服務支付和内容可用性保證。

  請注意: 為了解析 ENS 域名,Swarm 節點必須要連接配接到以太坊區塊鍊上(主網或測試網)。

  概述

  Swarm 旨在給新的去中心化網際網路提供基礎層的基礎設施。Swarm 是點對點的節點網絡,通過彼此之間貢獻資源(存儲、消息轉發、支付處理)提供分布式數字服務。以太坊基金會運作 Swarm 測試網,可以用來以類似于以太坊測試網絡(ropsten)的方式測試功能。每個人都可以通過在自己的伺服器、桌上型電腦、筆記本電腦或移動裝置上運作 Swarm 客戶節點加入到網絡中。請參閱 《Swarm 入門(

  swarm-guide.readthedocs/en/latest/gettingstarted.html#getting-started)》一文以了解操作方法。Swarm 用戶端是以太坊棧的一部分,參考實作是用 golang 編寫的,可以在 go-ethereum 存儲庫中找到它。目前在所有節點上運作的是 POC 0.3 版。

  Swarm 提供 本地 HTTP 代理 API,DApp 或指令行工具可以用來和 Swarm 進行互動。像 消息傳遞 這樣的子產品隻能基于 PRC-JSON API 才可使用。在測試網(testnet)上的基礎服務提供公共網關,用于輕松示範功能和允許免費的通路,以便人們無需運作任何自己的節點即可嘗試 Swarm。

  Swarm 是 devp2p 網絡的節點集合,其中的每個節點在同一個網絡 ID 上運作 bzz 協定套件。

  Swarm 節點也可以連接配接到一個(或多個)以太坊區塊鍊上,以進行域名解析,并連接配接到一個以太坊區塊鍊進行帶寬和存儲補償。運作相同網絡 ID 的節點應該連接配接到相同的區塊鍊上以進行支付。Swarm 網絡由其網絡 ID 辨別,該網絡 ID 是一個任意整數。

  Swarm 允許上傳(upload)和消失(disappear),這意味着任何節點可以隻上傳内容給 Swarm,然後就可以下線。隻要節點沒有丢失或變得不可用,該内容将仍舊可以通路,這是因為有一個“同步”的過程,節點持續地在彼此之間傳遞可用資料。

  公共網關

  Swarm 提供本地 HTTP 代理 API,DApp 可以用來和 Swarm 進行互動。以太坊基金會在托管公共網關,該網關允許免費通路,是以,人們甚至無需運作自己的

賣二手手遊

節點即可嘗試 Swarm。

  Swarm 公共網關可以在 swarm-gateways.net上找到,上面一直都運作着*的 Swarm 穩定版。

  目前,該網關隻接受限制大小的上傳。将來,上傳到該網關的功能很可能完全消失。

  上傳和下載下傳

  資料上傳内容由這些步驟組成:“上傳”内容到本地 Swarm 節點,接着本地 Swarm 節點用其在網絡中的對等點“同步”所生成的資料塊。同時,下載下傳内容由這些步驟組成:本地 Swarm 節點查詢在網絡中的對等點以擷取相關的資料塊,然後在本地重組這些内容。

  内容解析器:ENS

  為了解析 ENS 名稱,Swarm 節點必須連接配接到以太坊區塊鍊(主網或測試網)。

  ENS 是個系統,Swarm 用它來實作以人類可讀的名稱(如 theswarm.eth)引用内容。它的操作類似于 DNS 系統,把人類可讀的名稱轉換成機器辨別符,在此,即你正在引用的内容的 Swarm 哈希。通過注冊一個名稱,并把它解析成網站的根清單的内容哈希值,使用者可以通過 URL(如 bzz://theswarm.eth/)通路該網站。

  目前,主流的浏覽器(如 Chrome、Firefox 或 Safari)不支援 bzz 協定。目前,如果要通過這些浏覽器通路 bzz 協定,必須使用 HTTP 網關(如

  swarm-gateways/bzz:/theswarm.eth/)或者使用支援 bzz 協定的浏覽器(如 Mist)。

  可變資源更新(Mutable Resource Updates)

  可變資源更新是 Swarm POC3 上的一項 高度實驗性的功能 。它正在積極開發中,是以,有些東西可能會有變化。

  我們在這份指南中已經了解到,當我們在 Swarm 中改變資料時,我們上傳的資料所傳回的哈希值會以無法預料的方式變化。通過可變資源更新,Swarm 提供一種内置方式,可以對更改資料保持一個持久的辨別符。

  為了保持與更改資料有相同的指針,常用的方法是利用以太坊命名服務 ENS。但是,ENS 是一個鍊上功能,它限制了其他地方的功能:

  每個 ENS 解析器的更新都需要 gas 才能進行。更改資料不可能比挖出新區塊的速度更快。正确的 ENS 解析方案要求始終同步到區塊鍊。

  可變資源更新允許我們用非變量辨別符來更改資料,無需使用 ENS。利用在建立資源時獲得的密鑰,可以像普通 Swarm 對象一樣引用可變資源。

  如果同時使用 ENS 解析器合約和可變資源更新,隻需要一個初始事務來注冊 MRU_MAINFEST_KEY。該密鑰将解析到資源的最近版本上(更新該資源不會改變該密鑰)。有 3 種和可變資源更新進行互動的方法:HTTP API、Golang API 和 Swarm CLI。

  注意事項:

  隻有建立該資源的私鑰(位址)可以更新它。在建立可變資源時,必須要提供的參數之一是預期的更新頻率。這表明該資源多快(以秒計算)被更新一次。盡管你可以以其他的速率更新該資源,但這麼做會減慢索引該資源的處理過程。

  Swarm 上的加密

  在 POC 0.3 中引入了對稱加密技術,現在可以很容易随 Swarm up 上傳指令一起使用對稱加密了。該加密機制是用來保護資訊,并使得在處理任何 Swarm 節點時都不可讀分塊資料。

  Swarm 使用 計數器模式加密技術 來加密和解密内容。當上傳内容到 Swarm 時,該上傳的資料被分為 4KB 大小的塊。這些塊都将用獨立的随機生成的加密密鑰來編碼。這個加密過程在本地 Swarm 節點上發生,沒被加密的資料不與其他節點共享。單個塊(和整個内容)的引用将是編碼資料哈希值和加密密鑰的組合。這意味着引用将比标準無加密的 Swarm 引用長一些(不是 32 個位元組,而是 64 個位元組)。

  當你的節點将你的内容的加密塊與其他節點同步時,它不與其他節點共享完整的引用(或任何方式的解密密鑰)。這意味着其他節點無法通路你的原始資料,此外,它們也無法偵測到同步的塊是否經過加密。

  檢索資料時,隻在本地 Swarm 節點上将它解密。在整個檢索過程中,這些塊以加密的形式周遊網絡,參與的對等節點無法解密它們。它們隻在用于下載下傳的 Swarm 節點上進行解密和重組。

  Swarm 支援加密。由于無法撤銷上傳,是以強烈建議不上傳未加密的敏感和私密資料。使用者應該避免上傳非法的、有争議的或不道德的内容。Swarm 目前即支援加密也支援未加密的 swarm up 指令,通過使用 --encrypt 參數來辨別。将來可能有變化。加密功能是非确定性的(因為每個上傳請求生成的密鑰是随機的),API 的使用者不應該依賴結果的幂等性;這樣,在啟用加密的情況下,同樣的内容兩次上傳到 Swarm 所産生的引用是不同的。

  作者:諾亞科技;來自鍊得得内容開放平台“得得号”,本文僅代表作者觀點,不代表鍊得得官方立場凡“得得号”文章,原創性和内容的真實性由投稿人保證,如果稿件因抄襲、作假等行為導緻的法律後果,由投稿人本人負責得得号平台釋出文章,如有侵權、違規及其他不當言論内容,請廣大讀者監督,一經證明,平台會立即下線。如遇文章内容問題,請聯系微信:chaindd123