ブロックチェーン仕組みと理論 増補改訂版
リックテレコム
著者:赤羽喜治、愛敬真生
はじめに
増補改訂版の刊行に寄せて
開発環境・動作検証環境
目次
基礎編
第1章 プロローグ
1 世界の眼差しの変化
2 幻滅期に入ったブロックチェーン技術
3 仮想通貨は死んだのか?
3.1 「仮想通貨はもう買うな」
3.2 採算ラインとハッシュレート
3.3 ビットコインの価値
3.4 サトシ・ナカモトの見ていたもの
4 正しい理解のために
第2章 ブロックチェーンに至る流れ
1 起点はビットコイン
1.1 ビットコインの誕生
1.2 ビットコインの毀誉褒貶
1.3 ブロックチェーン技術への注目
2 「ビットコインの技術」から分散型台帳技術へ
2.1 FinTechとしてのブロックチェーン技術
2.2 広がりを見せるブロックチェーン技術
3 ブロックチェーン技術の今後
3.1 システム開発技術としてのブロックチェーン
3.2 価値交換におけるブロックチェーン技術
第3章 ブロックチェーン技術とは?
1 ブロックチェーン技術考案の背景
1.1 サトシ・ナカモトの問題意識
1.2 解決策としての「分散」
2 分散型台帳を支える技術
2.1 分散型台帳とは何か?
2.2 分散型台帳のメリット
2.3 分散型台帳のデメリット
3 ブロックチェーンが広げる可能性
3 ブロックチェーンの社会実装
第4章 ブロックチェーン技術の応用
1 応用が期待される領域
1.1 ブロックチェーン市場と活用への期待
1.2 応用が期待される産業分野
2 各産業分野の応用事例
2.1 Agriculture〜IBM Food Trust
2.2 Automotive〜自動運転車両への適用
2.3 Financial Service〜新たな決済ネットワークのサービス提供
2.4 Healthcare〜医薬品サプライチェーンへの適用
2.5 Insurance〜外航貨物海上保険における保険金支払いへの適用
2.6 Property〜転売防止機能を備えるチケット発行管理のサービス
2.7 Public Service〜ネット投票
2.8 Retail〜携帯電話の店頭修理プロセスへの適用
2.9 Technology/Media/Telecommunications〜デジタルコンテンツの著作権とロイヤリティ管理への活用
2.10 Transport and Logistics〜貿易情報連携基盤の実現に向けた取り組み
2.11 Utilities〜再エネCO2削減価値創出モデル事業
第5章 ブロックチェーンの業界動向
1 ブロックチェーン基盤の動向
2 Finance Service
2.1 仮想通貨の動向
2.2 日本国内の金融業界動向
2.3 証券取引に関する動向
3 Property
3.1 不動産コンソーシアム事例
3.2 不動産登記簿の事例
4 Public
4.1 日本の中央省庁の取り組み状況
4.2 選挙への利用
5 Healthcare
5.1 エストニアの健康情報システム
5.2 日本医師会のJ-DOME
理論編
第6章 ブロックチェーンの仕組み
1 ビットコインの仕組み
1.1 ビットコインの目的
1.2 ビットコイン実現の手段
1.3 ビザンチン将軍問題
1.4 ビットコインの処理の流れ
2 ブロックチェーン技術の構成要素と分類
2.1 ビットコイン以外のブロックチェーン基盤
2.2 ブロックチェーン技術の構成要素
2.3 ブロックチェーン基盤の分類
3 ブロックチェーン基盤の比較
3.1 アーキテクチャの比較
3.2 データ構造の比較
3.3 合意形成の仕組み
3.4 システム構成
3.5 プライバシー(秘匿化・情報共有範囲)
第7章 P2Pネットワーク
1 P2Pネットワークの概要
2 P2Pネットワークの設計
2.1 ピュアP2PとハイブリッドP2P
2.2 非構造化オーバレイと構造化オーバレイ
2.3 ブロックチェーン基盤の分類
3 P2Pネットワークにおけるブロックチェーンの動き(概要)
4 P2Pネットワークにおけるブロックチェーンの動き(詳細)
4.1 P2Pネットワーク上の他ノードとの連携
4.2 データ(ブロック)の送受信
5 今後の課題
第8章 コンセンサスアルゴリズム
1 コンセンサスアルゴリズムとは?
2 プルーフ・オブ・ワークの問題点
2.1 51%攻撃
2.2 ファイナリティの不確実性
2.3 性能限界
2.4 ブロックチェーンの容量
3 コンセンサスアルゴリズムの種類
3.1 代表的なコンセンサスアルゴリズム
3.2 分散システムにおける障害モデル
4 各コンセンサスアルゴリズムの特長
4.1 PoW(Proof of Work)
4.2 PoS(Proof of Stake)
4.3 PoA(Proof of Authority)
4.4 PBFT(Practical Byzantine Fault Tolerance)
4.5 Endorsement-Ordering-Validation
4.6 IBFT(Istanbul BFT)
4.7 Paxos
4.8 Raft
5 今後の課題
第9章 電子署名とハッシュ
1 電子署名による改ざん防止
1.1 電子署名の概要
1.2 ブロックチェーンにおける電子署名の利用
2 ハッシュによる改ざん防止
2.1 ハッシュの概要
2.2 ブロックチェーンにおけるハッシュの利用
3 今後の課題
3.1 暗号技術の適切な実装
3.2 署名のデータ量とスケーラビリティ問題
3.3 データの秘匿化
3.4 行き過ぎた秘匿化の問題点
第10章 利用にあたっての課題
1 適用領域の拡大と基盤の進化
2 ブロックチェーンの課題と現状
2.1 パフォーマンスとスケーラビリティ
2.2 セキュリティとプライバシー
2.3 データの容量や共有範囲の制御
3 ブロックチェーンを活用する際の考慮事項
3.1 共通的な考慮点
3.2 パブリック型を採用する際の考慮点
3.3 コンソーシアム/プライベート型での考慮点
実践編
第11章 Bitcoin Core
1 ビットコインとBitcoin Core
1.1 Bitcoin Coreとは?
1.2 Bitcoin Coreの追加機能
1.3 Bitcoin Coreを動かす
2 インストールから起動まで
2.1 Bitcoin Coreのインストール
2.2 テストネットでの起動
3 Bitcoin Coreを操作する
3.1 ブロックの生成
3.2 送金アドレスの生成
3.3 残高の確認
3.4 送金(その1)
3.5 マイニング(その1)
3.6 送金の確認(その1)
3.7 送金(その2)
3.8 マイニング(その2)
3.9 送金の確認(その2)
第12章 Lightning Network
1 Lightning Networkの概要
1.1 Lightning Networkとは?
1.2 Payment ChannelとHTLCを使用した送金例
2 Lightning Networkを動かす
2.1 Ind開発環境のセットアップ
2.2 simnetでの起動
2.3 送金の実施
第13章 Ethereum
1 Ethereumとは?
2 Ethereumを動かす
2.1 Ethereumのインストール
2.2 プライベートネットワークの構築
2.3 アカウントの作成
2.4 残高の確認
2.5 ブロック数の確認
2.6 送金
2.7 送金の確認
2.8 gethの停止
3 Contractを使ったサンプル開発
3.1 Ethereumの拡張機能
3.2 Ethereumのプログラミング
3.3 ディレクトリ構成
3.4 開発ツールの準備
3.5 Remixの起動
3.6 Contractの作成
3.7 Contractのデプロイ
3.8 bc_accessor.jsファイルの作成
3.9 サンプルアプリケーションの実行
3.10 ブロック状態のモニタリングツールの実行
第14章 Quorum
1 Quorumの概要
1.1 Quorumとは?
1.2 メンバーシップサービス
1.3 コンセンサスアルゴリズム
1.4 トランザクションのプライバシー管理
1.5 QuorumとEthereumの違い
2 Quorumを動かす
2.1 Quorum Makerのインストール
2.2 Quorum Makerの起動
3 Contractを使ったサンプル開発
3.1 ディレクトリ構成
3.2 Quorum Maker UIツールによるデプロイ手順
3.3 bc_accessor.jsのプログラミング
3.4 サンプルアプリケーションの実行
3.5 ブロック状態のモニタリングツールの実行
第15章 Hyperledger Fabric
1 Hyperledger Fabricの概要
1.1 Hyperledger Fabricとは?
1.2 パー ミッション型ネットワーク
1.3 Peer
1.4 Ordering Service
1.5 トランザクションワークフロー
1.6 Fabricの「 台帳」
1.7 チェーン コード
1.8 Fabric SDK
2 Hyperledger Fabricを動かす
2.1 開発環境のセットアップ
2.2 Fabric資材のダウンロード
2.3 Fabricネットワークを開始する
2.4 チェーン コードを呼び出す
3 チェーンコードを使ったサンプル開発
3.1 開発環境のセットアップ
3.2 チェーンコードの作成
3.3 APサーバ機能の作成
3.4 チェーンコードのインストールとインスタンス化
3.5 サンプルアプリケーション の 実行
第16章 Corda
1 Cordaの概要
1.1 R3とCorda
1.2 Cordaの特徴
1.3 Cordaネットワークの構成要素
1.4 台帳の正当性
1.5 台帳の共有
1.6 Cordaのトランザクション
2 Cordaを動かす
2.1 実行環境のセットアップ
2.2 サンプルプロジェクトの取得
2.3 Cordaのビルド
2.4 Cordaの起動
2.5 ブラウザからのアクセス
2.6 CorDappの停止
3 CorDappの作成
3.1 テンプレートプロジェクトを取得
3.2 CorDappの作成
3.3 CorDappのビルド
3.4 CorDappの起動
3.5 CorDappの画面表示と操作
3.6 初期データの登録
3.7 画面操作
3.8 モニタリングツール表示
3.9 CorDappの停止
第17章 エピローグ
1 導入にあたっての留意点
2 コンソーシアム型におけるスキームの課題
3 プライベート型におけるスキームの課題
4 パブリック型におけるスキームの課題
5 法的な課題
6 データフォーマット
7 進化し続けるブロック チェーン
付録
1 仮想マシン環境の設定
1.1 必要なソフトウェア
1.2 Ubuntu Serverへのアクセス方法
2 各ソフトウェアの操作方法
2.1 必要パッケージのインストール
2.2 Docker/Docker-Compose
2.3 Python
2.4 Node.js+npm
3 サンプルアプリケーション開発の準備
3.1 サンプルアプリケーション構成
3.2 サンプルのディレクトリ構成
3.3 共通部品の作成(カウンタ画面)
3.4 共通部品の作成(モニタリング画面)
3.5 共通部品の作成(REST API部)
あとがき
参考文献
執筆者一覧