IPFSとは

公式HPを元にまとめていきます。

公式HP

IPFS:分散型WEBの実現

IPFS(InterPlanetary File System: 直訳で「惑星間ファイルシステム」) はかつてのWEBに比べ拡張性・弾力性に富み、よりオープンであることで人類の知恵を保存・促進することを目的としたP2P型のハイパーメディアプロトコルです。

現行のWEBの主流プロトコルであるHTTPを補完または置換するプロトコルとして位置付けられており、現在も開発が進んでいます。

未来のWEBを創造する

より良いWEBを構築するベく、IPFSはHTTPを超えることを目指しています。

今のWEBは非効率で高価

HTTPは1つのサーバーから複数ファイルを同時にダウンロードしますが、P2P型であるIPFSは複数ノードから一度にファイルを取得するため、大幅に帯域幅を節約することが可能です。例えば動画ファイルでは、HTTPに比べ最大60%もの帯域幅が節約できます。つまりは、IPFSは大容量のデータを重複なく効率的に配信することを可能とします。

今のWEBでは人類の歴史を保存できない

WEBページの寿命は平均で100日と言われており、寿命を迎えたWEBページは永久に消えてしまいます。私たちの時代を語り継ぐ役目は、このような壊れやすいものには果たせません。IPFSではデータのミラーリングが可能な弾力性に富んだネットワークを簡単に構築することができます。また、「コンテンツアドレッシング」技術により、IPFSに保存されたファイルは自動的にバージョン管理されます。

今のWEBは中央集権的で機会が限られる

インターネットは人類史上偉大な「平等装置」のひとつであり、イノベーションの促進に寄与してきました。IPFSは「オープンでフラットなWEB」という当初のビジョンに忠実であり、その実現のための技術を提供します。

今のWEBはバックボーン回線に依存している

IPFSはインターネットのバックボーン接続の有無に関わりません。持続的な可用性と多様な回復力を持つネットワークの構築をサポートします。これは発展途上国や自然災害時、カフェでのWi-Fi利用時まで、幅広いシーンでの接続性の向上に役立ちます。

ロケーション指向とコンテンツ指向

従前のWEB、HTTPでは「ロケーション指向型プロトコル」と呼ばれる方式でデータ共有をしています。例えば、WEB上で何らかのコンテンツにアクセスする際、HTTP通信ではURLを指定してコンテンツを取得します。この時、URLはコンテンツの保管場所、ないし「住所」を示しています。HTTPは「住所」=「ロケーション」を指定してコンテンツを取得するプロトコルです。

対してIPFSでは住所ではなくコンテンツそのもの、「品番」を指定します。ロケーションではなくコンテンツそのものを指定するので、これは「コンテンツ指向型プロトコル」と呼ばれます。各ファイルには品番が割り振られ、同じファイルには同じ品番が振られます。

IPFSでコンテンツにアクセスするにはこの「品番」を指定しアクセスします。そのコンテンツがどこにあるのかは関係ありません。ただコンテンツを指定し、どこかしらのコンテンツにアクセスします。同一の内容であれば、そのコンテンツはどのサーバーから来たのか、どのような名前で保存されていたのかはほとんどの場合で重要ではありません。「こういう内容の情報」という、情報の本質とも言える部分こそが重要なのです。

HTTPとIPFS

現行のHTTPにはデメリットが存在します。それはサーバーへの依存が大きいことです。24時間365日サーバーを稼働させ続けることが必要であり、アクセス増加へ耐えうる冗長性を確保する必要があります。また改ざんや不正アクセスを防ぐには強固なセキュリティを構築する必要があり、謝って削除や変更の内容に細心の注意を払う必要があります。

また、サーバーに管理者が存在することで中央集権的であることもデメリットとなることがあります。とある一社が膨大なデータを蓄積管理し、個人の情報へのアクセス権を持つことになります。その一社が決して不正アクセスしない、といった保証はどこにもありません。不正など「ないだろう」と信じて預けるほかありません。また、国家による情報統制も、ロケーション指向型であれば容易に可能です。特定ロケーションへのアクセスを遮断するだけで簡単に市民のアクセス権を奪うことができます。

