「IPFS」は、ファイルをネットワーク上に分散して保管する仕組みです。
いわば、「でっかいファイル置き場」です。
このファイルシステムの特徴は、インターネットに接続した人々が、一緒に情報を分け合うことで成り立っていることです。
「IPFS」は「InterPlanetary File System」の略。
元の意味は「惑星間ファイルシステム」です。
分散型のファイルサーバです。
自分のスマホも含めて、利用しているコンピュータで協力してファイルを管理します。
「Web3」だね。
1. 「ipfs://」でアクセスする
IPFSではファイルは分散して保存されるので、
「ファイルの保存場所」には意味がありません。
そのため、ファイルは「コンテンツID(CID)」で識別します。
分散システムに接続したプログラムからファイルをアップロードすると、ファイルを特定する値(ハッシュ値)が割り当てられ、データはネットワーク内の複数の端末に保存されます。
分散保存されたファイルは、システムに接続したプログラムからなら
どこからでも「ipfs://〜」とCIDを入力してアクセスします。
1-1. ipfs.ioは「公開ゲートウェイ」
「ipfs.ioを経由する」ってどういうこと?
「https://ipfs.io」は IPFS の「公開ゲートウェイ」を提供しています。
これにより、インターネットブラウザからは、
「https://ipfs.io/ipfs/〜」にアクセスすると、
IPFS内のファイルを読むことができます。
つまり、インターネット側からも IPFS内のファイルにアクセスできるのです。
このため、IPFSは これまでのインターネットの代わりにも使えます。
ウェブページ情報を IPFS上にアップロードして、「ipfs.io」からのリンクを使えばよいわけです。
2. 分散システムにアップロードしたファイルは誰も消せない
ファイルを分散管理すると、情報が一箇所に集まることがないため、情報を取り出すことが早くなったり、消える心配が少なくなったりします。
しかし、一度アップロードしたものは、誰かが勝手に非公開にすることもできません。
2-1. ipfs.ioの先にあるファイルのセキュリティリスク
また、IPFS には悪用のリスクもあります。
偽サイトのHTMLやマルウェアなども IPFSにアップロードできるからです。
攻撃者からすると、ウェブサーバを用意せずにファイルを公開できてしまうのです。
3. HTTPとIPFS
興味深いのは、アドレスの違いです。
HTTPでは、「ドメイン名/ディレクトリ/ディレクトリ/〜」と、
階層構造でファイルを保管・公開していました。
それに対して、IPFSでは「ipfs/コンテンツID」と、
長い一意のコンテンツIDで直接ファイルにアクセスします。
HTTPは「ロケーション指向型(どこに?が大事)」であるのに対し、
IPFSは「コンテンツ指向型(なにが?が大事)」であると言えます。