サーバーに依存しない方法:IPFSへの切り替え方
クールなペットプロジェクトやドキュメントをアップロードして、1ヶ月後にリンク切れになっていた 경험はありませんか?あるいは、コンテンツがホストされていたサーバーが突然オフラインになったこともありますよね。私たちが慣れているWeb(HTTP)では、アドレスでデータを検索します:特定のサーバーにアクセスして、ファイルがまだそこにあることを祈るだけです。IPFSはこの仕組みを根底から覆します。
コアコンセプト
IPFS(InterPlanetary File System)は単なるクラウドストレージではありません。ファイルの検索方法を変えるプロトコルです。「どのサーバーにこのPDFがあるか?」ではなく、ネットワークに「このハッシュを持つファイルを持っている人は誰か?」と尋ねます。
IPFSに何かをアップロードすると、ファイルはブロックに分割され、それぞれが一意の暗号識別子(CID)を取得します。同じファイルを2人がアップロードしても、同じCIDになります。これにより重複問題が自動的に解決され、BitTorrentのように複数のノードからファイルの部分を同時にダウンロードできます。
実際の動作
ここでの主な特徴はコンテンツアドレッシングです。通常のインターネットでは、リンクは次のようになります:https://mysite.com/cat.jpg。猫を犬に置き換えても、リンクは同じままです。IPFSでは、リンクはコンテンツ自体に紐付けられます。ファイルが1バイトでも変われば、アドレスも変わります。
これにより、いくつかの素晴らしい利点が得られます:
- コンテンツが密かに置き換えられることがない。
- ファイルが人気があれば、何百ものノードから配信されるため、メインサーバーの負荷が軽減される。
- 少なくとも1人のネットワーク参加者が必要としている限り、データは存続する。
ちなみに、このプロジェクトは2014年から存在します。この間、IPL(データ構造の操作)やlibp2p(ネットワーク接続)のような技術が周囲に成長しています。
開発を始めるには
この技術を実際に試したい場合は、デスクトップアプリまたはCLIクライアントをインストールするのが最も簡単な方法です。インストール後、コンピュータはフルネットワークノードになります。
コンソールからネットワークにファイルを追加するのは非常に簡単です:
ipfs add my_photo.jpg
# На выходе получаем CID: QmZtmWQZFB...
世界中の誰も、このハッシュを知っていればネットワークからファイルをリクエストできます。ユーザーに特別なソフトウェアのインストールを強いたくない場合は、パブリックゲートウェイを使用できます。リンクは次のようになります:https://ipfs.io/ipfs/QmZtmWQZFB...。
実際に役立つ場面
静的サイトのホスティングにIPFSが使われているのをよく目にします。ReactやVueアプリのビルドをIPFSにプッシュするだけで、サイトがネットワーク全体に分散されます。単一障害点もなく、特定のパブリックホスティングへの依存もなくなります。
別のユースケースは、NFTやその他のデジタル資産のメタデータ保存です。画像をブロックチェーンに保存するのは高くつき、通常のサーバーへのリンクを与えるのは危険です(サーバーが停止する可能性がある)。IPFSはここで最適です:リンクは永続的で不変です。
このプロトコルは、分散科学計算やアーカイブにも最適です。時間経過とともにデータが改ざんされていないことを保証することが重要な場面で効果的です。
欠点はありますか
もちろんあります。IPFSは「クラウド上の無料USBメモリ」ではありません。ファイルを追加してコンピュータの電源を切ると、他の誰もファイルをダウンロード하거나「ピン留め」していなければ、ファイルはネットワークから消える可能性があります。永続的な保存には、通常、特別なサービス(ピン留めサービス)を使用するか、常時オンラインの独自のサーバーノードを実行します。
もう1つの点は速度です。巨大なP2Pネットワークで希少なファイルを検索するには時間がかかります。私たちは慣れている集中型CDNの即時応答とは異なります。
試す価値はあるか
分散型アプリ(dApp)を構築している場合、またはプロジェクト内のリンクが常に切れるのに疲れているなら、IPFSを学ぶ価値は十分にあります。ネットワーク上の情報との付き合い方における強力なパラダイムシフトです。
始める最佳場所は、docs.ipfs.techの公式ドキュメントです。よく書かれたコンセプトと明確なインストールチュートリアルがあります。このプロジェクトは生きており、大きなコミュニティとMITライセンスのオープンソースがあり、永遠に掘り下げることができます。
関連プロジェクト