ブロックチェーン 理論と実践
マイナビ
著者:杨保华、陈昌
訳者:篠田ヒロシ、姜武、潘莉
序文
はじめに
理論編
Chapter 1 ブロックチェーン構想の誕生
1-1 物理的な貨幣からデジタル貨幣へ
1-2 巨人の肩に立つ
1-3 驚くべき社会学的実験
1-4 潜在的なビジネス価値
1-5 まとめ
Chapter 2 ブロックチェーン技術の概要
2-1 定義と原則
2-2 ブロックチェーン技術の進化と分類
2-3 主な課題とチャレンジ
2-4 トレンドと展望
2-5 ブロックチェーンに対する誤解
2-6 まとめ
Chapter 3 代表的なアプリケーションシナリオ
3-1 アプリケーションシナリオの概要
3-2 金融サービス
3-2-1 銀行金融管理
3-2-2 証券取引
3-2-3 クラウドファンディング投資
3-3 与信管理と所有権管理
3-3-1 与信管理
3-3-2 所有権管理
3-3-3 その他のプロジェクト
3-4 資源共有
3-4-1 短期レンタルシェア
3-4-2 地域エネルギーシェア
3-4-3 電子商取引プラットフォーム
3-4-4 ビッグデータの共有
3-4-5 共有リスクの低減
3-5 貿易管理
3-5-1 国境を越えた貿易
3-5-2 物流サプライチェーン
3-5-3 一帯一路
3-6 モノのインターネット
3-6-1 代表的な運用
3-6-2 IBM
3-6-3 Filament
3-6-4 NeuroMesh
3-6-5 公共ネットワークサービス
3-7 その他のシナリオ
3-7-1 クラウドストレージ
3-7-2 医療
3-7-3 通信とソーシャルコミュニケーション
3-7-4 投票
3-7-5 予測
3-7-6 電子ゲーム
3-8 まとめ
Chapter 4 分散型システムの課題
4-1 一貫性問題
4-1-1 定義と重要性
4-1-2 課題とチャレンジ
4-1-3 一貫性の要件
4-1-4 制約付き一貫性
4-2 コンセンサスアルゴリズム
4-2-1 課題とチャレンジ
4-2-2 共通アルゴリズム
4-2-3 理論限界
4-3 FLPの不可能性
4-3-1 不可能性の定義 4-3-2 不可能性の理解
4-4 CAP定理
4-4-1 CAP定理の定義
4-4-2 アプリケーションシナリオ
4-5 ACID原理
4-6 PaxosアルゴリズムとRaftアルゴリズム
4-6-1 Paxosアルゴリズム
4-6-2 Raftアルゴリズム
4-7 ビザンチン将軍問題とアルゴリズム
4-7-1 2 人の将軍のパラドックス
4-7-2 ビザンチン問題
4-7-3 ビザンチンフォールトトレラントアルゴリズム
4-7-4 新しい解決アイデア
4-8 信頼性指標
4-8-1 9が付く指標
4-8-2 MTBFとMTTR
4-8-3 信頼性の向上
4-9 まとめ
Chapter 5 暗号とセキュリティ技術
5-1 ハッシュアルゴリズムとメッセージダイジェスト
5-1-1 ハッシュの定義
5-1-2 共通アルゴリズム
5-1-3 性能
5-1-4 メッセージダイジェスト
5-1-5 ハッシュ攻撃と保護
5-2 暗号と復号アルゴリズム
5-2-1 暗号化・復号システムの基本構成要素
5-2-2 対称暗号アルゴリズム
5-2-3 非対称暗号アルゴリズム
5-2-4 選択平文攻撃
5-2-5 ハイブリッド暗号化メカニズム
5-2-6 離散対数とディフィーヘルマン鍵交換プロトコル
5-3 メッセージ認証符号とデジタル署名
5-3-1 メッセージ認証符号
5-3-2 デジタル署名
5-3-3 安全性
5-4 デジタル証明書
5-4-1 X.509 証明書の仕様
5-4-2 証明書形式
5-4-3 信頼の証明書チェーン
5-5 PKIシステム
5-5-1 PKI基本コンポーネント
5-5-2 証明書の発行
5-5-3 証明書の失効
5-6 Merkleツリー構造
5-7 ブルームフィルタ
5-7-1 ハッシュベースのクイック検索
5-7-2 より効率的なブルームフィルタ
5-8 準同型暗号
5-8-1 定義
5-8-2 課題とチャレンジ
5-8-3 関数暗号
5-9 その他の問題
5-9-1 ゼロ知識証明
5-9-2 量子暗号
5-9-3社会工学
5-10 まとめ
Chapter 6 ビットコイン~ブロックチェーン発祥の地
6-1 ビットコインプロジェクトの紹介
6-1-1 ビットコインのマイルストーン
6-1-2 その他のデジタル通貨
6-2 原理と設計
6-2-1 基本的なトランザクションプロセス
6-2-2 重要な概念
6-2-3 革新的な設計
6-3 マイニング
6-3-1 基本
6-3-2 マイニングのプロセス
6-3-3 マイニングの状況
6-4 コンセンサスメカニズム
6-4-1 Proof of Work(PoW)
6-4-2 Proof of Stake(PoS)
6-5 ライトニングネットワーク
6-5-1 RSMC
6-5-2 HTLC
6-5-3 ライトニングの概念
6-6 サイドチェーン
6-6-1 SPV Proof
6-6-2 Two-way Peg
6-6-3 最新情報
6-7 トピックス
6-7-1 設計のトレードオフ
6-7-2 フォーク
6-7-3 トランザクション展性
6-7-4 スケーリング(ブロックサイズの拡大)
6-7-5 ビットコインの規制とトラッキング
6-8 関連ツール
6-8-1 クライアント
6-8-2 ウォレット
6-8-3 マイナー(マイニングデバイス)
6-9 まとめ
Chapter 7 イーサリアム~デジタル通貨の束縛からの脱却
7-1 イーサリアムプロジェクトの紹介
7-1-1 イーサリアムプロジェクトの歴史
7-1-2 主な特徴
7-2 基本概念
7-3 基本設計
7-3-1 スマートコントラクト関連
7-3-2 トランザクションモデル
7-3-3 コンセンサス
7-3-4 攻撃の軽減
7-3-5 スケーラビリティの向上
7-4 関連ツール
7-4-1 クライアントと関連ライブラリ
7-4-2 イーサリアムウォレット
7-4-3 IDE
7-4-4 情報サイト
7-5 クライアントのインストール
7-5-1 PPAからの直接インストール
7-5-2 ソースコードからのコンパイル
7-6 スマートコントラクトの使用
7-6-1 テストブロックチェーンの構築
7-6-2 スマートコントラクトの作成とコンパイル
7-6-3 スマートコントラクトのデプロイ
7-6-4 スマートコントラクトの呼び出し
7-7 スマートコントラクトの事例:投票
7-7-1 スマートコントラクトコード
7-7-2 コード解説
7-8 まとめ
Chapter 8 Hyperledger~ビジネスのための分散型台帳
8-1 Hyperledgerプロジェクトの概要
8-2 プロジェクトの構成
8-2-1 組織編成
8-2-2 大中華圏技術作業部会
8-3 トッププロジェクトの紹介
8-3-1 Fabricプロジェクト
8-3-2 Sawtoothプロジェクト
8-3-3 Irohaプロジェクト
8-3-4 Blockchain Explorerプロジェクト
8-3-5 Celloプロジェクト
8-3-6 Indyプロジェクト
8-3-7 Composerプロジェクト
8-3-8 Burrowプロジェクト
8-4 開発ツール
8-4-1 Linux Foundation ID
8-4-2 Jira-タスクと進捗管理
8-4-3 Gerrit-コードリポジトリとレビュー管理
8-4-4 RocketChat-オンラインコミュニケーション
8-5 コードのコミット
8-6 まとめ
実践編
Chapter 9 Hyperledger Fabricのデプロイと利用
9-1 序論
9-2 ローカル環境でのコンパイルとインストール
9-2-1 オペレーティングシステム
9-2-2 環境構築
9-2-3 コードの取得
9-2-4 fabric-peerのインストール
9-2-5 fabric-ordererのインストール
9-2-6 fabric-caのインストール
9-2-7 補助ツールのインストール
9-2-8 chaintoolの取得
9-2-9 Go言語関連ツールのインストール
9-2-10 設定のサンプル
9-3 Dockerイメージの使用
9-3-1 Dockerサービスのインストール
9-3-2 docker-composeのインストール
9-3-3 Dockerイメージの取得
9-3-4 イメージのDockerfile
9-4 Fabricネットワークの起動
9-4-1 ネットワークトポロジー
9-4-2 関連する設定ファイルの準備
9-4-3 Ordererノードの起動
9-4-4 Peerノードの起動
9-4-5 ネットワークの操作
9-4-6 コンテナベースでのアプローチ
9-5 チェーンコードの概念と使用方法
9-5-1 チェーンコード操作
9-5-2 コマンドパラメータ
9-5-3 チェーンコードのインストール
9-5-4 チェーンコードのインスタンス化
9-5-5 チェーンコードの呼び出し
9-5-6 チェーンコードのクエリ
9-5-7 チェーンコードのアップグレード
9-5-8 チェーンコードのパッケージ化と署名
9-6 複数チャンネルの使用
9-6-1 チャンネル操作コマンド
9-6-2 コマンドオプション
9-6-3 チャンネルの作成
9-6-4 チャンネルへの参加
9-6-5 チャンネルの表示
9-6-6 ブロックの取得
9-6-7 チャンネル設定の更新
9-7 SDKサポート
9-8 本番環境での注意事項
9-9 まとめ
Chapter 10 Hyperledger Fabricの設定・管理
10-1 序論
10-2 Peerノードの設定
10-3 Ordererの設定
10-4 cryptogenによるメンバー管理
10-4-1 コンフィギュレーションファイル
10-4-2 サブコマンドとパラメータ
10-4-3 鍵と証明書の生成
10-4-4 設定テンプレート
10-5 configtxgenによるチャンネル設定
10-5-1 configtx.yaml設定ファイル
10-5-2 コマンドオプション
10-5-3 Ordererブロックの生成と表示
10-5-4 チャンネルトランザクションファイルの生成と表示
10-5-5 アンカーノード構成更新トランザクションファイルの作成
10-6 configtxlatorによる変換
10-6-1 RESTfulインターフェース
10-6-2 JSON形式へのデコード
10-6-3 バイナリ形式での符号化
10-6-4 構成更新量の計算
10-6-5 チャンネル構成の更新
10-7 まとめ
Chapter 11 Hyperledger Fabric CAの設定
11-1 序論
11-2 サーバーとクライアントのインストール
11-2-1 ローカルでのコンパイル
11-2-2 Dockerイメージの取得と使用
11-2-3 Dockerfileの例
11-3 CAサービスの開始
11-4 サーバー側コマンドの詳細
11-4-1 グローバルコマンドパラメータ
11-4-2 initコマンド
11-4-3 startコマンド
11-5 サーバー設定ファイルの詳細
11-6 サーバーサイドとの連携
11-7 クライアント側コマンドの詳細
11-7-1 グローバルコマンドパラメータ
11-7-2 enrollコマンド
11-7-3 getcacertコマンド
11-7-4 reenrollコマンド
11-7-5 registerコマンド
11-7-6 revokeコマンド
11-8 クライアント設定ファイルの詳細
11-9 本番環境へのデプロイ
11-10まとめ
Chapter 12 Hyperledger Fabricのアーキテクチャと設計
12-1 アーキテクチャの概要
12-1-1 基本機能
12-1-2 全体アーキテクチャ
12-1-3 一般的なワークフロー
12-2 基本コンセプトとコンポーネント
12-2-1 ネットワーク層関連コンポーネント
12-2-2 コンセンサス関連コンポーネント
12-2-3 権限管理コンポーネント
12-2-4 ビジネス層コンポーネント
12-3 gRPCプロトコル
12-3-1 Envelope構造体
12-3-2 Peerノードへのクライアントアクセス
12-3-3 クライアント、PeerノードからのOrdererアクセス
12-3-4 チェーンコードコンテナとPeerノード間の操作
12-3-5 複数ノード間の操作
12-4 権限管理とポリシー
12-4-1 ポリシー適用
12-4-2 ID証明書
12-4-3 権限ポリシーの実現
12-4-4 チャンネルポリシー
12-4-5 エンドースメントポリシー
12-4-6 インスタンス化ポリシー
12-5 ユーザーチェーンコード
12-5-1 基本構造
12-5-2 チェーンコードとPeerのやり取り
12-5-3 チェーンコードステートマシン
12-6 システムチェーンコード
12-7 オーダリングサービス
12-7-1 gRPCサービスインターフェース
12-7-2 チェーンと台帳管理
12-7-3 チャンネル構成と更新
12-7-4 コンセンサスプラグイン
12-8 まとめ
Chapter 13 ブロックチェーンアプリケーションの開発
13-1 序論
13-2 チェーンコードの原理・インターフェース・構造
13-2-1 チェーンコードインターフェース
13-2-2 チェーンコード構造
13-2-3 チェーンコードの基本動作
13-3 チェーンコード開発API
13-3-1 状態操作API
13-3-2 トランザクション情報API
13-3-3 パラメータ読み取りAPI
13-3-4 その他のAPI
13-4 開発事例 1:送金
13-4-1 チェーンコード構造
13-4-2 Initメソッド
13-4-3 Invokeメソッド
13-5 開発事例 2:資産管理
13-5-1 チェーンコード構造
13-5-2 Invokeメソッド
13-6 開発事例 3:外部チェーンコードの読み出し
13-7 開発事例 4:イベントの送信
13-8 開発のベストプラクティス
13-9 まとめ
Chapter 14 ブロックチェーンサービスのプラットフォーム設計
14-1 序論
14-1-1 リファレンスアーキテクチャ
14-1-2 測定指標
14-2 IBM Bluemix Blockchain Platform
14-3 Microsoft Azure Blockchain Service
14-4 Hyperledger Celloによるブロックチェーンサービス
14-5 まとめ
索引