ゼロから創る暗号通貨 Pythonで学ぶ暗号通貨の理論と実装
PEAKS
著者:濵津誠
はじめに
サンプルコード
クラウドファンディングとPEAKS
免責事項
第1章 Simple Bitcoin:価値の移転を記録するプロトコル
1.1 これから作ろうとするものは何か?あるいは何ではないか?
1.2 全体像を俯瞰する
1.3 これからの話の流れ
「ゼロから創る暗号通貨」カリキュラム
第2章 P2Pネットワーク:基盤作りから始めよう
2.1 P2Pネットワーク
2.2 CoreノードとEdgeノード
2.2.1 接続するCoreノードの選択
2.2.2 接続先のCoreノードを信用できるか
2.2.3 CoreノードとEdgeノードの仕様まとめ
2.3 P2Pネットワークの実装
2.3.1 プロトコルを考える
2.3.2 Coreノードの動作
2.3.3 メッセージを定義しよう
2.4 CoreノードとEdgeノードを作って繋ぐ
2.4.1 Coreノードを作る
2.4.2 Coreノード同士を接続する
2.4.3 Edgeノードを作る
2.4.4 CoreノードとEdgeノードを接続してみる
2.5 P2Pネットワークのプロトコルを拡張しよう
2.5.1 暗号通貨に向けた準備
2.5.2 ちょっと寄り道---分散掲示板
2.6 この章の成果
第3章 Hello Blockchain!:こんにちはブロックチェーン
3.1 簡単なブロックチェーンを作ってみる
3.2 P2Pネットワーク機能に繋ぎ込もう
3.3 Proof of Work、そしてコンセンサス
3.3.1 SimpleBitcoinにおけるPoW
3.3.2 Coreノードを複数にしてコンセンサスを理解する
3.4 この章の成果
第4章 WalletとTransaction:Transactionの中身について考える
4.1 送金相手をどのようにして特定するか
4.1.1 電子署名とは
4.2 やり取りする通貨はどこから出てくるのか?
4.3 ブロックの中のTransaction
4.4 Transactionの構成を作りながら考えよう
4.5 Walletができることについて考えながらUIを作ってみる
4.6 WalletでTransactionを生成してみる
4.7 この章の成果
第5章 すべての機能を結合し、動かしてみよう
5.1 Walletを完成させよう
5.1.1 Wallet_GUIとClientCoreを接続しよう
5.1.2 ブロックチェーンの更新と利用可能残高の確認処理を追加しよう
5.1.3 ここまでのまとめ
5.2 サーバーを完成させよう
5.2.1 Transaction受信時の処理
5.2.2 CoinbaseTransactionの生成
5.2.3 受信したブロックの正当性確認
5.2.4 ここまでのまとめ(サーバー編)
5.3 実際にサーバーとWalletを接続してみよう
5.3.1 送金Transactionの生成から送信まで
5.3.2 サーバーB側での送金Transactionの受信からブロックの生成まで
5.3.3 サーバーA側でのブロックの受信からブロックチェーンへの反映まで
5.3.4 WalletA側でのブロックチェーンの更新から残高情報の更新まで
5.3.5 WalletAからWalletBへの送信
5.4 この章の成果
第6章 SimpleBitcoinのセキュリティに関する考察
6.1 インターネット上にサーバーを公開する上での注意点について
6.1.1 P2Pネットワークとしてのセキュリティ
6.1.2 仕様上の前提条件からくるセキュリティ問題
6.2 SimpleBitcoinでは重要視していないセキュリティについて
6.3 その他の注意点
6.3.1 今のところNAT越えはできない
6.3.2 今のところPoWのコントロールは不完全
6.3.3 自分用の鍵の生成タイミングについて
6.3.4 すべてはメモリの上
6.4 この章の成果
第7章 ここから先のSimpleBitcoin
7.1 そうはいっても暗号通貨なので
7.1.1 ブロックチェーンで否認防止
7.1.2 ブロックチェーンは証拠である
7.2 暗号通貨から離れたブロックチェーンの活用例
7.2.1 これから作ろうとするサービスを確認しよう
7.2.2 実際に動作を確認しよう
7.3 P2Pネットワークの活用例について考えてみよう
7.3.1 暗号化メッセージ機能を追加してみよう
7.4 この章の成果
おわりに
謝辞
索引
著者紹介