前回からの続きで、
今回は、NFTデータを取り扱ううえで非常に重要な機能でもあるIPFS環境についての紹介です。
環境構築からNFT生成までのステップ(前回からの続き)
-
初回紹介
Hyperledger FireFly環境を新規でWeb3 ゲートウェイ機能を有効にしBinaceテストネットと通信できるようにします。 -
前回紹介
BinaceテストネットトークンをFausetサイトから入手します。
Binaceテストネット上にNFT用のコントラクト(ERC-721ベース)をデプロイします。 -
今回紹介
IPFS環境の調整 -
次回以降紹介
NFT用のコントラクトの関数などのメタ情報をFireFly側に登録します。
NFTとして扱う画像をFireFly側に登録します。
FireFly側に登録した画像をPublicに公開します。
NFTテキストデータをFireFly側に登録します。
FireFly側に登録したNFTテキストデータをPublicに公開します。
発行したNFTを他のユーザに転送して、ウォレットから確認します。
IPFSとは
IPFS(InterPlanetary File System)は、分散型のファイルシステムで、データの保存と共有を改革的な方法で行うための技術です。
特にNFTとして、当該データを特定するための技術の中核をなす、データのハッシュ化およびコンテンツアドレッシングという機能を応用して実現しています。
冗長化とデータの管理形式
IPFSは、従来のWebのように中央集権化されたサーバーに依存するのではなく、分散型のネットワークで動作します。データは一意のハッシュ値で識別され、ユーザーがデータをリクエストすると、そのハッシュを使ってデータを検索し、取得します。これにより、データの冗長性と可用性が向上し、中央のシングルポイントの故障を回避できます。
データの分散とコンテンツアドレッシング
IPFSは、ユーザーがファイルをアップロードすると、そのファイルをブロックに分割し、ネットワーク上に分散保存します。各ブロックはユニークなハッシュを持ち、データが変更されると新しいハッシュが生成されます。データを検索する際には、ユーザーがハッシュを提供し、ネットワーク上でそのハッシュを持つブロックを検索して組み合わせデータを再構築します。
データのハッシュ化については、コンテンツアドレッシングという考え方のもと各種システムにおいて有用化されています。
情報のキャッシュと高速化
IPFSはデータのキャッシングをサポートし、ユーザーがデータをリクエストすると、近くにあるノードによってキャッシュされる可能性があります。これにより、データの高速な取得が可能となり、ネットワーク全体での負荷を軽減します。また、一度取得したデータはローカルにキャッシュされ、同じデータへの未来のアクセスが高速化されます。
ローカル環境におけるIPFSサービスの調整
Fire Flyでスタックを起動すると、coreサービス以外にIPFSサービスが起動されます。Docker経由でのサービスのため、ポート番号がIPFS標準と異なるポートにマッピングされて起動されます。標準のIPFSサービスのポートとは異なり、この状態でUIにアクセスが出来ない ※ ため、Dockerの定義ファイルを変更してサービスを起動することにしました。
※ デフォルトのポートでブラウザから閲覧するにはリバースプロキシなどを用いてアクセスすることは可能。
ローカルのIPFSサービスへの接続
ローカル環境のIPFS環境への接続はブラウザから行います。
URLにIPFS メイン画面は以下のURLにてアクセスします。
WebUI:http://localhost:10206/webui
Gateway:http://localhost:10207/ipfs/
Docker定義ファイルの変更
WSL2(ubuntu)環境を起動します。
ホームディレクトリ下にあるdocker-compose.ymlファイル(97行目付近)を修正します。
ipfs_0下に定義されているportsの設定において、10206と10207ポートの定義を、標準のポート番号(5001、8080)に修正します。
ipfs_0:
container_name: bsc_ipfs_0
image: ipfs/go-ipfs:v0.10.0
volumes:
- ipfs_staging_0:/export
- ipfs_data_0:/data/ipfs
ports:
+ - 5001:5001
+ - 8080:8080
- #- 10206:5001
- #- 10207:8080
healthcheck:
test:
- CMD-SHELL
- wget --post-data= http://127.0.0.1:5001/api/v0/id -O - -q
interval: 5s
timeout: 3s
retries: 12
設定変更前:
WebUI:http://localhost:10206/webui
設定変更後:
WebUI:http://localhost:5001/webui
IPFS動作状態の確認
以上で、ローカルのIPFSに接続ができるようになったので、WebUIから稼働状態を確認します。
次回は
次回はNFT発行およびIPFSサービスを用いた管理方法を紹介します。