実践IPFS入門
2023年11月8日紙版発売
2023年11月8日電子版発売
董天一,戴嘉乐,黄禹铭 著,菊池将和 訳
B5変形判/280ページ
定価3,850円(本体3,500円+税10%)
ISBN 978-4-297-13837-0
書籍の概要
この本の概要
IPFS(InterPlanetary File System)とは,Protocol Labsが開発を進めている分散型ファイルシステムです。耐障害性,負荷分散,耐改ざん性などの観点から,HTTPを置き換えて惑星間通信を可能にするという思想を基に開発が進められています。ところがIPFSは複数の通信レイヤで構成されており理解が難しいうえに,日本語のドキュメントが少ないため,英語でそれぞれを学ぶのは困難です。本書は,これらを日本語にまとめることで,5G時代を迎える日本の技術力向上に資することを目的としています。原著執筆者は,中国コミュニティで非常に影響力のある3人のIPFS/Filecoin支持者です。本書はProtocol Labsから高く評価され,強く推奨されています。
- 著者
董天一(ドン・ティェンイー)
北京大学にて修士号取得後,OracleにてEコマースアーキテクチャに従事。中国におけるブロックチェーン関連技術のパイオニア。
戴嘉乐(ダイ・ジャラェ)
電子科技大学を卒業後,Baiduを経て,OPPOの金融ビジネスチームでソリューションアーキテクトを務める。
黄禹铭(フゥァン・ユーミン)
シンガポール国立大学にてブロックチェーン技術を研究し,博士号を取得。現在,同大学でリサーチフェローとして活動中。
- 訳者
菊池将和(きくちまさかず)
外資系証券会社で金融商品開発責任者を経て,ハーバード大学でソフトウェア・エンジニアリングの修士号を取得。ブロックチェーンエンジニアとしてSecuritize Japanに参画後,2020年のハッカソンでEthereum Foundation,Protocol Labsから賞を受賞したことをきっかけにConsenSys主催のアクセラレータに採択される。現在はWeb3メンターやETHGlobalハッカソンの審査員を務める一方,スイスを拠点にSecured Finance AGを立ち上げ,DeFi(分散型金融)・デジタル資産領域における革命的なFixed Income市場の整備を先導。設立半年で$4Mを調達。内閣府Trusted Web推進協議会のタスクフォース委員も務める。
本書のサンプル
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
目次
第1章 IPFSについて
1.1 IPFSの概要
- 1.1.1 IPFSの概念と定義
- 1.1.2 IPFSの起源
1.2 IPFSとブロックチェーンの関係
- 1.2.1 ブロックチェーンの基礎
- 1.2.2 ブロックチェーンの発展
- 1.2.3 IPFSがブロックチェーンにもたらす変化とは
- 1.2.4 Filecoin:IPFS技術に基づくブロックチェーンプロジェクト
1.3 IPFSの利点と価値
- 1.3.1 IPFSの利点
- 1.3.2 他のブロックチェーンストレージ技術との比較
1.4 IPFSの応用分野
1.5 本章のまとめ
第2章 IPFSの基礎
2.1 分散ハッシュテーブル(DHT)
- 2.1.1 Kademlia DHT
- 2.1.2 Coral DSHT
- 2.1.3 S/Kademlia DHT
2.2 ブロック交換プロトコル(BitTorrent)
- 2.2.1 BitTorrentで使われる用語
- 2.2.2 P2Pブロック交換プロトコル
- 2.2.3 ブロッキング戦略
2.3 バージョン管理(Git)
- 2.3.1 バージョン管理の種類
- 2.3.2 スナップショットストリーム
- 2.3.3 ローカル操作
- 2.3.4 データ追加のみ
- 2.3.5 整合性チェック
- 2.3.6 作業領域と作業状態
- 2.3.7 ブランチ(分岐)
2.4 自己検証ファイルシステム(SFS)
- 2.4.1 SFSデザイン
- 2.4.2 自己検証ファイルパス
- 2.4.3 ユーザ認証
- 2.4.4 キー失効メカニズム
2.5 Merkle TreeとMerkle DAG
- 2.5.1 Merkle Tree
- 2.5.2 Merkle DAG
2.6 本章のまとめ
第3章 IPFSプロトコル・スタック
3.1 アイデンティティ層(Identity)
3.2 ネットワーク層(Network)
3.3 ルーティング層(Rouitng)
3.4 交換層(Exchange)
- 3.4.1 BitSwapプロトコル
- 3.4.2 BitSwap Credit
- 3.4.3 BitSwap Strategy
- 3.4.4 BitSwap Ledger
3.5 オブジェクト層(Objects)
- 3.5.1 パス
- 3.5.2 ローカルオブジェクト
- 3.5.3 オブジェクトのピン留め
- 3.5.4 オブジェクトの公開
- 3.5.5 オブジェクトレベルの暗号化
3.6 ファイル層(Files)
- 3.6.1 ファイルオブジェクト:blob
- 3.6.2 ファイルオブジェクト:list
- 3.6.3 ファイルオブジェクト:tree
- 3.6.4 ファイルオブジェクト:commit
- 3.6.5 バージョン管理
- 3.6.6 ファイルシステムパス
- 3.6.7 ファイルのリストとblobへの分割
- 3.6.8 パスによる検索のパフォーマンス
3.7 ネーミング層(Naming)
- 3.7.1 IPNS:ネーミングと可変ステータス
- 3.7.2 自己検証ネーミング
- 3.7.3 人にやさしいネーミング
3.8 本章のまとめ
第4章 IPFSモジュール
4.1 Multiformats
- 4.1.1 Multihash
- 4.1.2 Multibase
- 4.1.3 Multiaddress
- 4.1.4 Multicodec
- 4.1.5 Multistream
- 4.1.6 Multigram
4.2 libp2p
- 4.2.1 libp2pの機能
- 4.2.2 libp2pのコア原則
- 4.2.3 libp2pの用途
4.3 IPLD
- 4.3.1 IPLDデータモデル
- 4.3.2 コンテンツ識別子(CID)
- 4.3.3 CIDデコーディング規則
4.4 本章のまとめ
第5章 Filecoin
5.1 Filecoinプロジェクトの紹介
- 5.1.1 Filecoinプロジェクトの起源
- 5.1.2 Filecoinプロジェクトの価値
- 5.1.3 Filecoinの価値交換市場
- 5.1.4 インターネット使用の最適化
5.2 FilecoinとIPFSの関係
5.3 Filecoin経済システム
- 5.3.1 Filecoinの配布と使用方法
- 5.3.2 Filecoinマイナーの収益構造
5.4 Filecoin技術システムの概要
- 5.4.1 Filecoinシステムの基本概念
- 5.4.2 Filecoin取引市場の運営について
- 5.4.3 Filecoinブロックチェーンのデータ構造
- 5.4.4 Filecoinブロックチェーンの仕組み
5.5 分散ストレージネットワークプロトコル(DSN)
- 5.5.1 Put,Get,Manage操作
- 5.5.2 ビザンチン問題とストレージエラー
- 5.5.3 DSNプロトコルにおける2種類の基本操作
- 5.5.4 ストレージノード操作プロトコル
- 5.5.5 検索ノード操作プロトコル
- 5.5.6 ネットワーク操作プロトコル
5.6 Filecoin取引市場
- 5.6.1 ストレージ市場
- 5.6.2 検索市場
5.7 Filecoinブロックチェーンコンセンサスメカニズム
- 5.7.1 コンセンサスメカニズムの概要
- 5.7.2 コンセンサスメカニズムが解決すべき3つの課題
5.8 PoRepとPoSt
- 5.8.1 ストレージ証明の6つの定義
- 5.8.2 ストレージ証明のメンバー
- 5.8.3 PoRep
- 5.8.4 PoSt
- 5.8.5 PoRepとPoStの実装
5.9 ネットワーク攻撃と防御
- 5.9.1 シビル攻撃
- 5.9.2 外部ソース攻撃
- 5.9.3 生成攻撃
5.10 その他の機能
- 5.10.1 Filecoinスマートコントラクト
- 5.10.2 Bridge相互接続システム
5.11 本章のまとめ
第6章 IPFSの開発(基礎編)
6.1 IPFSのインストール
- 6.1.1 パッケージによるインストール
- 6.1.2 Dockerによるインストール
- 6.1.3 ipfs-updateによる実装方法
6.2 IPFSストレージと設定の初期化
- 6.2.1 初期化
- 6.2.2 設定ファイルにアクセスする
6.3 IPFSファイルシステムとのデータ送信
- 6.3.1 IPFSにファイルを追加する方法
- 6.3.2 IPFSからファイル内容を読み取る方法
- 6.3.3 内容の検証
- 6.3.4 IPFS内でファイル名とディレクトリ情報を書き込む方法
- 6.3.5 IPFS Wrapped情報を確認する方法
- 6.3.6 親ディレクトリのハッシュ値を使ってファイル内容を読み取る方法
6.4 ローカル環境をIPFSネットワークにつなげる方法
6.5 HTTP Webとの通信方法について
- 6.5.1 ローカルのHTTPゲートウェイでIPFSデータを取得する
- 6.5.2 パブリックHTTPゲートウェイでIPFSデータを取得する
- 6.5.3 IPFS Webのコントロールボード(Web UI)
6.6 APIを使用する方法
- 6.6.1 IPFSコマンドの使い方
- 6.6.2 IPFSの拡張性
- 6.6.3 IPFS用のAPI
6.7 本章のまとめ
第7章 IPFSの開発(応用編)
7.1 IPFS内で動的コンテンツを発信する方法
7.2 IPFSネットワーク内で長期的にデータを保存する方法
7.3 IPFS Merkle DAGを使ってみる
- 7.3.1 Merkle DAGの構成を作成する
- 7.3.2 子ブロックのデータを組み込む
- 7.3.3 ブロックとオブジェクトの区別
- 7.3.4 ブロックを操作する
- 7.3.5 オブジェクトを操作する
7.4 IPFS Pubsub機能の使い方
- 7.4.1 ノード環境を整える
- 7.4.2 ノードBを実行する
- 7.4.3 AノードとBノードを繋げる
- 7.4.4 Aノードを実行する
- 7.4.5 Pubsub情報
7.5 IPFSのプライベートネットワークの作成と使用について
- 7.5.1 環境の準備
- 7.5.2 秘密鍵を共有する
- 7.5.3 秘密鍵をノードにアップロードする
- 7.5.4 bootstrapノードを追加する
- 7.5.5 各ノードの動作と確認
7.6 本章のまとめ
第8章 IPFSプロジェクトの実践
8.1 go-ipfsを用いてGit分散型サービスを最適化する方法
- 8.1.1 インストール
- 8.1.2 Gitリポジトリを初期化する
- 8.1.3 IPFSネットワークにマウントさせる
- 8.1.4 Gitを使ってIPFSからクローンリポジトリを作成する
8.2 js-ipfsを利用してストリーミングツールを開発する
- 8.2.1 Node.jsの開発環境を整える
- 8.2.2 webpackを使ってプロジェクトを作成する
- 8.2.3 ストリーミングツールのモジュールを開発する
- 8.2.4 ステータスモジュールを開発する
- 8.2.5 js-ipfsモジュールをインストールする
- 8.2.6 ドラッグしてアップロードする機能を実装する
- 8.2.7 IPFS内のデータをストリーミングツールで読み取る
- 8.2.8 コンテンツ再生のステータス状態を設定する
- 8.2.9 開発のまとめ
8.3 本章のまとめ
この本に関連する書籍
-
堅牢なシステム開発/運用を実現するための ビットコイン[技術]入門
本書は,最初に構築されたブロックチェーンネットワークである「ビットコインネットワーク」の解説書です。利用される技術(暗号,アドレス,トランザクション,ブロッ...
-
堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門
ブロックチェーンの技術は,ビットコインに代表される仮想通貨に使用されるだけではありません。従来のように中央集中管理型のシステムに比べて,改ざんが難しく,かつ...
-
スマートコントラクト本格入門―FinTechとブロックチェーンが作り出す近未来がわかる
FinTechの中でも大きなインパクトをもたらす技術と目されている「スマートコントラクト」。本書では,FinTechの最新アウトラインから入り,スマートコントラクトの基礎...