ブロックチェーンシステム設計
リックテレコム
著者:中村誠吾、中越恭平
監修:牧野友紀、宮崎英樹
はじめに
第I部 基礎知識
第1章 ブロックチェーンへの期待
1 ブロックチェーンが実現する世界
2 システムの全体像
2.1 基盤技術としてのブロックチェーン
2.2 ブロックチェーンの役割
2.3 システム検討の手順
第2章 ブロックチェーン技術の概要
1 ブロックチェーンとは?
1.1 ネットワーク上の共有台帳
1.2 対等な直接取引
1.3 参加者の特性と運用効率
1.4 まとめ
2 代表的なプラットフォーム
2.1 Bitcoin
2.2 Etherum
2.3 Hyperledger Fabric
3 パブリック型と非パブリック型
3.1 パブリック型のブロックチェーン
3.2 コンソーシアム/プライベート型と許可型・非許可型
3.3 コンソーシアム/プライベート型
第3章 コアテクノロジ
1 記録れるデータの構造
1.1 トランザクション実行結果
1.2 UTXO型のデータ構造
1.3 アカウント型のデータ構造
1.4 まとめ
2 トランザクションのライフサイクル
3 なりすまし防止の仕組み
3.1 公開鍵暗号方式
3.2 ハッシュ
3.3 トランザクションのデジタル署名
4 二重取引防止の仕組み
4.1 ペシミスティック同時実行制御
4.2 オプティミスティック同時実行制御
4.3 UTXO型での二重取引防止
4.4 アカウント型での二重取引防止
5 改ざん防止の仕組み
5.1 書込み許可と改ざん防止の両立
5.2 もし改ざんを行うとしたら・・・
5.3 時間は遡れない
6 コンセンサスアルゴリズム
6.1 PoW(Proof of Work)
6.2 PoS(Proof of Stake)
6.3 PBFT(Practical Byzantine Fault Tolerance)
6.4 endorse-order-validate
第4章 システム特性
1 CRUD操作
1.1 データ登録の登場
1.2 データ参照の手順
1.3 データの更新と削除
2 ACID特性
2.1 Atomicity(原始性)
2.2 Consistency(一貫性)
2.3 Isolation(独立性)
2.4 Durability(永続性)
3 スケーラビリティ
3.1 Bitcoinの現状
3.2 3つの選択肢
3.3 分散処理・並列処理は可能か?
4 スループットとレスポンスタイム
4.1 DBと異なるスループット特性
4.2 応答時間の構成要素
5 ファイナリティ
5.1 パブリック型での扱い
5.2 コンソーシアム/プライベート型での扱い
5.3 まとめ
1 第5章 スマートコントラクト
1.1 Bitcoinを送金する例
1.2 契約の凍結・履行・管理機能
1.3 ブロックチェーンでのスマートコンストラクト
2 プログラミングコード
2.1 EthereumのContract
2.2 Hyperledger FabricのChaincode
3 スマートコンストラクトの管理と実行
3.1 Ethereumでのスマートコンストラクトの「登録」
3.2 Ethereumでのスマートコンストラクトの「実行」
3.3 Hyperledger Favbricの場合
4 スマートコンストラクトの特徴と制約
4.1 ランダム変数や外部呼出しは不可
4.2 自動実行を組み込めない
4.3 まとめ
Column ブロックチェーンはランダム変数を扱えない?
第6章 ユースケース
1 クラウドセール
1.1 個人間資金調達の手順
1.2 ブロックチェーンゆえのメリット
2 ダイヤモンド所有権管理
2.1 所有権移転の手順
2.2 ブロックチェーンゆえのメリット
3 個人間電力取引
3.1 余剰電力直接売買の手順
3.2 2つのスマートコンストラクト
3.3 ブロックチェーンゆえのメリット
4 賃貸物件契約管理
4.1 3者の立場、煩雑な手続き
4.2 スマートロックを併用した取引手順
4.3 ブロックチェーンゆえのメリット
第II部 システム設計
第7章 基本仕様の策定
1 ブロックチェーンである意義の確認
1.1 ブロックチェーン適用のメリット
1.2 ブロックチェーンのデメリット
1.3 概念モデルでデータを仕訳・検証
2 プラットフォームの選定
2.1 コンソーシアム/プライベート型を前提に
2.2 パブリック型の基盤も利用可能
Column パブリック型で際立つプラットフォーム選択の重要性
3 参加者の選定
3.1 データの管理者と利用者
3.2 4タイプの利用形態
第8章 概要設計
1 システム全体の機能配置
1.1 システム全体で踏まえておくべき重要事項
1.2 運用保守ルールとインフラ設計の留意点
2 プラットフォームの役割
3 アプリケーションとデータの論理構成
3.1 共有するものと個別に実装すべきもの
3.2 UIとプレゼンテーションロジック
3.3 データアクセスとデータベース
3.4 参照系のビジネスロジック
3.5 更新系のビジネスロジック
3.6 Web API
3.7 ステートDBとスマートコンストラクト
4 ブロックチェーンの特性の補完
4.1 高可用性
4.2 セキュリティ特性
4.3 処理性能
第9章 プラットフォームの特性
1 EthereumとHyperledger Fabricの特徴
1.1 Ethereumのシステム構成
1.2 Hyperledger Fabricのシステム構成
2 スマートコンストラクト
2.1 ステートDBと一体となった改ざん困難なEthereum
2.2 ステートDBを分散したアップグレード可能なHyperledger Fabric
3 トランザクションのフロー
3.1 Ethereumのトランザクションフロー
3.2 Hyperledger Fabricのトランザクションフロー
第10章 詳細アーキテクチャの設計
1 データ管理の役割分担
1.1 ステートDB、ブロック、外部DBでの分担
1.2 セキュアデータの扱い
1.3 インデックスの扱い
2 ビジネスロジックの役割分担
3 スマートコンストラクトの設計
3.1 ステートDBとスマートコンストラクトの役割
Column スマートコンストラクトは絶対的なルールでなければならない
Column ステートDBにRDBMSが採用されたら・・・
3.2 機能役割ごとのスマートコンストラクトの役割
3.3 保守を考慮した機能の配置
3.4 まとめ
4 トランザクションの設計
4.1 トランザクション実行のシミュレーション
Column EthereumとHyperledger Fabricでのシミュレーション結果の扱い
4.2 トランザクションの分離
4.3 排他制御
5 エラーハンドリング
5.1 シミュレーション実行、本実行の結果判定方法
5.2 Ethereumではeventログを確認
Column logs-data項目の確認方法
5.3 Hyperledger FabricではSDKの結果を確認
6 その他のアーキテクチャ設計
第11章 設計の実例
1 ポイント発行/取引管理システム
1.1 システム構成
1.2 データベースとステートDB
1.3 スマートコンストラクト記述
Column ポイント発行機能と移動機能を1コンストラクトした場合
1.4 ビジネスロジック記述
1.5 システム構成の拡張
付録
1 Ethereumの手順
1.1 ネットワーク構築
1.2 Contractの登録
1.3 Contractの実行
2 Hyperledger Fabricの手順
2.1 ネットワーク構築の準備
2.2 ネットワーク構築
2.3 Chaincodeの実行
おわりに/参考文献
著者・監修者プロフィール
索引
簡易電子版の閲覧方法