IPFS IPFS技術の実用化シリーズ

序文

この記事ではIPFSの使い方や一般的な操作を中心に紹介します。


1. IPFS開発基盤

ここでは主にIPFSの環境構築と共通操作について紹介します。

1.IPFSをインストールする

1.1 インストールパッケージを介してインストールする

IPFS には複数の言語実装があり、主流なのは Go 言語と JavaScript 実装ですが、この記事では主に Go 言語版を紹介します。
IPFS をインストールする前に、バージョン 1.7 以降の Go 言語環境をインストールする必要があります。
1. IPFS 公式 Web サイト (https://dist.ipfs.io/#go-ipfs) から go-ipfs のプリコンパイル済みバージョンをダウンロードします。
ここに画像の説明を挿入
Mac OS X ユーザーの場合は、darwin バイナリ amd64 をダウンロードしてください。
·Linux システムユーザーは、linux バイナリ amd64 をダウンロードしてください。
·Windows システムのユーザーは、Windows バイナリ amd64 をダウンロードしてください。

国内ユーザーは、GitHub の公式オープンソース リポジトリ (https://github.com/ipfs/go-ipfs/releases) から最新のインストール パッケージを入手することもできます。
centos を例に挙げます。
次の操作を順番に実行します。

tar xvfz go-ipfs_v0.4.16_darwin-amd64.tar.gz
cd go-ipfs 
./install.sh

ipfs -help コマンドを実行すると、次のインターフェイスが表示され、インストールが完了したことが示されます。
ここに画像の説明を挿入

1.2 ipfs-update 経由でインストールする

ipfs-update は、IPFS バージョンを更新するために使用されるコマンドライン ツールです。
このコマンドは次の 2 つの方法で入手できます:
1) https://dist.ipfs.io/#ipfs-update から直接ダウンロードし、インストールを解凍します。パッケージを選択し、install.sh スクリプトを実行してインストールします。
2) Go 言語のバージョンが 1.8 以降の場合は、次の方法で直接インストールすることもできます。

>go get -u github.com/ipfs/ipfs-update

ipfs-update version コマンドを使用すると、ダウンロード可能なすべての IPFS バージョンを一覧表示できます。

>ipfs-update versions
 v0.3.2 
 v0.3.4
 v0.3.5 
 v0.3.6
 v0.3.7 
 v0.3.8 
 v0.3.9 

ipfs-update install most コマンドを使用して、最新の go-ipfs バージョンを更新してダウンロードします。

$ipfs-update install latest 
fetching go-ipfs version v0.4.7-rc1 
binary downloaded, verifying... 
success! 
stashing old binary 
installing new binary to /home/hector/go/bin/ipfs
checking if repo migration is needed... 
Installation complete!

2 IPFS ウェアハウス構成の初期化

2.1 初期化

1. ipfs init コマンドを使用して、IPFS リポジトリを初期化します。

$ ipfs init 
initializing ipfs node at /Users/daijiale/.go-ipfs
generating 2048-bit RSA keypair...done
peer identity: Qmcpo2iLBikrdf1d6QU6vXuNb6P7hwrbNPW9kLAH8eG67z
to get started, enter:
ipfs  cat/ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme

2. IPFS を介してファイルを表示する指示に従って、IPFS の Readme を開きます。

ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme

構成が成功すると、次のインターフェイスが表示されます。
ここに画像の説明を挿入

2.2 設定ファイルへのアクセス

IPFS ローカル ウェアハウス ファイルはデフォルトで ~/.ipfs パスに保存されます

>ls ~/.ipfs blocks datastore keystore config datastore_spec version

いくつかのウェアハウス アーカイブ ファイルの機能を以下に紹介します。
ブロック: ローカル ウェアハウスに保存される CID ファイル ブロック リンク ディレクトリ。
・keystore: キーペアファイルの格納ディレクトリ。
·datastore: LevelDB データ ファイル ディレクトリ。
·datastore_spec: LevelDB データ ファイル キャッシュ ディレクトリ。
config: ウェアハウス構成ファイル。・version: バージョン情報ファイル。
設定ファイルは json 形式であり、ipfs config show または vim config コマンドを使用して内容を表示および編集できます。

