FilecoinとIPFSの勉強の参考サイト
FilecoinとIPFSについて学習するに際しての記録です。日本語情報が全くないので記事にまとめて行って振り返られるようにしたいです。また、Dappを作る上でデータストレージとして利用したいとざっくり考えているので、その調査も兼ねています。
得られたことをまとめていきます。
筆者はFilecoinやIPFSの勉強を始めるときに、以下ぐらいの知識があるベースで記事を書いていきます.
このテーマに関連する知識としてはこのぐらいです。
httpの方はこちらから https://proto.school/verifying-storage-on-filecoin
- Bitcoinのアルゴリズムの理解(ざっくり)
- コンセンサスアルゴリズムの理解(PoCやPoS)
- IPFSにファイルをアップロードしたことがある(go-ipfsを使用)
- 現状のwebの構成の大体の理解
- dns
- 2021年現在のwebがサーバーとクライアントで動いていることの理解
データ格納の準備
ファイルコインネットワークにファイルを格納する前に、必ず「Filecoin Piece」に変換しなければならない。
ファイルの変換の第一段階として、IPLD DAGを作るためにUnixFS(フォーマットの名前)に基づいてまとめ上げられます。
全く理解できなかったので、それぞれの用語について調べました。
DAG(Directed Acyclic Graph)有向非巡回グラフ
全体感を把握するにはこちらの記事→ https://aire-voice.com/dag/3779/
もう少し詳しくてわかりやすい記事→ https://ascii.jp/elem/000/001/938/1938955/
これ以外にも色々と記事があったが、数分のブラウジングでは全体像を掴むだけで詳しく処理のフローを理解するには至らなかった
UnixFS
ipfsプロトコルと深く関係している。ipfsにファイルをアップロードするときにも、巨大なファイルをアップロードしたい時がある。ブロックのサイズに上限がある関係で、それを分割して詰め込まなければならない。分割されたデータ同士を関係づける必要がある。
分割されたデータを関係づけるためのメタデータを含んだフォーマットのことをUnixFSと呼ぶ。
Unixとあるぐらいなので、Unixのファイルシステムと似ている←一緒ではない。
ipfsにファイルをアップロードするということは、ブロックを作ることである。らしい。
IPLD
ざっくりいうと
コンテンツ指向のルーティングにおける共通の仕様
公式サイトでは、
IPLD is the data model of the content-addressable web. It allows us to treat all hash-linked data structures as subsets of a unified information space, unifying all data models that link data with hashes as instances of IPLD.
と書かれていました。
Google翻訳はこれ
IPLDは、コンテンツアドレス可能なWebのデータモデルです。これにより、ハッシュにリンクされたすべてのデータ構造を統合された情報スペースのサブセットとして扱い、データとハッシュをリンクするすべてのデータモデルをIPLDのインスタンスとして統合できます。
わからなかったので補足したいが、難しかったので随時追記していこうと思う。
コンテンツ指向のプロトコルにおけるwebのデータモデルの一つである。
InterPlanetary Linked Data.とあるように、異なる世界線(gitからbitcoinとか、bitcoinからethereumなど)のコンテンツでもリンクさせられるらしい。
(https://proto.school/merkle-dags/08 より引用して意訳)
Merkle-DAGベースのデータ形式とその正式な記述のエコシステムを開発し、幅広いデータ交換をサポートするための共通様式がIPLD。「CIDがコンテンツアドレスデータを参照するための共通様式を提供するのと同様に、IPLDは、コンテンツアドレスデータ構造を構造化および通信するための正式なスキーマとして共通フォーマットを定義します。」
まとめ
全貌を理解する必要はないかもしれないが、個人的に楽しいのでどんどんふかぼってしまう。内容の薄い記事になってしまったが、更新の動機付けにもなるので公開していきましょう!