TECHNOLOGY

技術情報

IPFSとは(vol.2) IPFSの動作について

今回はIPFSの特徴として、次の5項目にまとめてみました。
1.IPFSネットワーク内の保存されたデーターにはユニークなフィンガープリントが設定されます。
2.IPFS上に登録されたデータはネットワーク内では重複を排除します。
3.各ネットワークノードには、追加されたファイルと、インデックス情報のみが格納されます。
4.コンテンツを検索する時は、ネットワークにユニークなインデックス情報を持ったコンテンツを格納しているノードを見つけるよう動作します。
5.すべてのコンテンツは、IPNSと呼ばれる「分散型命名システム」を使用して、人間が読める名前で見つけることができます。

1.IPFSネットワーク内の保存されたデーターにはユニークなフィンガープリントが設定されます

IPFSに保存されたデータは最初にデータ内容に基づく「ハッシュ関数」により計算されその結果をフィンガープリントとしてオリジナルデータに追加保存されます。
その後、内容データに改定(改ざん)があるとこのハッシュ値は最初に保存されたハッシュ値と異なるので改定(改ざん)されたデータかオリジナルデーターかを容易に比較出来るのでバージョン管理や悪意のある改ざんデータなのかを直ぐに見分けることが出来ます。



実際例として、以下の文に対して(SHA-256)によるハッシュ値を比較してみます。

ひろぴーのbitcoin-fx」→”E5A16495E7A4DA429196504545F49AEF335CE62E49367BC67449502B218441C5”


ひろぴーのbitcoinfx」→"BCC11A09A36AD3B399A29ACF0359F55AE2254A12446484BE6BDF328AF5FE8F1F"


となり、このようにデータの長さに関係なくハッシュ値は同一桁の文字列で出力されます。
bitcoinとfxの間の『 – 』(ハイフン)を抜いただけでこの様になります。
これで改定(改ざん)されたかどうかは、一目瞭然ですね。
IPFSシステムではこの固有の情報をフィンガープリントとして自動的に設定します。


2.IPFS上に登録されたデータはネットワーク内では重複を避けます

IPFS内のデータはDirected acyclic graph(DAG:有向非巡回グラフ)の構造により重複しない様に設計されています。

(出典:REXXホワイトペーパーより)

ちなみに、DAGの構造を使用している(実装を目指している。)暗号通貨(仮想通貨)は「BYTEBALL」、「IOTA」、「REXX」などがあります。

実際にIPFSのデータ構造は1.で説明したフィンガープリントとデーターを保存したコンテンツアドレスと改定情報を含むインデックス情報がDAGとMerkle木(Merkle treeまたはHash treeとも呼ばれる:情報のツリー構造)によりデーターの検証が行われ各ノードに分散して格納、取り出しが行われます。


3. 各ネットワークノードには、追加されたファイル(コンテンツ)と、誰が何を格納しているのかを特定する為のインデックス情報のみが格納されます

先に述べた通り、IPFSネットワークにファイルが追加されると、それを暗号化したハッシュ(フィンガープリント)が生成される仕組みなので、ファイルの格納情報は非常に小さくかつ安全性と耐改ざん性をもちます。

この場合、目的のファイルのハッシュ値をダイレクトに指定してもその目的のファイルへは辿り着きません。

ファイルのアドレスは通常、ルートオブジェクトを識別するハッシュで始まり、格納先のパスが次に続きます。実際に格納されているファイルは分散され複数のノードに格納されます。万が一外部から攻撃されても分断されたデーターのみ、イメージ的にはシュレダーで切り刻まれた紙片しか取り出されないので、被害は最小限に留めることが出来ます。

データーへのアクセスはサーバではなく特定のオブジェクトと通信して、そのオブジェクト内のパスを調べるのです。こうした構成によりデータの信憑性を確保しています。

4.ファイル(コンテンツ)を検索する時は、IPFSネットワーク内にユニークなインデックス情報を持ったコンテンツを格納しているノードを見つけるよう動作します

IPFSシステムは目的のファイル(画像、記事、映像など)を参照する時に、どこのサーバに保管されているかを調べるのではなく、そのファイルのハッシュ値を含むインデックス情報を参照します。

つまり、ブラウザで特定のページにアクセスしたい場合、IPFSはネットワーク全体に対して「インデックス情報に対応するこのファイルを持っているか?」と問い合わせを行い、該当するIPFSのノードがファイルを返すことで、ページにアクセスできるという仕組みです。
この方法を「コンテンツ・アドレッシング」と呼んでいます。

また、それらのファイルは分散した状態で複数のノードに格納されているので、それらを集め元通りに並べ直し、要求側のコンピュータ画面に表示されます。

ちなみに従来のWEBで使われているサーバーの場所を求める「http:// 」から始まるアドレス方式を「ロケーションアドレッシング」といいます。

5.すべてのファイルは、IPNSと呼ばれる「分散型命名システム」を使用して、人間が読める名前で見つけることができます

Inter-Planetary Name System(IPNS)は、IPFSコンテンツへの可変リンクを作成および更新するためのシステムです。

IPFSのオブジェクトのコンテンツアドレスは不変なのですが、実際にはコンテンツが更新されるたびにアドレスが変わります。 これでは、最新バージョンのものを入手するのは困難となるのですが、そこでIPNSという技術が活躍します。

IPNSの名前は公開鍵のハッシュです。 そのハッシュには、リンクしているハッシュに関する情報を含むレコードが関連付けられています。
秘密鍵によって署名されていますので、その秘密鍵を持っていれば 新しい記録は更新され署名して公開することができます。
こうすることによりバージョン管理が可能になります。

6. IPFSの特徴と利点(まとめ)

IPFSは、重複排除、高性能、およびクラスタ化された永続性を保持する
 重複データを排除しストレージを効率的に使用し、一部のノードが壊れたりダウンしても一旦格納されたデーターは永久に保存可能です。

HTTPと比較し高効率である
 HTTPは、一度に複数のコンピュータからファイルを取得するのではなく、一度に1台のコンピュータからファイルをダウンロードするのでトラフィックを一定時間専有してしまいます。
IPFSシステムを使用した場合、ビデオ配信では、P2Pアプローチで帯域幅コストを60%節約できます。つまり、大量のデータを高効率で配布することができます。また、不要な複製がゼロであれば、ストレージも節約できます。

ファイルアーカイブに最適である
 IPFSはファイルのすべてのバージョンを保持し、データのミラーリングのために回復力のあるネットワークを簡単に設定できます。 大量のデータをユーザーに提供するならば、ピア・ツー・ピアにより大幅に帯域幅を節約することができ、IPFSは安全なP2Pコンテンツ配信を提供できます。
巨大なデータセットを扱ったり、配布したり、分析したりしているのであれば、IPFSは高速なパフォーマンスと分散アーカイブが可能です。

ウェブの集中化によるトラフィックに有利である
インターネットは、人類の歴史において急速に発展し、革新を続けてきました。
旧式のネットワークではアクセスが集中すると遅延やバックボーンへの接続が途絶えたり回復に時間が掛かります。
IPFSネットワークでは従来ネットワークを改善し、大量のデータをIPFSで処理可能とし、さらにIPFSとブロックチェーンを融合し、不変の永続的なIPFSリンクをブロックチェーントランザクションに配置する事ができます。
また、これによりデータ自体をチェーンに追加することなく、コンテンツにタイムスタンプが付与され、セキュリティも確保されます。

これらの理由により、IPFSは従来システムに比べシステム構築コストと運用コストを節約でき、効率的な方法でコンテンツを配信する事が可能になりました。