以太坊作為全球領(lǐng)先的智能合約平臺(tái),其生態(tài)系統(tǒng)日益龐大,以太坊主網(wǎng)本身并不適合存儲(chǔ)大量數(shù)據(jù),因?yàn)榇鎯?chǔ)成本高昂且會(huì)影響網(wǎng)絡(luò)性能,為了解決這個(gè)問題,以太坊社區(qū)開發(fā)了 Swarm(也常被稱為 Bzz),一個(gè)去中心化的存儲(chǔ)和內(nèi)容分發(fā)服務(wù),旨在為以太坊提供強(qiáng)大的數(shù)據(jù)層,本教程將帶你了解 Swarm 的基本概念,并指導(dǎo)你如何開始使用它。
什么是 Swarm
Swarm 是一個(gè)由以太坊基金會(huì)主導(dǎo)開發(fā)的開源項(xiàng)目,它構(gòu)建一個(gè)分布式的存儲(chǔ)、帶寬和計(jì)算系統(tǒng),它的目標(biāo)是:
- 去中心化存儲(chǔ):將數(shù)據(jù)分割成小塊,并通過加密方式存儲(chǔ)在網(wǎng)絡(luò)中的多個(gè)節(jié)點(diǎn)上,確保數(shù)據(jù)的高可用性和抗審查性。
- 內(nèi)容可尋址:每個(gè)數(shù)據(jù)塊都通過其 SHA3 哈希值(稱為“地址”)進(jìn)行唯一標(biāo)識(shí),這意味著內(nèi)容本身決定了其地址,任何微小的改動(dòng)都會(huì)導(dǎo)致地址完全不同。
- 以太坊數(shù)據(jù)層:Swarm 旨在成為以太坊的“硬盤”,存儲(chǔ) DApp 的前端代碼、用戶數(shù)據(jù)、元數(shù)據(jù)等,使得智能合約能夠與這些數(shù)據(jù)進(jìn)行交互。
- 經(jīng)濟(jì)激勵(lì):通過內(nèi)置的“郵票”(Stamp)機(jī)制,使用者需要支付少量以太坊來激勵(lì)節(jié)點(diǎn)存儲(chǔ)和提供服務(wù),形成自給自足的經(jīng)濟(jì)系統(tǒng)。
Swarm 的核心概念
在開始使用 Swarm 之前,了解幾個(gè)核心概念非常重要:
- Manifest (清單文件):類似于傳統(tǒng) Web 服務(wù)器上的
index.html,它告訴 Swarm 客戶端哪個(gè)文件是默認(rèn)的入口點(diǎn),以及如何組織多個(gè)文件,清單文件本身也是一個(gè) JSON 文件。 - Stamp (郵票):這是你發(fā)布數(shù)據(jù)到 Swarm 時(shí)支付的費(fèi)用,它包含了你想要存儲(chǔ)的數(shù)據(jù)的引用(通常是一個(gè)
enr地址,即 Ethereum Node Record),支付后,你會(huì)收到一個(gè)收據(jù),證明你已經(jīng)為數(shù)據(jù)付費(fèi)并可以開始分發(fā)。 - ENR (Ethereum Node Record):Swarm 節(jié)點(diǎn)的身份標(biāo)識(shí),包含了節(jié)點(diǎn)的網(wǎng)絡(luò)地址和公鑰等信息,用于節(jié)點(diǎn)間的發(fā)現(xiàn)和通信。
swarm-cli或swarm-uploader:與 Swarm 網(wǎng)絡(luò)交互的命令行工具或庫,用于上傳、下載和管理數(shù)據(jù)。
Swarm 環(huán)境搭建與安裝
最常用的 Swarm 客戶端是基于 Go 語言開發(fā)的 swarm,以下是安裝和啟動(dòng)基本 Swarm 節(jié)點(diǎn)的步驟:
安裝 Go 環(huán)境 (如果尚未安裝) Swarm 是 Go 程序,需要先安裝 Go,你可以從 Go 官方網(wǎng)站 下載并安裝適合你操作系統(tǒng)的版本。
安裝 Swarm
你可以通過 go get 命令來安裝 Swarm:
go get github.com/ethersphere/bee
安裝完成后,bee 可執(zhí)行文件通常會(huì)位于你的 Go 安裝目錄的 bin 文件夾下。
初始化并啟動(dòng) Swarm 節(jié)點(diǎn) 打開終端或命令行工具,執(zhí)行以下命令初始化節(jié)點(diǎn):
bee init --configpath /path/to/your/config/dir
這會(huì)在你指定的目錄下生成配置文件 config.yaml。
然后啟動(dòng)節(jié)點(diǎn):
bee start --configpath /path/to/your/config/dir
首次啟動(dòng)時(shí),節(jié)點(diǎn)會(huì)下載一些必要的數(shù)據(jù),并嘗試連接到其他 Swarm 節(jié)點(diǎn)加入網(wǎng)絡(luò),啟動(dòng)成功后,你的節(jié)點(diǎn)就成了 Swarm 網(wǎng)絡(luò)中的一個(gè)存儲(chǔ)節(jié)點(diǎn)。
檢查節(jié)點(diǎn)狀態(tài) 你可以通過以下命令查看節(jié)點(diǎn)是否正常運(yùn)行以及連接情況:
bee debug info
使用 Swarm:上傳與下載數(shù)據(jù)
安裝 Swarm CLI 工具
為了方便上傳和下載文件,我們可以使用 swarm-cli,你可以從其 GitHub 倉庫 下載或按照說明安裝。
上傳文件
假設(shè)你有一個(gè)名為 index.html 的文件,想要上傳到 Swarm:
swarm-cli up index.html
上傳成功后,你會(huì)得到一個(gè)文件的哈希地址(以 0x 開頭,后面跟著 64 個(gè)字符),這就是你在 Swarm 上訪問這個(gè)文件的唯一標(biāo)識(shí)。
下載文件 如果你有文件的哈希地址,可以使用以下命令下載:
swarm-cli down <文件哈希地址> -o output.html
這會(huì)將文件下載到當(dāng)前目錄,并命名為 output.html。
上傳目錄
Swarm 也支持上傳整個(gè)目錄。swarm-cli 會(huì)自動(dòng)為目錄生成一個(gè)清單文件(manifest)。
swarm-cli up my_directory/
同樣,你會(huì)得到一個(gè)指向該目錄根目錄清單文件的哈希地址。
通過 HTTP 網(wǎng)關(guān)訪問 Swarm
Swarm 提供了公共的 HTTP 網(wǎng)關(guān),你可以通過瀏覽器直接訪問 Swarm 上的內(nèi)容,格式為:
https://swarm-gateways.net/bzz/<文件哈希地址>
或者使用其他網(wǎng)關(guān),如 https://gateway.swarm.cloud/bzz/<文件哈希地址>。
創(chuàng)建簡單的去中心化網(wǎng)站 (DWeb)
利用 Swarm,你可以輕松創(chuàng)建一個(gè)簡單的去中心化網(wǎng)站:
- 準(zhǔn)備網(wǎng)站文件:創(chuàng)建一個(gè)
index.html文件,以及可能需要的 CSS 和 JavaScript 文件。 - 上傳文件:將所有網(wǎng)站文件上傳到 Swarm,確保
index.html是你上傳的根目錄或指定為入口點(diǎn)。 - 獲取哈希地址:上傳完成后,你會(huì)得到
index.html或清單文件的哈希地址。 - 訪問網(wǎng)站:通過 Swarm HTTP 網(wǎng)關(guān)訪問這個(gè)哈希地址,你的網(wǎng)站就會(huì)在瀏覽器中顯示。
Swarm 的優(yōu)勢(shì)與挑戰(zhàn)
優(yōu)勢(shì):
- 去中心化:數(shù)據(jù)分布在多個(gè)節(jié)點(diǎn)上,單點(diǎn)故障風(fēng)險(xiǎn)低。
- 抗審查:沒有中央機(jī)構(gòu)可以輕易刪除或篡改你的數(shù)據(jù)。
- 與以太坊集成:天然支持與智能合約交互,為 DApp 提供強(qiáng)大的存儲(chǔ)能力。

