Kubo:IPFS 在 GO 中的實現
IPFS 的第一個實作。
Kubo 是第一個 IPFS 實施方案,也是當今使用最廣泛的實施方案。實現星際檔案系統- 用於內容尋址的 Web3 標準,可與 HTTP 互通。因此由 IPLD 的資料模型和用於網路通訊的 libp2p 提供支援。 Kubo 是用 Go 寫的。
功能集
將 IPFS 節點作為網路服務運行,該網路服務是 LAN 和 WAN DHT 的一部分
用於可信任和不可信內容檢索的 HTTP 網關( /ipfs
和/ipns
)功能
用於委託路由查找的 HTTP 路由 V1 ( /routing/v1
) 用戶端和伺服器實現
HTTP Kubo RPC API ( /api/v0
) 用於存取和控制守護程序
基於 ( /api/v0
) RPC API 的命令列介面
用於管理 Kubo 節點的 WebUI
對公共節點運營商的內容屏蔽支持
查看列表
IPFS 是一個全域的、版本化的、點對點的檔案系統。它結合了先前系統(例如 Git、BitTorrent、Kademlia、SFS 和 Web)的好創意。它就像一個單一的 BitTorrent 群,交換 git 物件。 IPFS 提供了一個像 HTTP Web 一樣簡單的接口,但具有內建的永久性。您也可以將世界掛載到 /ipfs。
有關更多信息,請參閱:https://docs.ipfs.tech/concepts/what-is-ipfs/
在打開問題之前,請考慮使用以下位置之一,以確保您在正確的位置打開線程:
此儲存庫中的 kubo(以前稱為 go-ipfs)實作錯誤。
ipfs/docs issues 中的文件問題。
IPFS設計中的 ipfs/specs 問題。
ipfs/notes問題的新思路探索。
在 IPFS 論壇上提出問題並與社區其他成員會面。
或與我們聊天。
GitHub 上的里程碑
久保是什麼?
什麼是IPFS?
下一個里程碑
目錄
安全問題
最低系統需求
安裝
安裝Go
下載並編譯IPFS
故障排除
交叉編譯
Mac埠
尼克
自製
巧克力口味
舀
ArchLinux
Gentoo Linux
尼克
索魯斯
開放SUSE
吉克斯
折斷
Ubuntu PPA
更新中
使用 ipfs 更新
使用 IPFS 下載版本
碼頭工人
官方預先建置二進位文件
非官方 Linux 軟體包
非官方 Windows 軟體包
非官方 MacOS 軟體包
從原始碼構建
入門
用法
一些值得嘗試的事情
故障排除
套餐
發展
已實施子系統圖
CLI、HTTP-API、架構圖
測試
開發依賴
開發者筆記
維護者資訊
貢獻
執照
請關注SECURITY.md
。
IPFS 可以在大多數 Linux、macOS 和 Windows 系統上運作。我們建議在至少具有 4 GB RAM 和 2 個 CPU 核心的電腦上運行它(kubo 是高度並行的)。在記憶體較少的系統上,它可能不完全穩定,您需要自行承擔風險。
IPFS 的規格下載說明位於:https://docs.ipfs.tech/install/。如果您對 IPFS 開發不感興趣,強烈建議您遵循這些說明。
官方映像發佈於https://hub.docker.com/r/ipfs/kubo/:
?發布
latest
和release
標籤始終指向最新的穩定版本
vN.NN
指向特定的發布標籤
這些是生產級圖像。
?我們也提供實驗性開發人員版本
master-latest
始終指向master
分支的HEAD
master-YYYY-DD-MM-GITSHA
指向master
分支的特定提交
這些標籤由開發人員用於內部測試,不適用於最終用戶或生產用途。
$ docker pull ipfs/kubo:latest$ docker run --rm -it --net=主機 ipfs/kubo:latest
若要自訂節點,請透過-e
或透過在/container-init.d
中安裝腳本來傳遞必要的配置。
了解更多 https://docs.ipfs.tech/install/run-ipfs-inside-docker/
官方二進位檔案發佈於 https://dist.ipfs.tech#kubo:
從那裡:
點擊頁面右側的藍色“下載 Kubo”。
開啟/解壓縮存檔。
將 kubo ( ipfs
) 移到您的路徑( install.sh
可以為您完成)。
如果您無法存取 dist.ipfs.tech,您也可以從以下位置下載 kubo (go-ipfs):
該專案的 GitHub 發布頁面
/ipns/dist.ipfs.tech
位於 dweb.link 網關
IPFS 有一個更新工具,可以透過ipfs update
存取。該工具沒有與 IPFS 一起安裝,以保持該邏輯獨立於主程式碼庫。若要安裝ipfs-update
工具,請在此處下載。
列出 Kubo (go-ipfs) 實作的可用版本:
$ ipfs cat /ipns/dist.ipfs.tech/kubo/versions
然後,要查看上一個命令 ( $VERSION
) 中版本的可用建置:
$ ipfs ls /ipns/dist.ipfs.tech/kubo/$版本
要下載版本的給定建置:
$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # darwin 32 位元建置$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_ $ VERSION_darwin-amd64.tar.gz # darwin 64 位元建置$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # freebsd 64 位元建置 ipns .ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-386.tar.gz # linux 32位元建置$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64 .tar.gz # linux 64 位元build$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-arm.tar.gz # linux arm build$ ipfs get /ipns/dist.ipfs. tech/kubo/$ VERSION/kubo_$VERSION_windows-amd64.zip # Windows 64 位元版本
ArchLinux
Gentoo Linux
尼克
索魯斯
開放SUSE
吉克斯
折斷
Ubuntu PPA
# pacman -S 久保
https://wiki.gentoo.org/wiki/Kubo
# 出現 -a net-p2p/kubo
https://packages.gentoo.org/packages/net-p2p/kubo
使用純功能套件管理器 Nix,您可以像這樣安裝 kubo (go-ipfs):
$ nix-env -i kubo
您也可以使用套件的屬性名稱(也是kubo
來安裝該套件。
Solus 套件
$ sudo eopkg install kubo
您也可以透過 Solus 軟體中心安裝它。
go-ipfs 社群包
go-ipfs 的社群包並沒有過時。
不再支持,請參閱 kubo#8688 中的基本原理。
Launchpad 上的 PPA 首頁。
sudo add-apt-repository ppa:twdragon/ipfs 須藤apt更新 sudo apt install ipfs-kubo
sudo suecho 'deb https://ppa.launchpadcontent.net/twdragon/ipfs/ubuntu <> main' >> /etc/apt/sources.list.d/ipfsecho 'deb-src https://ppa. launchpadcontent.net/twdragon/ipfs/ubuntu < > main' >> /etc/apt/sources.list.d/ipfsexitsudo apt update sudo apt install ipfs-kubo
其中<
是 Ubuntu 發行版的代號(例如,22.04 LTS 為jammy
)。在首次安裝期間,套件維護腳本可能會自動詢問您要使用哪個網路設定檔、CPU 計費模型和/或現有節點設定檔。
注意:此方法也適用於任何相容的基於 Debian 的發行版,其中包含libc6
,並且 APT 作為套件管理器。
巧克力口味
舀
不再支持,請參閱 kubo#9341 中的基本原理。
Scoop 在其「額外」儲存桶中將 kubo 作為kubo
提供。
PS> 湯匙桶增加額外內容 PS> 舀安裝 kubo
Mac埠
尼克
自製
ipfs 套件目前指向 kubo (go-ipfs) 並且正在維護中。
$ sudo port install ipfs
在 macOS 中,您可以使用純功能套件管理器 Nix:
$ nix-env -i kubo
您也可以使用套件的屬性名稱(也是kubo
來安裝該套件。
Homebrew 公式 ipfs 也得到維護。
$ brew install --formula ipfs
kubo 的建置系統需要 Go 和一些標準 POSIX 建置工具:
GNU 使
git
GCC(或其他一些與 Go 相容的 C 編譯器)(選購)
若要在不使用 GCC 的情況下進行構建,請使用CGO_ENABLED=0
進行構建(例如, make build CGO_ENABLED=0
)。
如果需要更新:下載最新版本的 Go。
您需要將 Go 的 bin 目錄新增至$PATH
環境變數中,例如,將這些行新增至/etc/profile
(對於系統範圍的安裝)或$HOME/.profile
:
export PATH=$PATH:/usr/local/go/bin export PATH=$PATH:$GOPATH/bin
(如果遇到問題,請參閱 Go 安裝說明)。
$ git clone https://github.com/ipfs/kubo.git $ cd kubo $ make install
或者,您可以執行make build
來建置 go-ipfs 二進位檔案(將其儲存在cmd/ipfs/ipfs
中),而無需安裝它。
注意:如果您收到類似「致命錯誤:stdlib.h:沒有這樣的檔案或目錄」的錯誤,則表示您缺少 C 編譯器。使用CGO_ENABLED=0
重新運行make
或安裝 GCC。
針對不同平台的編譯就像執行一樣簡單:
make build GOOS=myTargetOS GOARCH=myTargetArchitecture
有單獨的說明可用於在 Windows 上進行建置。
需要git
才能讓go get
取得所有相依性。
套件管理器通常包含過時的golang
套件。確保go version
報告至少為 1.10。有關如何安裝 go 的信息,請參閱上文。
如果您對開發感興趣,請同時安裝開發依賴項。
Shell 指令補全可以使用ipfs commands completion
子指令之一產生。閱讀 docs/command-completion.md 以了解更多資訊。
請參閱 Misc 資料夾,以了解如何將 IPFS 連接到 systemd 或您的發行版所使用的任何初始化系統。
要開始使用 IPFS,您必須先在系統上初始化 IPFS 的設定文件,這是透過ipfs init
完成的。有關它所採用的可選參數的信息,請參閱ipfs init --help
。初始化完成後,您可以使用ipfs mount
、 ipfs add
以及任何其他指令來探索!
「ipfs 在本地工作」的基本證明:
echo "hello world" > hello ipfs add hello # This should output a hash string that looks something like: # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o ipfs cat
有關與 Kubo 的程式設計交互,請參閱我們的 HTTP/RPC 用戶端清單。
如果您以前安裝過 IPFS,並且在取得新版本時遇到問題,請嘗試刪除(或備份到其他位置)您的 IPFS 設定目錄(預設為 ~/.ipfs)並重新執行ipfs init
。這會將設定檔重新初始化為其預設值,並清除本機資料儲存中的任何錯誤條目。
請將一般問題和幫助請求直接發送到我們的論壇。
如果您認為自己發現了錯誤,請檢查問題列表,如果在那裡沒有看到您的問題,請透過 Matrix 聊天與我們交談,或提交您自己的問題!
請參閱 GO 文件中的 IPFS。
一些可以幫助您開始使用程式碼庫的地方:
主檔案:./cmd/ipfs/main.go
CLI 指令:./core/commands/
Bitswap(資料交易引擎):go-bitswap
庫檔案2p
libp2p:https://github.com/libp2p/go-libp2p
DHT:https://github.com/libp2p/go-libp2p-kad-dht
IPFS: Add
指令揭秘
WIP :這是此特定實現的各個子系統的高階架構圖。更新他們的互動方式。歡迎任何有建議的人在這裡評論我們如何改進!
起源
描述:點的意思是「可能會消失」。 「舊版」部分是一些命令的薄包裝,用於在新系統和舊系統之間進行轉換。 「守護程式」圖上的灰色部分錶示程式碼都是相同的,只是我們根據是在客戶端還是伺服器上運行來開啟一些部分和關閉一些部分。
make test
如果更改協定緩衝區,則需要安裝協定編譯器。
在 docs 上尋找更多供開發人員使用的文檔
Kubo 由造船廠維護。
此儲存庫是 Shipyard GO Triage 分類的一部分。
發布流程
我們❤️所有貢獻者;如果沒有你,這個專案就不會是現在這個樣子!如果您想提供協助,請參閱 CONTRIBUTING.md。
此儲存庫遵循 IPFS 行為準則。
IPFS 社群成員在此為討論論壇類別提供 Kubo 支援。
需要 IPFS 本身的幫助嗎?了解如何取得協助和支持,請造訪 https://ipfs.tech/help。
此專案根據 Apache 2.0 和 MIT 條款獲得雙重授權:
Apache 許可證,版本 2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
MIT 授權(LICENSE-MIT 或 http://opensource.org/licenses/MIT)