インターネットが発明され数十年、ローケーション指向型の情報アクセスはうまく動作してきたように思えます。しかし、現代の発展により、非中央集権への関心は高まり、従前の方式によるリスクや弊害が顕在化してきているのも事実です。

それらを解決すべくIPFSではコンテンツ指向型プロトコルが採用されています。それにより、次のような利点がIPFSにはあります。

耐障害性

IPFSはコンテンツのハッシュ値を指定するのでコンテンツのローケーションをすることはありません。例えオリジナルのサーバーがダウンしようとも、どこか他のノードがコンテンツを持っていれば同じコンテンツを取得することが可能です。例えば本で考えると、書店Aで売り切れていても、書店Bで手に入ればユーザーは何の不満も覚えません。

耐検閲性

ロケーション指向型ではそのロケーションへのアクセスを遮断するだけで検閲が可能でしたが、コンテンツ指向型ではそうはいきません。同一コンテンツは無数のノードで共有される可能性があり、どこかのノードが遮断されようともコンテンツを保持する他のノードからコンテンツを取得することができます。

耐改竄性

データのハッシュ値をキーとしてコンテンツにアクセスするということは、データの改竄を不可能にします。仮に改竄されたデータがアップロードされたとしても、CIDの比較によりそれらの正当性の検証は容易に行えます。

独占防止

同一のコンテンツが無数のノードに存在しうることは、独占所有の困難性を示すことと同義となります。

負荷分散・高速化

同じコンテンツを複数のノードから取得できる場合、より近いノードから取得することになります。一つのサーバーにアクセスが集中し、負荷が処理性の異常に高まる状況を回避することができます。また同様に、近くのノードから取得する際、従前のサーバーよりも距離が近ければ必然的に高速化も図れます。

IPFSの弱さ

HTTPに比べた利点がある一方、IPFSにはいくつかの弱点があります。

機密情報の保管に向かない

機密性の高い情報は上げられません。P2Pである以上、一度でもアップロードされたコンテンツはIPFSネットワーク全体に共有される可能性があり、他ノードに渡ったファイルの削除はほとんどの場合で不可能です。

人気の無いファイルは自然消滅する可能性がある

IPFSにはキャッシュが存在します。人気のないコンテンツはキャッシュされるサーバーが少なくなり、いずれは自然消滅してしまいます。それを回避するために、「ピン」という機能も用意されています。

IPFSの仕組み

ここではIPFSにファイルを追加した時、IPFSはどのように作動するのかを説明します。

IPFSにファイルを追加すると、ファイルは小さな「チャンク」に分割され、暗号学なハッシュ化の後コンテンツID(CID)が与えられます。これは各ファイルで固有であり、その時点でのファイルの永久的な記録として機能します。分割された後にはIPLDと呼ばれる分散型データ構造により管理されます。またこの過程でマークルツリーがP2P間で存在する状態をマークルフォレストと呼びます。

他ノードがあなたのファイルを検索する時、ファイルのCIDから現在どのノードがファイルを保持しているのか、隣接ノードに問い合わせます。他のノードがあなたのファイルをダウンロードすると、そのノード内でコピーがキャッシュされ、クリアされるまでは新たなひとつのプロバイダとして機能します。

ノードはコンテンツを永久に保持するために、コンテンツを固定(ピン)したり、スペースを確保したり、しばらくアクセスのないコンテンツを破棄することができます。つまり各ノードは必要なコンテンツのみを保存します。また、どのノードが何を保存しているのかを把握するためのインデックス情報(ルーティングテーブル、特に分散ハッシュテーブルを用いる)もノードで保存します。

先に追加したファイルを更新して再度IPFSにアップロードしたとしても、ファイルには新たなCIDが与えられます。IPFSに保存されたファイルは耐改竄性や耐検閲性を備えます。ファイルに変更が加えられたとしても、既存ファイルが上書きされることはありません。しかしその際、ファイルに共通するチャンクは再利用され、ストレージコストを最小限に抑えることができます。

長いCIDをいちいち覚えるわけにはいきません。IPFSではIPNSを用いてファイルの最新バージョンを見つけることができ、また、DNSLinkを使ってCIDを人間が読めるDNS名にマッピングすることも可能です。

IPFSの活用方法

WEBで何をするにしても、IPFSはきっとあなたの役立ちます。

Archivists