3. IPFS ファイル システムと対話する

以下では、ローカル ファイルが IPFS ファイル システムと対話する一般的な方法をいくつか紹介します。

1. IPFS にファイルを追加する

//切换到本地桌面目录下 
$ cd ~/Desktop 
//新建ipfs-test文件目录 
$ mkdir ipfs-test 
//切换到ipfs-test文件目录 
$ cd ipfs-test 
//新建文件的同时写入一串字符串:"version 1 of my text"
 $ echo "version 1 of my text" > mytextfile.txt 
 //查看mytextfile.txt文件内容 
 $ cat mytextfile.txt version 1 of my text 
 //将mytextfile.txt文件添加到IPFS文件系统中 
 $ ipfs add mytextfile.txt 
 added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt

2. ipfs cat CID コマンドを使用して、IPFS ネットワーク内のファイルの内容を読み取ることができます。

//在IPFS网络中查看验证刚才上传的mytextfile.txt文件内容 
$ ipfs cat QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
 version 1 of my text

3. コンテンツの一意性の検証

ファイル コンテンツを IPFS に直接追加して、ファイル ハッシュ (CID) がファイル コンテンツ自体と 1 対 1 対応しているかどうかをテストできます。
3 つの方法で確認できます。
1) IPFS ファイル システムにコンテンツを追加します。

$ echo "version 1 of my text" | ipfs add added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
QmZtmD2qt6fJot32nabSP3CUjicnypEB

2). 同じ内容のテキストをIPFSファイルシステムに追加します

$ ipfs add mytextfile.txt added 
QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt

3). mytextfile.txt の内容を取り出し、IPFS ファイル システムに追加します。

$ cat mytextfile.txt | ipfs add added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy
 QmZtmD2qt6fJot32nabSP3CUjicnypEB

3 つの方法を比較検証すると、内容が変更されない限り、取得される CID も変更されないことがわかります。

4. コンテンツファイル名とディレクトリ情報をIPFSに書き込みます

ipfs add -w CID コマンドを使用して、mytextfile.txt を IPFS に再度追加します。

$ ipfs add -w mytextfile.txt
 added QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy mytextfile.txt 
 added QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w

2つのハッシュ値が得られることがわかります。1 つ目は以前と同じで、2 つ目は IPFS
Wrapped を表し、コンテンツに関連するディレクトリやファイル名などの情報が含まれます。

5. IPFSラップ情報の表示

ipfs ls -v を使用して、ラップされた IPFS に含まれるすべての情報を取得できます。

$ ipfs ls -v QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w 
Hash                                          Size Name
 QmZtmD2qt6fJot32nabSP3CUjicnypEBz7bHVDhPQt9aAy 29 mytextfile.txt

6. 親ディレクトリのコンテンツ ハッシュを通じてファイルのコンテンツを取得します。

次の親ディレクトリ コンテンツ ハッシュ パス形式を通じてファイル コンテンツを取得できます。

$ ipfs cat QmPvaEQFVvuiaYzkSVUp23iHTQeEUpDaJnP8U7C3PqE57w/mytextfile.txt
 version 1 of my text

4. IPFSネットワーク環境に参加します

1) ipfs デーモン コマンドを使用して、ローカル IPFS ファイル システムを IPFS ネットワークに接続できます。

> ipfs daemon
  Initializing daemon...
  API server listening on /ip4/127.0.0.1/tcp/5001
  Gateway server listening on /ip4/127.0.0.1/tcp/8080

2) アクセスが成功すると、
ipfs swarm ピアを実行するときに、p2p ネットワーク内のピアの IPFS ノード アドレス情報を確認できます。

