pseudoyu

pseudoyu

Blockchain | Programming | Photography | Boyi
github
twitter
telegram
mastodon
bilibili
jike

IPFS ローカルノードの構築(コマンドライン)

前書き#

前回の記事「IPFS 分散ファイルストレージの原理」では、IPFS システムの設計思想、機能、動作原理、および IPNS について詳しく説明しました。では、どのようにしてローカルに IPFS ノードを構築するのでしょうか?

本記事では、macOS 11.2.3システム上に IPFS ノード(コマンドラインバージョン)を構築し、ファイルのアップロード、ダウンロード、ネットワーク同期、pinGCIPNSなどの実際の操作を行い、IPFS の動作原理をより深く理解することを目指します。

コード実践#

インストール#

wget https://dist.ipfs.io/go-ipfs/v0.8.0/go-ipfs_v0.8.0_darwin-amd64.tar.gz
tar -xvzf go-ipfs_v0.8.0_darwin-amd64.tar.gz
cd go-ipfs
./install.sh
ipfs --version

起動#

# ノードの起動
ipfs init

# ファイルのアップロード
ipfs add ipfs_init_readme.png

# ファイルのアップロードとハッシュ値のみ出力
ipfs add -q ipfs_init_readme.png

# ディレクトリのアップロード
ipfs add -r [Dir]

# ファイルの表示
ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme
ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/quick-start

# 自分がアップロードしたファイルの表示
ipfs cat QmaP3QS6ZfBoEaUJZ3ZfRKoBm3GGuhQSnUWtkVCNc8ZLTj

# 画像の表示とファイルへの出力
ipfs cat QmfViXYw7GA296brLwid255ivDp1kmTiXJw1kmZVsg7DFH > ipfsTest.png

# ファイルのダウンロード
ipfs get QmfViXYw7GA296brLwid255ivDp1kmTiXJw1kmZVsg7DFH -o ipfsTest.png

# ファイルの圧縮とダウンロード
ipfs get QmfViXYw7GA296brLwid255ivDp1kmTiXJw1kmZVsg7DFH -Cao ipfsTest.png

ipfs_init_readme

サービスの開始 / 参加#

# 現在のノード情報の表示
ipfs id

# IPFSの設定情報の表示
ipfs config show

# ノードサーバーの起動
ipfs daemon

API サービスはデフォルトでポート 5001 で動作し、http://localhost:5001/webui からアクセスできます。

ipfs_webui

ゲートウェイサービスはデフォルトでポート 8080 で動作し、ブラウザでファイルにアクセスするには IPFS が提供するゲートウェイサービスを利用する必要があります。ブラウザはまずゲートウェイにアクセスし、ゲートウェイが IPFS ネットワークからファイルを取得します。http://localhost:8080/ipfs/[File Hash] で IPFS にアップロードされたファイルにアクセスできます。

ファイル操作#

# ファイルの一覧表示
ipfs files ls

# ディレクトリの作成
ipfs files mkdir

# ファイルの削除
ipfs files rm

# ファイルのコピー
ipfs files cp [File Hash] /[Dest Dir]

# ファイルの移動
ipfs files mv [File Hash] /[Dest Dir]

# ステータスの表示
ipfs files stat

# 読み取り
ipfs files read

ファイルの更新問題を解決するために IPNS を使用する#

# IPNSを使用してコンテンツを公開し、自動的に更新する
ipfs name publish [File Hash]

# ノードIDが指すハッシュをクエリする
ipfs name resolve

# 更新が必要な複数のサイトがある場合、新しいキーペアを生成し、新しいキーを使用して公開することができます
ipfs key gen --type=rsa --size=2048 mykey
ipfs name publish --key=mykey  [File Hash]

Pinning#

IPFS ネットワークからファイルをリクエストする際、IPFS はまずコンテンツをローカルに同期し、キャッシュメカニズムを使用してファイルを処理してストレージスペースの無駄を防ぎます。一定期間使用されないファイルは「回収」されますが、Pinning の役割はローカルでファイルが「回収」されないようにすることです。

# ファイルをPinningする
ipfs pin add [File Hash]

# 特定のハッシュがPinningされているかを確認する
ipfs pin ls [File Hash]

# Pinningの状態を削除する
ipfs pin rm -r [File Hash]

# GC操作
ipfs repo gc

結論#

本記事では、IPFS ファイルシステムをローカルにデプロイし、基本的な操作を試してみました。macOS 11.2.3およびgo-ipfs_v0.8.0_darwin-amd64バージョンをベースにしています。異なるシステムでは、バージョンや依存関係の問題によって操作が異なる場合があります。誤りや抜けがある場合は、ご連絡いただければ幸いです。

参考資料#

  1. IPFS 公式ウェブサイト
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。