search
他カテゴリ

IPFS whitepaper まとめ ②

RIO's icon'
  • RIO
  • 2019/02/04 16:31
Content image

IPFSは(まとめ ①)で紹介した技術を統合し、進化させたものである。本章からIPFSについてまとめていく。

IPFSの設計

IPFSプロトコルは以下のサブプロトコルに分解することができる。

1.Identities ノードIDの生成と検証を管理

2.Network 通信プロトコルを利用して他ピアとの接続を管理

3.Routing 特定のピアやオブジェクトのロケーション情報を管理して情報を返す

4.Exchange 効率的な新型ブロック交換プロトコルであるBitSwap

5.Objects コンテンツアドレス型の不可変でリンクをもつMerkle DAG

6.Files  Gitに影響を受けたバージョン管理ファイルシステム

7.Naming 自己証明可能かつ変更可能な名前空間システム

サブプロトコル

Identities

各ノードをNodeIdによって識別する。NodeIdはS/Kademliaで交換される公開鍵を暗号学的ハッシュ関数によりハッシュ化したものである。よって各ノードは公開鍵と秘密鍵を保持する。ノード管理者はノード起動する際に毎回新しいNodeIdを取得することも可能だが、それを行うと未払いのネットワーク報酬を受け取れなくなるということがあり同じIdを使い続けるインセンティブ設計がなされている。

Network

IPFSのノードは常に100以上の他ノードと通信している。IPFSのネットワークスタックには次のような特徴がある。

・トランスポート トランスポート層のプロトコルが利用可能である。

・信頼性 IPFSはuTPやSCTP(この辺詳しくないです)を用いて下層ネットワークプロトコルが信頼性を持たない場合でも信頼性を確保できる

・接続性 IPFSはICE-NAT-traversalを利用している

・整合性 ハッシュ関数のチェックサムを利用することでメッセージの整合性を行うことが可能

・メッセージ認証 送り主の公開鍵とHMACを利用してメッセージ認証を行うことが可能

IPFSでは任意のネットワークが利用可能であり、必ずしもインターネットプロトコルにアクセスすることを想定してはいない。つまりオーバーレイネットワークとして利用が可能である。

Routing

IPFSは2つのルーティングをする必要がある。1つは他のノードのネットワークアドレスへのルーティング、もう1つはオブジェクトのホストする場所へのルーティングだ。IPFSはこれらのルーティングをKademiliaとCoralを基礎としてDSHTを用いることで実現している。

1KB以下のオブジェクトの場合そのオブジェクトは直接DHT上に保存し、それを超える場合はそのオブジェクトへの参照をDHT上に保存する。


ブロック交換-BitSwapプロトコル

IPFSでのデータ配布はBitSwapプロトコルに準拠したピア間のブロック交換によって行われる。BitSwapはBitTorrentに強く影響されたプロトコルでありBitTorrentと同様に各ピアは自分が取得したいブロックのリストと自分が提供できるブロックのリストを保持している。BitSwapはその上でそのブロックがどのファイルの一部かに関係なくブロック交換を行う一種の永続的なブロックの交換市場のように振る舞う。

BitSwapのピアは様々なブロックの交換戦略を取ることができる。ネットワーク全体のブロック交換効率はその交換戦略に依存することとなる。(戦略の紹介には複雑な数学的計算が含まれてるのでパス)


Merkle DAG オブジェクト

分散ハッシュテーブル(DHT)やBitSwapプロトコルによりデータブロックがP2P上で交換することが実現されている。IPFSではこれらの基盤上にMerkle DAGを構築する。これはオブジェクト間を暗号的ハッシュ値によるリンクで結びつけたものである。

メリット

1.コンテンツアドレッシング 全てのコンテンツがマルチハッシュのチェックサムを元に同定されリンクされる

2.耐改ざん性 コンテンツを改ざんする際はコンテンツに向けたリンクも改ざんせねばならないので耐改ざん性が向上する

3.重複除去 同じコンテンツからは同じリンクが発生するので重複しない。

またIPFSオブジェクトは文字列パスAPIでたどることができ、このパスは従来のUNIXファイルシステムやWebと同じように機能することができる。

Files

IPFSはバージョン管理システムを作るためにオブジェクトセットを定義した。これはGitによく似ている。(以下の翻訳は変なのでGitを知ってる方はそっちをイメージしてほしい)

1.ブロック 可変なサイズのデータブロック

2. リスト ブロックのコレクションまたはその他のリスト

3.ツリー ブロックのコレクション、リスト、またはその他のツリー

4.コミット ツリーのバージョンのスナップショット

Naming

動的に変更できるnamingがないと、IPFSのリンクを送信したとしても全ての新しいコンテンツにおける通信は帯域外で行われることとなってしまう。

Merkle DAGから外れるIPFSの特性を検討すると、それらのオブジェクトは

(a)ハッシュを介して取得され (b)整合性がチェックされ (c)他のユーザーとリンクされ (d)無期限にキャッシュされる


このようなプロトコルの元にIPFSは成り立っていると言うわけです。詳しいプログラムや数学的考えのところはしっかりとwhitepaperをご参照ください。


まとめ

今回はIPFSのプロトコルがどのようになっているのかを中心にまとめてみました。皆様の何かの参考になれば幸いです。


<参考文献>

・IPFS入門(https://ipfs-book.decentralized-web.jp/ipfs-whitepaper-jp/)

Whitepaper(https://ipfs.io/ipfs/QmR7GSQM93Cx5eAg6a6yRzNde1FQv7uL6X1o4k7zrJa3LX/ipfs.draft3.pdf)

公開日:2019/02/04
獲得ALIS:42.58
Article registration Article registration
RIO's icon'
  • RIO
  • @riorio
りおです

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
他カテゴリ

テレビ番組で登録商標が「言えない」のか考察してみる

連獅子 2021/10/09
Like token Tip token
31.20 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

ふたひい@web3 2020/05/16
Like token Tip token
114.82 ALIS
Eye catch
グルメ

バターをつくってみた

モミジ 2021/02/18
Like token Tip token
127.90 ALIS
Eye catch
ゲーム

【初心者向け】Splinterlandsの遊び方【BCG】

暗号資産ジョシ校生 蟻巣 2021/07/07
Like token Tip token
6.32 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

昆布森ちゃん 2021/01/19
Like token Tip token
38.31 ALIS
Eye catch
トラベル

わら人形を釘で打ち呪う 丑の刻参りは今も存在するのか? 京都最恐の貴船神社奥宮を調べた

こすもす 2021/08/07
Like token Tip token
486.35 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

大田コウキ 2021/04/06
Like token Tip token
947.13 ALIS
Eye catch
トラベル

無料案内所という職業

bansu 2019/06/11
Like token Tip token
84.20 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

ふたひい@web3 2020/05/16
Like token Tip token
114.82 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

nnppnpp(んぺー) 2021/09/08
Like token Tip token
46.60 ALIS
Eye catch
他カテゴリ

SASUKEオーディションに出た時の話

Taka 2021/01/22
Like token Tip token
35.87 ALIS
Eye catch
トラベル

梅雨の京都八瀬・瑠璃光院はしっとり濃い新緑の世界

こすもす 2021/05/25
Like token Tip token
216.64 ALIS