ブロックチェーンと相性が良いとされているIPFSがどのようなものか知りたかったので調べてみました!簡単にまとめているのでぜひここでさらっと勉強していってください。
概要
IPFSは(Inter Planetary File System)の略称であり、ピアツーピア(?P2P)型の分散型ファイルシステムである。全てのデバイスを一つのファイルシステムに結合することを目的としたものです。IPFS上にバージョン管理可能なファイルシステムやブロックチェーン、または永続的なWebを構築することが可能であり、単一障害点がなくピア同士がお互いの信頼を必要とせずに実現できるシステムとなっている。
序論
これまで多くのグローバル分散ファイルシステムを構築する試みがなされてきたが、多くは失敗に終わっている。アプリケーションとして分散ファイルシステムが達成されているものもあるが、それはあくまでアプリケーションでありその上でシステムやアプリケーションが動作するインフラ基盤としてデザインされているものはまだない。その点で一般のファイルシステムとして利用可能なグローバル規模のテイレンシー分散ファイルシステムというものはこれまで現れてきていないと言える。
この理由は明確でHTTPが非常に優れていたからである。しかしIPFSはそれを捨て新たなデータ転送プロトコルを開発しました。IPFSは「全てのデータを統一されたMerkle DAGにモデリングする」という基本原則のもとに設計されています。
背景
IPFSが統合しようとしているP2Pシステムの重要技術の振り返り。以下小見出しの左が取り入れる技術名で右が既存のプロジェクト名
Kademlia DHT :
1.高効率のデータ探索:システムのノード数をnとしたとき、問い合わせ先のノード数は平均 log2(n)のオーダーとなります。(例えば、10,000,000ノードであれば20ホップでデータ探索が可能です。)
2.コーディネーションの低いオーバーヘッド:ノード間でやりとりされるコントロールメッセージ数が最適化されます。
3.より長く接続されているノードを重視することで耐攻撃性を実現しています。
4.GnutellaやBitTorrentなど多くのP2Pシステムで実際に利用されており、2,000万ノードのネットワークを形成している実績があります。
Coral DSHT:
Coral DSHTはKademlia DHTを拡張したものである。ストレージとネットワーク帯域を必要以上に消費しないようにすることと、特定のノードに負荷が集中しないようにすることと、探索のレイテンシーを軽減したことが主な特徴となっている。
S/Kademlia DHT:
S/Kademlia DHTはKademliaを悪意の攻撃を防ぐために改良したものである。
BitTorrenは優れたファイル共有システムであり、信頼性の低いピアが存在するP2Pネットワークにおいても各ピアが連携できる仕組みを作ることに成功している。IPFSが取り入れた主な特徴は以下の通り。
1.「擬似しっぺ返し(tit-for-tat)戦略」と言われる貢献するノードには報酬を与え、単に他者のリソースを取得するだけのノードには罰則を与えると言う仕組み。
2.シーダー(ファイルの完全なデータを持つピア)の負荷を下げ、シーダーでもないピアもデータ交換に参加できるようにする仕組み。
3.しっぺ返し戦略は、略奪的帯域幅共有戦略(exploitative bandwidth sharing strategies)に対して脆弱性を持つので、PropShare戦略というものが知られる。
?バージョン管理システムはファイルシステムに対する変更履歴を管理し、かつその各バージョンを効率的に配布することを容易にしてくれます。Gitはその一例である。IPFSはGitに用いられているファイルシステム内の変更履歴をMerkle DAGのオブジェクトにモデル化することで分散システムに親和性の高いシステムを取り入れる。
自己証明型ファイルシステムは(a)分散トラストチェーン(b)平等でグローバルな名前空間の2つを実現するための実装である。
SFSではユーザーはサーバによって提供される公開鍵を検証し共有鍵を交換することで全ての通信を秘匿化できる。全てのSFSインスタンスはグローバルで暗号学的な名前空間を共有するため、中央機関による管理が必要としない。
IPFSはこれらの既存技術を組み合わせ、単純化し進化させ1つの技術として融合しているものである。IPFSはそこにアプリケーションをデプロイして動作させる新たな基盤として、または新たな大容量データのバージョン管理や配布を行うシステム基盤として活用を可能にするものである。
IPFSはP2Pであり、それぞれのローカルストレージにIPFSオブジェクトを格納し、ノード同士がつながりあい、これらのオブジェクトを交換する。
まとめ
今回はどのような技術の上に IPFSが成り立っているのかというところまでのまとめまで!
続き=>(IPFS whitepaper まとめ②)
<参考文献>
・IPFS入門(https://ipfs-book.decentralized-web.jp/ipfs-whitepaper-jp/)
Whitepaper(https://ipfs.io/ipfs/QmR7GSQM93Cx5eAg6a6yRzNde1FQv7uL6X1o4k7zrJa3LX/ipfs.draft3.pdf)