久保:GOでのIPFS実装
IPFS の最初の実装。
Kubo は最初の IPFS 実装であり、今日では最も広く使用されています。 Interplanetary Filesystemの実装 - コンテンツ アドレス指定の Web3 標準であり、HTTP と相互運用可能です。したがって、IPLD のデータ モデルとネットワーク通信用の libp2p を利用します。 「久保」は囲碁で書きます。
機能セット
LAN および WAN DHT の一部であるネットワーク サービスとして IPFS ノードを実行します
信頼できるコンテンツとトラストレスなコンテンツを取得するための 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 などの以前のシステムの優れたアイデアを組み合わせています。これは、git オブジェクトを交換する単一の BitTorrent の群れのようなものです。 IPFS は、HTTP Web と同じくらいシンプルですが、永続性が組み込まれたインターフェイスを提供します。 /ipfs でワールドをマウントすることもできます。
詳細については、https://docs.ipfs.tech/concepts/what-is-ipfs/ を参照してください。
問題を開く前に、次のいずれかの場所を使用してスレッドを適切な場所で開いているかどうかを検討してください。
このリポジトリには、kuro (以前は go-ipfs という名前でした)実装のバグがあります。
ipfs/docs の問題におけるドキュメントの問題。
ipfs/specs における IPFS設計の問題。
ipfs/notes の問題における新しいアイデアの探求。
IPFS フォーラムで質問したり、コミュニティの他のメンバーと交流したりできます。
またはチャットしてください。
GitHub のマイルストーン
久保って何?
IPFSとは何ですか?
次のマイルストーン
目次
セキュリティの問題
最小システム要件
インストール
Goをインストールする
IPFS をダウンロードしてコンパイルする
トラブルシューティング
クロスコンパイル
Macポート
ニックス
自作
チョコレートティ
スクープ
ArchLinux
Gentoo Linux
ニックス
ソルス
openSUSE
ギクス
スナップ
Ubuntu PPA
更新中
ipfs-update の使用
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/kuro:latest$ docker run --rm -it --net=host ipfs/kuro:latest
ノードをカスタマイズするには、 -e
経由で、または/container-init.d
にスクリプトをマウントして、必要な構成を渡します。
詳細については、https://docs.ipfs.tech/install/run-ipfs-inside-docker/ をご覧ください。
公式バイナリは https://dist.ipfs.tech#kuro で公開されています。
そこから:
ページ右側の青い「Kuboをダウンロード」をクリックします。
アーカイブを開く/解凍します。
kubo ( ipfs
) をパスに移動します ( install.sh
自動的に実行します)。
dist.ipfs.tech にアクセスできない場合は、以下から kubo (go-ipfs) をダウンロードすることもできます。
このプロジェクトの GitHub リリース ページ
dweb.link ゲートウェイの/ipns/dist.ipfs.tech
IPFS には、 ipfs update
を通じてアクセスできる更新ツールがあります。このツールは、ロジックをメインのコードベースから独立させておくために、IPFS と一緒にはインストールされません。 ipfs-update
ツールをインストールするには、ここからダウンロードしてください。
Kubo (go-ipfs) 実装の利用可能なバージョンをリストします。
$ ipfs cat /ipns/dist.ipfs.tech/kuro/versions
次に、前のコマンド ( $VERSION
) からのバージョンで利用可能なビルドを表示するには、次のようにします。
$ ipfs ls /ipns/dist.ipfs.tech/kuro/$VERSION
特定のバージョンのビルドをダウンロードするには:
$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # darwin 32 ビット ビルド$ ipfs get /ipns/dist.ipfs.tech/kuro/$VERSION/kuro_ $VERSION_darwin-amd64.tar.gz # darwin 64 ビット build$ ipfs get /ipns/dist.ipfs.tech/kuro/$VERSION/kuro_$VERSION_freebsd-amd64.tar.gz # freebsd 64 ビット build$ ipfs get / ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-386.tar.gz # linux 32 ビット build$ 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
ニックス
ソルス
openSUSE
ギクス
スナップ
Ubuntu PPA
#パックマン-Sクボ
https://wiki.gentoo.org/wiki/Kubo
# emerge -a net-p2p/kuro
https://packages.gentoo.org/packages/net-p2p/kuro
純粋に機能するパッケージマネージャー Nix を使用すると、次のように kubo (go-ipfs) をインストールできます。
$ nix-env -i kubo
パッケージの属性名 (同じくkubo
を使用してパッケージをインストールすることもできます。
Solus 用パッケージ
$ sudo eopkg install kubo
Solus ソフトウェア センターを通じてインストールすることもできます。
go-ipfs のコミュニティ パッケージ
go-ipfs のコミュニティ パッケージは古いものではありません。
サポートされなくなりました。cube#8688 の理論的根拠を参照してください。
Launchpad の PPA ホームページ。
sudo add-apt-repository ppa:twdragon/ipfs sudo 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 アカウンティング モデル、および/または既存のノード構成ファイルを使用するかについて自動的に尋ねられる場合があります。
注: この方法は、 libc6
内部にあり、APT がパッケージ マネージャーである互換性のある Debian ベースのディストリビューションでも機能します。
チョコレートティ
スクープ
サポートされなくなりました。kuro#9341 の理論的根拠を参照してください。
Scoop は、「エクストラ」バケットにkubo
として Kubo を提供します。
PS> スクープバケット追加エクストラ PS>スクープインストールクボ
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 (またはその他の互換性のある 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 でのビルドについては、別の手順を参照してください。
go get
すべての依存関係を取得するにはgit
が必要です。
パッケージ マネージャーには、古いgolang
パッケージが含まれていることがよくあります。 go version
少なくとも 1.10 であることを確認してください。 goのインストール方法については上記を参照してください。
開発に興味がある場合は、開発の依存関係もインストールしてください。
シェル コマンド補完は、 ipfs commands completion
サブコマンドの 1 つを使用して生成できます。詳細については、docs/command-completion.md を参照してください。
IPFS を systemd またはディストリビューションが使用する init システムに接続する方法については、misc フォルダーを参照してください。
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
libp2p
libp2p: https://github.com/libp2p/go-libp2p
DHT: https://github.com/libp2p/go-libp2p-kad-dht
IPFS : Add
コマンドの謎を解く
WIP : これは、この特定の実装のさまざまなサブシステムの高レベルのアーキテクチャ図です。彼らがどのように相互作用するかについては更新される予定です。これを改善する方法についてご提案がある方は、ここにコメントしてください。
起源
説明: 点線は「なくなる可能性がある」を意味します。 「レガシー」部分は、新しいシステムと古いシステムの間で変換するいくつかのコマンドの薄いラッパーです。 「デーモン」図の灰色の部分は、コードがすべて同じであることを示すためにあります。クライアントとサーバーのどちらで実行しているかに応じて、一部の部分がオンになり、一部の部分がオフになるだけです。
make test
プロトコル バッファーに変更を加える場合は、protoc コンパイラーをインストールする必要があります。
開発者向けのドキュメントをドキュメントでさらに探す
クボは造船所によってメンテナンスされています。
このリポジトリは、Shipyard の GO Triage トリアージの一部です。
リリースプロセス
私たちは❤️すべての貢献者です。あなたなしではこのプロジェクトは成り立ちません!ご協力いただける場合は、CONTRIBUTING.md をご覧ください。
このリポジトリは IPFS 行動規範に該当します。
IPFS コミュニティのメンバーは、ここのディスカッション フォーラム カテゴリでクボのサポートを提供します。
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)