IPFS(InterPlanetary File System)は、分散型のファイルシステムであり、グローバルなピアツーピアのハイパーメディアプロトコルを作成することを目指しています。これにより、ユーザーは集中型のサーバーなしでインターネット上のすべてのデータにアクセスして共有することができます。
ストレージとアドレッシング#
IPFS は分散ネットワークを使用してファイルを保存し、ファイルは複数のコンピュータに保存することができます。これにより、シングルポイントの障害を防ぐことができます。これらのノードは相互に接続され、ネットワークを形成し、ユーザーはネットワーク上の任意のノードを介してデータにアクセスすることができます。
IPFS はファイル名ではなく、ハッシュリンクを使用してデータをリンクします。これにより、ファイルの位置ではなく、ハッシュアドレスを使用してファイルにアクセスできるため、データの改ざんを防ぐことができます。
IPFS はまた、ハッシュアドレスではなく、より覚えやすい名前を使用してファイルにアクセスするための「IPNS」という解決策も提供しています。IPFS は HTTP などの他のプロトコルとも連携できるため、従来のウェブサイトのインフラストラクチャの代替として使用することができます。
さらに、IPFS はデータの保護に暗号化アルゴリズムを使用し、データの改ざんを防ぐためにさまざまな技術を使用しています。
データの配布と保存#
IPFS は BitTorrent プロトコルを使用してデータを配布および共有し、複数のノード間でデータの配布と共有を行うことで、データの可用性を高めています。
データのハッシュが改ざんできないため、ファイルの変更には Git のようなバージョン管理プロトコルが導入されています。
データの信頼性を確保するために、IPFS にはブロックチェーンと同様に、Filecoinといういくつかのインセンティブシステムもあります。
簡単に言えば、IPFS = BitTorrent + Git + DHT + SFS
DHT は分散ハッシュテーブル(Distributed Hash Table)の略で、分散ストレージ方法です。
サーバーを必要とせず、各クライアントが小範囲のルーティングを担当し、少量のデータを保存することで、DHT ネットワーク全体のアドレッシングと保存を実現します。
SFS は「Simple File System」の略で、IPFS ノード上のファイルを管理するための軽量なファイルシステムです。
IPFS と BitTorrent はどちらもピアツーピアの分散ファイル共有プロトコルですが、IPFS はファイルの内容の永続性とアクセス性に重点を置き、BitTorrent はファイルの転送により重点を置いています。
同時に、IPFS はデータを暗号化し、データをチャンクに分割します。
インセンティブシステム#
IPFS のストレージインセンティブシステムは、暗号通貨に基づいたインセンティブメカニズムを採用しており、IPFS トークンと呼ばれる IPFS 暗号通貨トークン(IPFS トークン)を提供することで、ノードはネットワークに対してストレージスペースと帯域幅を提供することができます。コンテンツプロバイダは、ノードが提供するストレージと配信サービスに対してトークンを使用することができます。
IPFS ゲートウェイ#
IPFS ゲートウェイは、一般に公開されているHTTPゲートウェイであり、誰でも IPFS ネットワーク上のコンテンツを閲覧およびアクセスできるようにします。これは、従来の Web サイトにアクセスするのと同じように、IPFS ネットワークのコンテンツにアクセスするために IPFS ノードをインストールしなくても利用できます。
ユーザーは、公開ゲートウェイにアクセスして IPFS ネットワーク上のコンテンツを検索およびダウンロードすることができます。たとえば、ブラウザや他の HTTP クライアントを使用して公開ゲートウェイにアクセスし、対応する CID(コンテンツ識別子)を入力してコンテンツを取得することができます。
異なるゲートウェイは、異なるネットワークプロバイダでの動作が大きく異なるため、提供されたダウンロードリンクが相手の場所で遅い場合、アクセスできない場合があります。その場合は、このダウンロードゲートウェイ選択ツール IPFS Gateway Selector を使用して、現在の環境で速度が速いゲートウェイを直感的に選択することができます。
たとえば、ファイルにアクセスしたい場合、ファイルのハッシュまたは CID が bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi であるとします。対応するアドレスはhttps://ipfs.io/ipns/ipnso.com/?cid=bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi です。その後、ゲートウェイリストから遅延の低いアクセスを選択し、対応するアドレスは次のようになります:https://ipfs.io/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
ファイルを共有する場合、share.ipfs.ioなどを使用できます。
ただし、共有するコンテンツは開かれ(アクセスされ)、ダウンロードされる必要があります。そうでなければ、保存することはできません。