内容紹介
ブロックチェーンの設計構想と実装方法をこの1冊で総合的に修得する!
本書は、①ブロックチェーンの基礎、②暗号、ネットワーク、ゲーム理論などのブロックチェーン関連技術、③ビットコイン、④イーサリアムとスマートコントラクト、⑤ブロックチェーンを用いたアプリケーション(DApp)の5つのテーマを中心に、網羅的に、そして理論から実践まで深い内容を丁寧に解説しています。
プログラミングを使った解説によって理論と実践を同時に学ぶことができるため、基礎から応用力を身につけたい方にオススメです。
このような方におすすめ
ブロックチェーンを学ぶ大学1~2年生、エンジニア、フィンテック業界関係者。
目次
主要目次
はじめに
第1章 ブロックチェーン序論
第2章 ブロックチェーンの仕組み
第3章 ビットコインの仕組み
第4章 イーサリアムの仕組み
第5章 ブロックチェーンアプリケーション開発
第6章 イーサリアムDAppの構築
詳細目次
第1章 ブロックチェーン序論
はじめに
1.1 ブロックチェーンの生い立ち
1.2 ブロックチェーンとは何か?
1.3 中央集権型システムと非中央集権型システム
1.3.1 中央集権型システム
1.3.2 非中央集権型システム
1.4 ブロックチェーンの層構造
1.4.1 アプリケーション層
1.4.2 実行層
1.4.3 セマンティック層
1.4.4 伝播層
1.4.5 コンセンサス層
1.5 なぜブロックチェーンが重要なのか?
1.5.1 中央集権型システムの制約
1.5.2 ブロックチェーンが普及するための課題
1.6 ブロックチェーンの利用法とユースケース
1.7 まとめ
参考文献
第2章 ブロックチェーンの仕組み
はじめに
2.1 ブロックチェーンの基本
2.2 暗号技術
2.2.1 対称鍵暗号技術
2.2.2 暗号学的ハッシュ関数
2.2.3 MACとHMAC
2.2.4 非対称鍵暗号技術
2.2.5 DH鍵交換
2.2.6 対称鍵暗号技術と非対称鍵暗号技術の比較
2.3 ゲーム理論
2.3.1 ゲーム理論とは
2.3.2 ナッシュ均衡
2.3.3 囚人のジレンマ
2.3.4 ビザンチン将軍問題
2.3.5 ゼロサムゲーム
2.3.6 なぜゲーム理論を学ぶのか
2.4 コンピュータサイエンス
2.4.1 ブロックチェーン
2.4.2 マークルツリー
2.5 すべてを1つにまとめると
2.5.1 ブロックチェーンアプリケーションの性質
2.5.2 ブロックチェーンのトランザクション
2.5.3 分散型コンセンサスメカニズム
2.6 ブロックチェーンアプリケーション
2.7 ブロックチェーンのスケーリング
2.7.1 オフチェーン計算
2.7.2 ブロックチェーン状態のシャーディング
2.8 まとめ
参考文献
第3章 ビットコインの仕組み
はじめに
3.1 貨幣の歴史
3.2 ビットコインの幕開け
3.2.1 ビットコインとは何か?
3.2.2 ビットコインを使いこなす
3.3 ビットコインのブロックチェーン
3.3.1 ブロック構造
3.3.2 ジェネシスブロック
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.6 フルノードとSPV
3.6.1 フルノード
3.6.2 SPV
3.7 ビットコインウォレット
3.8 まとめ
参考文献
第4章 イーサリアムの仕組み
はじめに
4.1 ビットコインからイーサリアムへ
4.1.1 次世代ブロックチェーンとしてのイーサリアム
4.1.2 イーサリアムの設計理念
4.2 イーサリアムブロックチェーン
4.2.1 イーサリアムブロックチェーンのデータ構造
4.2.2 イーサリアムのアカウント
4.2.3 トライ木の利用
4.2.4 マークルパトリシアツリー(MPT)
4.2.5 RLPエンコード
4.2.6 イーサリアムのトランザクションとメッセージの構造
4.2.7 イーサリアムの状態遷移関数
4.2.8 ガスとトランザクションコスト
4.3 イーサリアムのスマートコントラクト
4.3.1 コントラクトの作成
4.4 イーサリアム仮想マシンとコード実行
4.5 イーサリアムのエコシステム
4.5.1 Swarm(スワーム)
4.5.2 Whisper(ウィスパー)
4.5.3 DApp
4.5.4 開発コンポーネント
4.6 まとめ
参考文献
第5章 ブロックチェーンアプリケーション開発
はじめに
5.1 非中央集権型アプリケーション
5.2 ブロックチェーンアプリケーション開発
5.2.1 ライブラリとツール
5.3 ビットコインのブロックチェーンと対話する
5.3.1 Node.jsアプリケーションにBitcoinJSライブラリをセットアップして初期化する
5.3.2 送金側と受取側のそれぞれの鍵ペアを作成する
5.3.3 送金側ウォレットにテスト用ビットコインを入れる
5.3.4 送金側の未使用アウトプットを取得する
5.3.5 ビットコインのトランザクションを準備する
5.3.6 トランザクションインプットに署名する
5.3.7 トランザクションの16進数表記を作成する
5.3.8 ネットワークにトランザクションをブロードキャストする
5.4 プログラムを使ってイーサリアムと対話する:トランザクションの送信
5.4.1 ライブラリと接続をセットアップする
5.4.2 イーサリアムのアカウントをセットアップする
5.4.3 送金側アカウントにテスト用イーサを入れる
5.4.4 イーサリアムのトランザクションを準備する
5.4.5 トランザクションに署名する
5.4.6 イーサリアムネットワークにトランザクションを送信する
5.5 プログラムを使ってイーサリアムと対話する:スマートコントラクトの作成
5.5.1 前提
5.5.2 スマートコントラクトをプログラムする
5.5.3 コントラクトをコンパイルして詳細を取得する
5.5.4 イーサリアムネットワークにコントラクトをデプロイする
5.6 プログラムを使ってイーサリアムと対話する:スマートコントラクト関数の実行
5.6.1 スマートコントラクトへの参照を取得する
5.6.2 スマートコントラクトの関数を実行する
5.7 ブロックチェーンのキーワードのおさらい
5.8 パブリックブロックチェーンとプライベートブロックチェーン
5.9 非中央集権型アプリケーションのアーキテクチャ
5.9.1 パブリックノードとローカルノード
5.9.2 非中央集権型アプリケーションとサーバー
5.10 まとめ
参考文献
第6章 イーサリアムDAppの構築
はじめに
6.1 DApp
6.2 イーサリアムのプライベートネットワークのセットアップ
6.2.1 Gethをインストールする
6.2.2 Gethのデータディレクトリを作成する
6.2.3 Gethアカウントを作成する
6.2.4 genesis.jsonの構成ファイルを作成する
6.2.5 プライベートネットワークの1つ目のノードを稼働する
6.2.6 プライベートネットワークの2つ目のノードを稼働する
6.3 スマートコントラクトの作成
6.4 スマートコントラクトのデプロイ
6.4.1 web3.jsライブラリと接続のセットアップ
6.4.2 プライベートなネットワークにコントラクトをデプロイする
6.5 クライアントアプリケーション
6.6 まとめ
参考文献
索引
続きを見る