IPFSを使ってデータを保存することで、重複の排除やクラスター化された永続性、高いパフォーマンス性を実現できます。世界中の情報をより確度高く将来の世代へ届けることができるようになるでしょう。

サービスプロバイダー

大量のデータをユーザーに提供する際、IPFSならセキュアなP2Pコンテンツ配信が可能です。また、帯域幅コストの削減にも繋がります。

研究者

大規模なデータセットを扱ったり配布したりする際、IPFSを利用すればパフォーマンスの向上や分散型アーカイブの構築が可能です。

ブロックチェーン技術者

IPFSのコンテンツアドレッシング技術により、コンテンツを直接チェーン上に置くことなくタイムスタンピングやセキュリティを確保できます。トランザクションにIPFSアドレスを付加することによりコンテンツを示すことができます。

クリエイター

IPFSはクリエイターが分散WEB上で創作・共有することも可能にします。これは仲介のないコンテンツ配信や永続性に長けるNFTの発行に役立ちます。

オフライン

遅延の大きなネットワークは、インターネットインフラの整っていない地域の人々にとっては大きな障害となります。P2P型であるIPFSなら、遅延やバックボーン回線に依存しない、強力なデータアクセスが手に入ります。

参考

IPFSとは何か?
IPFSとは何か? # IPFS(InterPlanetary File System)は Protocol Labsにより開発が進めれられているP2Pネットワーク上で動作するハイパーメディアプロトコルとその実装です。 現在のインターネットで主要なプロトコルであるHTTP(Hyper Text Transfer Protocol)を補完または置換するプロトコルとして位置付けられ、コンテンツ指向型1のプロトコルであるところに大きな特徴があります。 HTTPはロケーション指向型プロトコル # 例えば現在のインターネットで情報にアクセスする場合https://hogehoge.com/aaa/hello.htmlといったURLを指定してアクセスします。このURLの意味するところは、「hogehoge.comというホストサーバにあるaaaというディレクトリの中のhello.htmlというファイル」ということであり、つまりは取得したい情報がある「場所」(サーバの名前、ディレクトリの名前、ファイル名)を指定しているものです。このように欲しい情報が存在する「場所」を指定して情報にアクセスする方法は「ロケーション指向」と呼ばれ、HTTPはロケーション指向のプロトコルです2。 ロケーション指向の弊害 # このようなロケーション指向での情報へのアクセスは直感的にわかりやすいものです。しかし多くの弊害もあります。まず一つは「情報へのアクセス可能性を保つために管理者に大きな責任(負担)が生じる」というものです。例えば上記例でのhello.html内の情報へのアクセスは「hogehoge.com」のホストサーバの管理状態に依存してしまうことがわかります。hello.html内の情報に全ての人が恒常的にアクセスすることを可能にするために、サーバ管理者には、 24時間365日サーバーを安定稼働させなければならない。 アクセスの数が増えた場合にも遅延なく応答するためのインフラを準備しないといけない。 hello.html内の情報を改ざんされないように、不正アクセスを防ぐための対策を継続しないといけない。 hello.htmlをサーバから削除しない、またはファイル名を変更しないようにしないといけない。 といった責務が生じ、その負担は小さくありません。 このような責任(負担)の裏返しで、サーバ管理者に情報へのアクセスに関する全権力が集中するという弊害もあります。サーバ管理者は 情報へのアクセスを自由に禁止/制限できる。 情報へのアクセスに自由に課金できる。 情報を自由に削除できる。 情報を自由に改ざんできる。 というように、情報へのアクセスに関する全ての権力がサーバ管理者に集中してしまいます。 もちろん、情報の所有者がその情報へのアクセスを管理できることは、多くの場合で有意義なものです。しかし一方で、インターネットが発明されて以降、徐々にあらゆる情報はごく少数の巨大サービスに集中し始めています。例えば個人間の社会的繋がりや日々の行動などが facebookに莫大なデータ量が蓄積され管理されています。facebookは私的企業であり、彼らのサービス規定に則りアクセス制限を自由にかけることが可能です。さらにはサービス規定自体もfacebook自身が決めることができるのです。よってユーザーは、自分自身の生み出した様々なデータがfacebook社によって改ざんやアクセス制限、不正利用などされない「だろう」と信じて預けるほかにありません。しかし実際にはそのような信用は裏切られ、アメリカ大統領選挙の際にfacebook社が不正に約8,000万人分のユーザーデータをトランプ陣営側のデータ分析会社に提供する 事件が発生しています。 また情報アクセスへの制限は、サービス(サーバ)管理者だけでなく例えば国家によってもなされる場合があります。2017年4月29日トルコ政府はトルコ国内で全ての言語のWikipediaへのアクセスを遮断しました。当初は 制限に至る理由も公表されることなく3、突如禁止され、現在もアクセスが禁止され続けています。インターネットでの情報アクセスがロケーション指向であるため、Wikipediaのサーバへのアクセスを遮断するだけで容易に市民の情報へのアクセスが制限することが可能になるのです。 インターネットが発明されて以来数十年の間、ロケーション指向の情報アクセスはうまく動作してきたように見えます。しかしインターネットの発展と共に、上記のようにロケーション指向による弊害やリスクといったものが少しずつ顕在化してきています。 IPFSはコンテンツ指向型プロトコル # このような問題を根本的に解決するためにIPFSではコンテンツ指向型のプロトコルを採用しています。 例えばあなたが書籍、例えば 養老孟司の「バカの壁」を読みたいと思ったとき、その書籍が読めればそれがどこから入手したものかを気にすることはほとんどありません。近所の本屋さんで買っても、Amazonで買っても、図書館から借りても同じ内容を読むことができます。 インターネット上の情報も同様です。同一の内容であればどのサーバ上から取得したか?どの名前のファイルから取得したかなどという入手先はほとんどの場合で重要ではありません。そのためその情報の「場所」ではなく、「こういう内容の情報」というコンテンツの内容自体を直接指定して情報にアクセスする仕組みを考えることができます。これが「コンテンツ指向」になります。 コンテンツ指向プロトコルの仕組みは古くから研究されており様々な実装方法が提案されています。その中でもIPFSでは SHAなどの暗号ハッシュ関数を利用してコンテンツのハッシュ値を求め、それをそのコンテンツのIDとして利用する方法を採用しています。ハッシュ関数により得られるハッシュ値は、同じデータであれば必ず同じハッシュ値が得られる一方、少しでも異なるデータからはまったく異なるハッシュ値が得られる特徴があります。そのためこのハッシュ値をキーにアクセスするIPFSには、ロケーション指向であるHTTPプロトコルでは得られない以下のようなメリットが生まれます。 耐障害性 # IPFSではコンテンツのハッシュ値を指定し、そのコンテンツが存在する場所(サーバ等)を指定しません。そのため、たとえオリジナルのサーバが何らかの原因でダウンしていても、同じハッシュ値(=コンテンツ)のデータを持っているどこか他の場所から同じ情報を取得することが可能になります。(読みたい本がある書店で売り切れていたら他の書店で買い求めるのと同様の動作です。前述のとおり内容が同じであればどの書店から購入しようがユーザーは気にしないのです。) 負荷分散 # コンテンツの場所を指定しないIPFSでは、同じコンテンツを複数のサーバから取得できる場合、より近いサーバから取得することになります。一つのサーバーに負荷が集中することを防ぐことが可能になります。 耐検閲性 # 先のトルコの例に見るようにロケーション指向ネットワークでは、その情報のある場所(サーバ)へのアクセスを遮断するだけで検閲が可能でした。一方、コンテンツ指向ネットワークでは同じコンテンツは無数のサーバで保持されることが可能であり、どこかのサーバがアクセスを遮断されても、代理の他のどこかの別のサーバから同一の情報が取得可能になり、検閲を難しくします。 耐改ざん性 # データのハッシュ値をキーにデータにアクセスするということはデータの改ざんを不可能にします。データを取得した人はアクセスしたデータのIDであるハッシュ値と、そのコンテンツから得られるハッシュ値を比較することで容易にコンテンツの正当性を検証することができるからです。 Filecoin # 以上のようにHTTPに比べて様々な利点があるIPFSですが、1つ問題が残っています。それはIPFSのP2Pネットワークのノードがコンテンツを保持する動機となるもの(インセンティブ)がないことです。
Favicon of the bookmark site
https://ipfs-book.decentralized-web.jp
Site image of the bookmark