- 成本效益:相較于傳統(tǒng)的中心化云存儲(chǔ),長期來看可能更具成本優(yōu)勢(shì)(尤其是在數(shù)據(jù)量大時(shí))。
挑戰(zhàn):
- 用戶體驗(yàn):目前對(duì)于普通用戶來說,使用門檻相對(duì)較高,需要一定的技術(shù)背景。
- 性能:數(shù)據(jù)上傳和下載速度可能依賴于網(wǎng)絡(luò)中節(jié)點(diǎn)的數(shù)量和連接質(zhì)量。
- 數(shù)據(jù)持久性:雖然數(shù)據(jù)被復(fù)制到多個(gè)節(jié)點(diǎn),但如果節(jié)點(diǎn)下線且數(shù)據(jù)未被足夠多節(jié)點(diǎn)復(fù)制,仍存在數(shù)據(jù)丟失風(fēng)險(xiǎn),激勵(lì)機(jī)制需要完善以確保節(jié)點(diǎn)長期提供服務(wù)。
- 成熟度:相較于 IPFS 等其他去中心化存儲(chǔ)方案,Swarm 仍在快速發(fā)展中,生態(tài)系統(tǒng)和工具鏈有待完善。
總結(jié)與展望
Swarm 作為以太坊生態(tài)系統(tǒng)的重要組成部分,為去中心化應(yīng)用提供了不可或缺的存儲(chǔ)解決方案,通過本教程,你應(yīng)該對(duì) Swarm 有了初步的了解,并能夠嘗試上傳和下載文件,甚至創(chuàng)建一個(gè)簡單的去中心化網(wǎng)站。
隨著以太坊 2.0 的發(fā)展以及去中心化 Web(Web3)概念的普及,Swarm 有望在數(shù)據(jù)存儲(chǔ)和內(nèi)容分發(fā)領(lǐng)域扮演更加重要的角色,我們可以期待更友好的用戶界面、更完善的工具鏈以及更廣泛的實(shí)際應(yīng)用場(chǎng)景,如果你對(duì)構(gòu)建真正去中心化的應(yīng)用感興趣,Swarm 絕對(duì)是一個(gè)值得深入學(xué)習(xí)和探索的技術(shù)。
希望這篇教程對(duì)你有幫助!如果你在學(xué)習(xí)過程中遇到問題,可以查閱 Swarm 的 官方文檔 或加入社區(qū)尋求支持。