【IPFSとブロックチェーン Part1】IPFSとは?ストレージ問題を解決する技術
Yuya
ブロックチェーンは革新的なトラストレス・データベースである一方、ネットワークの規模やスケーラビリティの関係からストレージ面で問題を抱えることが多々あります。
そんなブロックチェーンストレージ問題の解決策として注目されているのが、InterPlanetary File System、通称IPFSです。
IPFSは、ブロックチェーン技術でお馴染みの「ハッシング」と「P2Pネットワーク」を融合させたファイルシステム、いわば「ネットワーク上でデータをやりとりする方法」です。
こちらのページでは、IPFSについて技術的な基礎知識からわかりやすく解説していきます。
目次
IPFSとは?
一般的な研究やソフトウェア開発などでは、進捗状況を確認するために新旧バージョンを比較する必要があり、IPFSは当初、異なるバージョンのデータに素早くアクセスする方法として生み出されました。
やがて、同技術はネットワーク上の参加者(コンピューター)全員がアクセスできる分散型P2Pファイル共有システムとしてさらに開発が進められることとなりました。
IPFSを理解するためには、ネットワークプロトコルについての知識が少し必要になります。難しく聞こえるかもしれませんが、わかりやすく解説していきます。
ピアツーピア(P2P)ネットワークを利用している
私たちが普段アクセスしている「インターネット」は「クライアント/サーバーモデル」と呼ばれるものを使用しています。
このモデルは、クライアント(ユーザー)がサーバーに必要なデータを要求し、サーバーがそれを提供する、というものです。
ちなみに、このクライアント/サーバー間のやりとりを確立するプロトコルが「HTTPプロトコル」と呼ばれるものです。
このモデルにおけるファイルのダウンロードというのは、私たちユーザーがサーバーにリクエストを送り、サーバーがそのファイルを提供する、という流れを指します。
この「クライアント/サーバー接続」に対し、サーバーを介さずデータの要求者と提供者を直接繋ぐことをピアツーピア(Peer to peer)、通称P2Pと呼びます。IPFSは、P2Pネットワークにあたります。
IPFSと仕組みが似ているBitTorrent
IPFSの基盤的な仕組みは、BitTorrentと呼ばれるP2Pプロトコルに似ています。
BitTorrentでデータをリクエストすると、すでにそのデータを保有しているコンピューターから直接転送が行われます。
クライアント/サーバー接続ではサーバーからのみデータが転送されるのに対し、BitTorrentでは要求データを保有するコンピューター複数から同時にデータをダウンロードすることができます。
したがってBitTorrentでは、多数のコンピューターがデータを保有している場合、ダウンロード時間を大幅に短縮することができます。
IPFSも「必要なファイルをネットワークに要求し、そのファイルを保有するノードからダウンロードする」という仕組みとなっており、この点でBitTorrentに類似しています。
このシステムのもうひとつの便利な点は「特定のデータを保有するノードがひとつでも存在する限り、そのデータはネットワーク上に半永久的に残り続ける」というところです。
クライアント/サーバーシステムではサーバーの消失と共にデータも失くなる(Single point of failure)のに対し、P2Pでは一度アップロードされたデータは良くも悪くも残り続けるのです。
IPFSはハッシング技術を利用している
IPFSは、BitTorrentに似たファイル共有システムに加えて、ブロックチェーン技術でお馴染みの「ハッシング」という暗号技術を利用しています。
ハッシングの便利な点は、データそれぞれに固有のハッシュを与えることができる、という点にあります。
ハッシュ関数をわかりやすく体験してみよう
例えば、「我輩は猫である」という文章をSHA256と呼ばれるハッシュ関数に通すと、
“8AFC1EA26B8E95F9BEA48BD55B71AD63E8D1BDA3E955E874C00E2F9ED004AE8F”
という「ハッシュ」が出力されます。これが「固有である」というのは、「他にどんな文章を通しても同じハッシュは(ほぼ)絶対に出てこない」ということを意味します。
ここで、猫を犬に変えて、「我輩は犬である」という文章を入力すると、
“68AB96F7ADEBBEA638F8036C15206BF03BD389E7C0A3B49F91F36E756FCC94D9”
という全く異なるハッシュが出力されることが確認できます。
ブロックチェーンにおけるハッシュ技術
ブロックチェーンでは、データを特定の長さのランダムな文字列に変換する「ハッシュ関数」を利用することで、ウォレットアドレスやブロックの生成を行なっています。
例えば、暗号資産のウォレットには「プライベートキー」「パブリックキー」「ウォレットアドレス」の3種類が存在します。
実はこの「ウォレットアドレス」というのは「パブリックキー」のハッシュなのです。
【ロケーション VS コンテンツ】IPFSはコンテンツでアドレスを決定する
私たちが見慣れているファイルシステムは、「ロケーションアドレッシング方式」と呼ばれています。
このシステムでは、”abc.com/pictures/cats/favourite-cat.jpg”のように、コンテンツのアドレスを保存されている位置(ロケーション)から決めています。
これに対しIPFSは、要求ファイルのハッシュをそのコンテンツのアドレスとする「コンテンツアドレッシング方式」を採用しています。
したがって、IPFSプロトコルを使用したネットワーク上に存在するコンテンツには全て「固有のアドレス」が存在する、ということになります。
つまり、同じデータに別々のアドレスが与えられるといった事態が発生しないため、ネットワーク上でのデータの重複を大幅に抑えることができるのです。
長々と技術的な説明をしてきましたが、ここでようやくIPFSがいったい何をするのかを解説できます。
IPFSでは、ネットワーク上で目的のデータを保有している人を探し、保有者複数から同時にダウンロードすることができます。ここまではBitTorrentと同じです。
BitTorrentと異なる点はデータのアドレスがハッシュで表されている点で、ロケーションアドレッシングについて考える必要はありません。
まとめ・次回予告
今回は、InterPlanetary File System、通称IPFSとは何かを解説しました。
まとめると、IPFSには以下のような利点があります。
- P2Pファイル共有システムを利用しているため、ノードの数に応じてデータのダウンロードが速くなる。
- また、特定のファイルはそのデータを保有するノードが存在する限りネットワーク上に残り続ける。
- データのハッシュをアドレスとすることで、同じデータの重複を削減できる。
次回は、IPFSのより詳しい仕組みを解説し、その仕組みがなぜブロックチェーン技術のストレージ問題解決に繋がるのかを説明していきます。