> ipfs swarm peers 
/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
/ip4/104.236.151.122/tcp/4001/ipfs/QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx 
/ip4/134.121.64.93/tcp/1035/ipfs/QmWHyrPWQnsz1wxHR219ooJDYTvxJPyZuDUPSDpdsAovN5 
/ip4/178.62.8.190/tcp/4002/ipfs/QmdXzZ25cyzSF99csCQmmPZ1NTbWTe8qtKFaZKpZQPdTFB

5. HTTP Web との対話

HTTP Web と対話するには、デーモン プロセスを開始してネットワーク サービスに接続する必要があります。

ipfs daemon

1. ローカル HTTP ゲートウェイから IPFS データを取得します

ブラウザに次のコマンドを入力できます

http://localhost:8080/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u

2. パブリック HTTP ゲートウェイから IPFS データを取得する

パブリック ゲートウェイとは、IPFS ネットワーク内のコンテンツにアクセスするために使用できるパブリック HTTP ネットワーク アドレスを指し、ipfs.io のドメイン名の公式ゲートウェイ アドレスが提供されます。

//ipfs.io由官方提供
https://ipfs.io/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u 
//ipfs.infura.io 由CONSENSYS团队提供 
https://ipfs.infura.io/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u

3.IPFS Webコンソール

IPFS はローカル Web コンソール サービスを提供します。ブラウザに http://localhost:5001/webui と入力して、Web コンソールに直接アクセスします。図に示すように:
ここに画像の説明を挿入

6. APIの利用

IPFS の構築後は、コマンドライン操作に加えて、API から呼び出すこともできます。

1. IPFS コマンドラインの使用法

IPFS コマンド ラインは、-config (設定ファイル パス)、-debug (デバッグ モード操作)、-help (ヘルプ ドキュメント) および一連の (サブコマンド) などのさまざまなオプションで構成されており、コマンドの形式は次のとおりです。

ipfs [--config= <config> | -c] [--debug=<debug> | -D] [--help=<help>] [-h=<h>] [--local=<local> | -L

1). オプション
IPFS コマンド ライン オプションは次の図に示すとおりです:
ここに画像の説明を挿入
2). サブコマンド
IPFS を操作するための基本的なコマンドは次のとおりです:
ここに画像の説明を挿入
IPFS データ構造を操作するためのコマンドは次のとおりです:
ここに画像の説明を挿入IPFS を操作するための高度なコマンドは次のとおりです:
ここに画像の説明を挿入
ここに画像の説明を挿入
IPFS ネットワーク通信の操作に関連するコマンド:制御
ここに画像の説明を挿入
IPFS 関連の補助ツールのコマンドは次のとおりです:
ここに画像の説明を挿入
IPFS はローカル ファイル システムにウェアハウスを持ち、デフォルトの場所は ~/.ipfs です。ウェアハウスの場所は次の方法で変更できます。環境変数 IPFS_PATH の設定

export IPFS_PATH=/path/to/ipfsrepo

【遭遇した落とし穴】

サーバー側で ipfs デーモンを実行した後、ターミナルを閉じると、それに応じてデーモン プロセスが停止するため、
ipfs サービス 1 用の Linux サーバーに基づいたサービスを作成する必要があります。

cd /lib/systemd/system/
vim ipfs.service

2. 次のコードを貼り付けて、障害が発生した後に IPFS がサービスを自動的に再起動できるようにします。

[Unit]
Description=IPFS
[Service]
ExecStart=/usr/local/bin/ipfs daemon
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target

3. 保存して終了した後、コマンドを実行します。

systemctl start ipfs

IPFS がドメイン間で設定されていない場合、次のエラーが発生します。
1. コンソールで次のコマンドを実行します。

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT","GET", "POST", "OPTIONS"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'
ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'

2. 最後に、コマンドラインから IPFS を再起動します。

systemctl start ipfs

2. IPFSの先行開発

要約する

ヒント: 記事の概要は次のとおりです:
例: 上記は今日お話しする内容です。この記事ではパンダの使用法を簡単に紹介するだけであり、パンダはデータを迅速に処理できるようにする多数の関数とメソッドを提供します。そして簡単に。

おすすめ

転載: blog.csdn.net/ggj89/article/details/122537516