堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門


堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門


技術評論社


著者:田篭照博


はじめに
本書構成

Part1 ブロックチェーンと関連技術
Chapter 1 ブロックチェーンの全体像
1.1 ブロックチェーン
 ブロックチェーンとは
 ビットコインとは
1.2 ビットコインネットワーク
1.3 Ethereum
1.4 ブロックチェーンネットワークの構成要素
 P2P(ピア・ツー・ピア)
 参加者
 トランザクション(取引)
 ブロック
 分散台帳
 マイニング

Chapter 2 ブロックチェーンを理解するための暗号技術
2.1 ハッシュ関数
 SHA-256
 RIPEMD-160
 HASH160
2.2 公開鍵暗号
2.3 楕円曲線暗号
 楕円曲線
 加算
 倍算
 秘密鍵と公開鍵の生成法
2.4 デジタル署名
デジタル署名と検証の流れ

Part2 ビットコインネットワーク
Chapter 3 お金のように扱える仕組み
3.1 所有者を特定する「鍵」と「錠」
3.2 送金先となる「アドレス」
 Base58Checkエンコード
アドレスを生成する流れ
3.3 鍵を管理する「ウォレット」
3.4 ウォレットの種類
 パソコン上のウォレット
 モバイルウォレット
 取引所のウォレット
 ペーパーウォレット
 ハードウェアウォレット

Chapter 4 トランザクション
4.1 トランザクションのライフサイクル
4.2 トランザクションの概要
 送金の流れ(例)
4.3 トランザクションの構造
 Locktimeフィールド
4.4 UTXOと残高
4.5 Locking ScriptとUnlocking Script
 スクリプトの検証の仕組み
 トランザクションの一部に署名する
 Pay to Pubkey
 MultiSig(Pay to MultiSig)
 Pay to Script Hash(P2SH)
 OP_RETURN

Chapter 5 ブロックとブロックチェーン
5.1 ブロックの構造と識別子
5.2 ブロックからトランザクションを検索する(マークルツリー)
 マークルツリー

Chapter 6 マイニングとコンセンサスアルゴリズム
6.1 ビザンチン将軍問題と分散型コンセンサス
6.2 Proof-Of-Work
 問題を解く=Nonceを見つけること
 総当たりでNonceを試す
 検証する
 改ざんが極めて困難な理由
6.3 トランザクションの集積
6.4 マイナーの報酬トランザクション(coinbaseトランザクション)
6.5 チェーンの分岐(フォーク)
 トランザクションが同時に発行された場合
6.6 51%攻撃

Part3 Ethereumとスマートコントラクト開発
Chapter 7 Ethereumとビットコインネットワークの主な違い
7.1 Ethereumの特徴
 流通通貨
 スマートコンストラクト
 アカウント
 ブロックのデータ構造
 ステート(状態)の遷移
 アカウントに紐づく情報
 トランザクション、メッセージ、コール
 Gas
7.2 ネットワークの種類
 パブリックネット
 プライベートネット
 テストネット

Chapter 8 スマートコントラクト開発の準備とSolidityの基本文法
8.1 環境構築
 gethのインストール
 Genesisブロックの作成とgethの起動
 アカウントの作成
 gethコンソールでよく使うコマンド
8.2 Ethereumの公式ウォレット(Mist Wallet)
 インストールと起動(Windowsの場合)
 インストールと起動(macOSの場合)
 Mist Walletアプリケーション
8.3 Remix-Solidity IDE
8.4 Solidity言語仕様
 アクセス修飾子

Chapter 9 スマートコントラクトの用途別サンプル
9.1 サンプル(その1)-HelloEthereum
 新しいコンストラクトをデプロイする
 ソースコードを記述してコンストラクトを指定する
 コンストラクトを生成する
 Provide maximum feeとパスワードの設定
 CONSTRACTS画面から遷移する
 トランザクションを発行する
 コンストラクトの情報を表示する
 トランザクションを実行する
 Mist Wallet上でトランザクションの変更結果を確認する
9.2 サンプル(その2)-クラウドファンディング用のコントラクト
コンストラクトを生成する
 キャンペーンに成功するケース
 キャンペーンに失敗するケース
9.3 サンプル(その3)-名前とアドレスを管理するコントラクト
 動作を確認する
9.4 サンプル(その4)-IoTで利用するスイッチを制御するコントラクト
 コンストラクトの利用の流れ
9.5 サンプル(その5)-ECサイトで利用するコントラクト
9.6 サンプル(その6)-オークションサービスで利用するコントラクト
9.7 サンプル(その7)-抽選会で利用するコントラクト

Part4 スマートコントラクトのセキュリティ
Chapter 10 スマートコントラクトのセキュリティプラクティス
10.1 Condition-Effects-Interactionパターン
10.2 Withdrawパターン(push vs pull)
 push型のパターン
 pull型のパターン
10.3 Access Restrictionパターン
 事例
10.4 Mortalパターン
10.5 Circuit Breakerパターン

Chapter 11 スマートコントラクトの脆弱性の仕組みと攻撃
11.1 Reentrancy問題
 攻撃を受ける側のコンストラクト
 攻撃する側のコンストラクト
 一連の流れ
 割り当てるアドレス
 Reentrancy問題を体験する
 イベントを確認する
 修正後の結果
11.2 Transaction-Ordering Dependence(TOD)
11.3 Timestamp Dependence
11.4 重要情報の取り扱い
11.5 オーバーフロー

Chapter 12 事例から学ぶブロックチェーンのセキュリティ
12.1 サードパーティの脆弱性(Solidity脆弱性)
12.2 クライアントアプリの脆弱性と鍵管理(Jaxx脆弱性)
 注意点

おわりに
参考図書
索引

書籍目次

Posted by shi-n