IPFS を使用して NFT を保存およびホストする方法 (チュートリアル)

IPFS を使用して NFT を保存およびホストする方法 (チュートリアル)

長期間保存でき、改ざんも防止できるのがNFTの核となる価値の一つです。残念ながら、現在消費者向けの NFT の多くは、設計上の根本的な欠陥により、これらの特性を備えていません。一部の NFT が「ブロックチェーン上に永久に存在する」と主張することはよくありますが、実際にはコストとブロックチェーンのストレージ容量の制限により、関連する NFT の所有権記録とメタデータのみが保存されます。

多くの場合、これらのリンクは脆弱であり (https://www.vice.com/en/article/pkdj79/peoples-expensive-nfts-keep-vanishing-this-is-why)、HTTP プロトコルを使用して、ユーザーを資産自体ではなく特定の場所に誘導します。つまり、リンク先のコンテンツは将来無効になったり変更されたりして、元の資産が失われる(所有権の記録だけが残り、価値がなくなる)可能性があります。

IPFS はこの問題を解決でき、IPFS を使用する NFT は利点を享受できます。ただし、既存の標準に準拠することによってのみ、データをより適切に保存し、永続的にアクセスできるようになります。 NFT の人気が急速に高まっている今こそ、IPFS で NFT データを保存およびリンクするためのベスト プラクティスを確認する良い機会です。この記事では、コンテンツ アドレス指定とデータ整合性という最近の 2 つのホットなトピックについて説明します。 IPFS ドキュメント サイトには、詳細を学習するのに役立つ新しいセクション「IPFS で NFT データを保存するためのベスト プラクティス」(https://docs.ipfs.io/how-to/best-practices-for-nft-data/) があります。

コンテンツアドレス指定

IPFS コンテンツ識別子 (CID) は、コンテンツがどこにどのように保存されているかに関係なく、コンテンツを正確に識別できる非常に強力で柔軟性の高い機能です。これらの利点を最大限に活用するには、開発者は IPFS データをリンクするときに次の推奨事項と規則に従う必要があります。

リンクの概要

これは CID の包括的な説明ではありません (これについては既に優れた資料があります (https://docs.ipfs.io/how-to/address-ipfs-on-web/#dweb-addressing-in-brief))。しかし、この記事の目的は、読者に以下の点を理解してもらうことです。

CID

CID は自己記述型であり、あらゆるコンテンツの一意の識別子です。

例: bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

CID は、アプリケーション コードや IPFS を明示的に使用するその他のコンテキストで使用する必要があります。

特に書き込まれて変更されることのないメタデータやブロックチェーン レコードでは、ディスク上に保存するために CID を IPFS URI に変換することをお勧めします。 CID に ipfs:// URI 形式を追加すると、コンテキスト情報が追加され、ユーザーや自動ツールがリンクされたコンテンツを見つけやすくなります。

IPFS URI

Uniform Resource Identifier (URI) (https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) は、プロトコル内の特定のコンテンツを指定するために使用されます。プロトコルは、URI の形式 (URI のプレフィックスとして :// とともに追加されます) によって決まります。 IPFS の URI 形式は ipfs です。場合によっては、URI の末尾にパスが追加されることがあります。

例:

ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

ipfs://bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta/nft.mp4

IPFS URI は、ファイルまたはディレクトリへの標準の IPFS リンクです。スマート コントラクトから IPFS データにリンクする場合、IPFS URI は、データが IPFS システムを通じて取得される必要があることを示します。

IPFS URI は、NFT の構造化メタデータ内の IPFS 上の画像やその他のメディア リソースにリンクする場合にも使用する必要があります。

HTTP ゲートウェイ URL

HTTP ゲートウェイ (https://docs.ipfs.io/how-to/address-ipfs-on-web/#http-gateways) は、IPFS URI をネイティブに解決できない古いブラウザとの互換性を保つのに役立ちます。このリンクはアプリケーションのインターフェースでのみ使用し、ブロックチェーンや NFT のメタデータには保存しないでください。

例: https://dweb.link/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

HTTP ゲートウェイはコンテンツ配信を集中管理し、中間者攻撃の媒介となる可能性があり、単一障害点となる可能性があることに注意してください。ゲートウェイ オペレーターがオフラインになったり接続が失われたりすると、リンクが失敗します。 IPFS サポートが組み込まれたブラウザ (IPFS Companion ブラウザ拡張機能、または Brave などのネイティブ サポート) では、このようなリンクから CID を自動的に抽出し、ユーザーの設定に基づいて IPFS からデータを読み込むことができるため、これらの問題を回避できます。

さまざまなシナリオでの対処

さまざまなシナリオにおいて、開発者は特定の状況に応じて適切なリンク設定を使用する必要があります。

オンチェーン

NFT スマート コントラクト上の NFT に対応するリソースとメタデータには、IPFS URI を使用する必要があります。

例: ipfs://bafybeibnsoufr2renqzsh347nrx54wcubt5lgkeivez63xvivplfwhtpym/metadata.json

NFT を生成する前に IPFS URI を生成し、URI 全体をオンチェーンに保存することをお勧めします。これは、URI を渡すスマート コントラクト インターフェースの最もシンプルなアプローチです。また、ipfs:// の URI 形式により、アプリケーションはこのデータが IPFS 上にあることを認識します。

メタデータ

NFT のメタデータでは、テキスト内の IPFS リソースにリンクするための最も明確で長期的な信頼性の高い方法である IPFS URI を使用する必要があります。

NFT メディア アセットにリンクする IPFS URI の例を次に示します: ipfs://bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta/nft.mp4。

開発者は、互換性を確保するためにパブリック HTTP ゲートウェイ (https://docs.ipfs.io/how-to/address-ipfs-on-web/#http-gateways) を使用できます。

コンテンツにリンクする他の方法 (IPFS 以外の HTTP ゲートウェイからの URL など) も避ける必要があります。通常の HTTP リンクは、リンクのコンテンツが簡単に変更される可能性があるため、せいぜい一時的なコンテンツのミラーとしてしか機能しません。ブロックチェーンでは、データは永続的に保存され、改ざんできないため、チェーン上で HTTP を使用すると脆弱になり、障害が発生するリスクがあります。

対照的に、IPFS URI は永続的であり、データへの正規リンクとして安全に使用できます。 IPFS URI を「真実のソース」リンクとして使用することで、アプリケーションは新しいゲートウェイ リンクを生成するだけで、複数の異なるストレージ ソリューションを使用したり、将来的に別のゲートウェイに切り替えたりすることが容易になります。これは、特定のゲートウェイ リンクをブロックチェーンの永続的な記録に「ハードコーディング」するよりも柔軟性があります。

応用

ユーザー向けアプリケーションでは、開発者は次の 2 つの方法で IPFS コンテンツにリンクする必要があります。

1. IPFS URI

2. HTTPゲートウェイURL

より多くのブラウザが IPFS URI をネイティブにサポートするまで。これらのリンクは両方とも、生の CID または IPFS URI から簡単に生成されることに注意してください。

以下は、パブリック dweb.link を指す HTTP ゲートウェイ URL です。

https://dweb.link/ipfs/bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta/nft.mp4

CID を URL パスに入れる代わりに、サブドメインとして使用することもできます。

https://bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta.ipfs.dweb.link/nft.mp4

どちらの例も、標準の IPFS URI ipfs://bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta/nft.mp4 に対応しています。

データの整合性

NFT 資産に関する重要な点は、資産自体と関連するすべてのデータの整合性です。 IPFS は CID を使用して NFT データの整合性を保護し、リンクが作成されてから改ざんされていないことを確認します。

開発者は、IPFS の組み込みデータ検証機能の有効性を最大限に高めるために、次の提案に従う必要があります。

アセットメタデータのリンク

メタデータは NFT の価値の不可欠な部分です。したがって、資産の価値を維持するためには、資産を IPFS に保存するときにメタデータも保存し、両方にアクセスできるようにする必要があります。

この目標を達成するための推奨される方法は次のとおりです。

1. 2つの新しいディレクトリを作成します(1つはアセット用、もう1つはメタデータ用)

2. カタログにアセットを追加する

3. IPFSにアセットディレクトリを追加し、そのCIDを記録する

4. 対応するディレクトリにメタデータを作成し、手順3のCIDを使用してIPFS URIを作成します。URIには、ディレクトリのCIDとアセットファイル名を含める必要があります。

5. メタデータ ディレクトリを IPFS に追加し、その CID を記録します。

6. ステップ5のCIDを使用してメタデータのIPFS URIを作成し、URIをオンチェーンに保存し、所有権レコードを追加します。

このプロセスにより、開発者はリンクにファイル名を含めることができるため(ユーザーがリンクを操作しやすくなります)、メタデータとアセットを独立して使用できるようになります。

  • メタデータは次の場所からアクセスできます: ipfs://{メタデータディレクトリのCID}/metadatafilename

  • アセットは次のアドレスからアクセスできます: ipfs://{アセットディレクトリのCID}/アセットファイル名

以下は、画像ファイルにリンクする IPFS URI を含む JSON メタデータの例です。

この画像には、IPFS URI ipfs://bafybeidfjqmasnpu6z7gvn7l6wthdcyzxh5uystkky3xvutddbapchbopi/no-time-to-explain.jpeg` を使用してアクセスできます。ユーザー インターフェイスでは、アプリケーションは、ユーザーが HTTP を使用してイメージを取得できるようにゲートウェイ URL (https://dweb.link/ipfs/bafybeidfjqmasnpu6z7gvn7l6wthdcyzxh5uystkky3xvutddbapchbopi/no-time-to-explain.jpeg など) を作成できます。

メタデータが作成され、IPFS 上に JSON ファイルとして保存されると、その CID を使用して ipfs://bafybeibnsoufr2renqzsh347nrx54wcubt5lgkeivez63xvivplfwhtpym/metadata.json などの URI を作成できます。この URI はスマート コントラクトに保存できます。

プロセス全体の実際の例は、IPFS ドキュメント Web サイト「IPFS で NFT を発行する方法」(https://docs.ipfs.io/how-to/mint-nfts-with-ipfs/#a-short-introduction-to-nfts) で確認できます。ドキュメントでは、JavaScript を使用してプロセス全体を詳細に示します。

高可用性

IPFS のような分散型ネットワークを使用してコンテンツを提供する主な理由の 1 つは、リンク腐敗 (https://en.wikipedia.org/wiki/Link_rot) を防ぐことです。これは、ネットワーク内の他のノードがデータミラーリング サービスを共同で運用することによって実現されます。しかし、データの可用性に対する要件が高い開発者は、他のノードの利他主義に依存すべきではありません。リンクされたコンテンツが利用可能であることを保証するには、開発者はコンテンツの CID を独自のストレージ ノードにピン留め (https://docs.ipfs.io/concepts/persistence/) し、協力してくれるノードを使用してコンテンツを保存および配布する必要があります。必要に応じて、開発者はピンニング サービス (https://docs.ipfs.io/how-to/work-with-pinning-services/) を使用して、代わりに操作することもできます。


<<:  4.24新インフラブロックチェーンサミット特別セッションが成功裏に終了しました

>>:  バイデン氏の増税がなぜ通貨価格の急落を引き起こしたのか?中国は暗号通貨で投機する際に税金を支払う必要がありますか?

推薦する

ブロックチェーンチームのメンバーがデロイトを離れ、スタートアップを設立

クレイジーコメント:デロイトは多くのブロックチェーンスタートアップと協力関係を築き、ブロックチェーン...

グレイスケールGBTCはなぜ流出を続けるのか?

GBTC資金の流出が続く2024年1月19日、データによると、フィデリティ・ビットコイン・スポット...

ビットコインは変動が大きすぎて商店が受け入れることができない

これは、Genesis Mining の CEO 兼共同創設者である Marco Streng によ...

真相を解明しましょう。 PoSは本当にPoWより優れているのでしょうか?

「PoSが引き続き普及するにつれて、近い将来にPoSの割合がPoWの割合を上回ることが予想されます...

コインゾーントレンド: 今週のビッグデータに基づくビットコインの価格動向 (2017-05-19)

通貨価格は新たな高値に達し、加速の兆しがある1. 市場動向<br/>今日は2017年5月...

ブロックチェーンアプリケーションには協力と合意が必要

クレイジーな解説: この記事の著者であるマイケル・ボドソンは、DTCC の会長兼 CEO です。この...

ビットコインが44,000ドルを突破した要因は複数ある

ビットコインは月曜の夜から上昇を続けている。火曜日の早朝、ビットコインは短期的に2,000ドル上昇し...

ビットコイン技術はロシアの禁止を超えて広がる

ロシアの決済大手QIWIは独自の暗号化デジタル通貨を発行する計画で、その新製品の詳細が公開された。 ...

中国金融経済教授がカード凍結の現状と法の支配からの逸脱を批判する長文記事を執筆。どのように改善すればよいでしょうか?

近年、通信詐欺や国内外賭博の容疑者らが銀行カードを利用して巨額の資金を送金し、犯罪を犯しており、公安...

公式の第 3 回 IPFS マイナー カンファレンス: 大規模なマイナー テストについて知りたいことはすべてここにあります。

7月22日北京時間午前9時、プロトコルラボの第3回マイナーカンファレンスが予定通り開催された。カン...

ビットコインは復活し、価格は4,000元に近づいている

ビットコインは最近、投資家の間で再び話題になっていますが、その理由は単純で、価格が上昇したからです。...

ビットメインはついに停止し、ウー・ジハンは振り返って愛を持って去った

みんな幸せです。昨夜、ビットコイン・メインランドの共同創設者であるジハン・ウー氏は、暗号化された手紙...

リスクは秩序正しく解放され、偽造チップはまだ解決する必要がある

いずれは大きな変動幅も終わり、「高く売って安く買う」ことで利益を上げるリスク・リターンの比率は大きく...

イーサリアムがTheDAOで失敗したくないのであれば、スマートコントラクトと管理の問題を解決するのが正しい道だ

「スマート コントラクトについて知っておくべきことが 2 つあります。1 つ目は、スマート コントラ...

開発者はビットコインの混雑問題に対する複数の解決策を提案し、レイヤー2の代表としてライトニングネットワークが勝者となる

MEME トークンと BRC-20 トークンの誇大宣伝により、イーサリアムとビットコイン ネットワー...