SolidityとEthereumによる実践スマートコントラクト開発ーTruffle Suiteを用いた開発の基礎からデプロイまで
オライリー・ジャパン
著者:Kevin Solorio、Randall Kanna、David H.Hoover
監訳:中城元臣
訳者:株式会社クイープ
はじめに
第I部 イーサリアムブロックチェーンの紹介
1章 ブロックチェーンの概念
1.1 ブロックチェーンの略史
1.2 ブロックチェーンの特徴
1.2.1 非中央集権ネットワーク
1.2.2 コンセンサスプロトコル
1.2.3 トランザクションの処理
1.2.4 トランザクションのファイナリティ
1.2.5 ハードフォーク
1.3 イーサリアムの基礎
1.3.1 イーサとガス
1.3.2 アカウント
1.3.3 コントラクト
1.3.4 ブロックとトランザクション
1.3.5 今何時?
1.3.6 トランザクションの署名
1.4 まとめ
2章 非中央集権アプリケーション
2.1 トークン
2.1.1 ERC-20
2.1.2 ERC-721:ノンファンジブルトークン
2.2 サプライチェーン
2.3 永続的な記録
2.4 アプリケーションに対するブロックチェーンの適性評価
2.4.1 検証可能
2.4.2 透明性
2.4.3 回復力
2.5 まとめ
3章 スマートコントラクトを開発するための準備
3.1 イーサリアムクライアント
3.1.1 Parity のインストール
3.2 MetaMask のインストール
3.3 Node.js のインストール
3.3.1 Ubuntu でのインストール(Windows WSL Ubuntu を含む)
3.3.2 macOS でのインストール
3.4 Truffle Suite のインストール
3.4.1 Truffle
3.4.2 Ganache
3.5 まとめ
第II部 スマートコントラクトの開発
4章 初めてのスマートコントラクト
4.1 セットアップ
4.2 最初のテスト
4.3 Hello World!
4.4 コントラクトを動的にする
4.5 Greeter を Ownable にする
4.6 まとめ
5章 コントラクトのデプロイと操作
5.1 コントラクトのコンパイルとデプロイ
5.1.1 デプロイプロセス
5.2 UI のセットアップ
5.3 Ganache へのデプロイ
5.4 Parity を使った Goerli へのデプロイ
5.5 Infura を使った Rinkeby へのデプロイ
5.6 まとめ
6章 資金調達アプリケーション
6.1 アプリケーションの概要
6.2 プロジェクトの作成
6.3 資金調達の初期化
6.3.1 受取人と管理人の設定
6.4 受取人の編集
6.5 寄付
6.5.1 構造体
6.5.2 マッピング
6.5.3 寄付のテスト
6.5.4 myDonations
6.5.5 資金調達の集計
6.5.6 イベント
6.6 資金の引き出し
6.7 フォールバック関数
6.8 まとめ
7章 FundraiserFactory
7.1 FundraiserFactory のマイグレーション
7.2 Fundraiser インスタンスを作成する
7.3 利用可能な Fundraiser インスタンスを表示する
7.3.1 空のコレクションでページングをテストする
7.3.2 上限をテストする
7.3.3 オフセットをテストする
7.4 UI のセットアップ
7.5 まとめ
第III部 Web3 を使ったスマートコントラクトの操作
8章 Web3 とは何か
8.1 フロントエンド、Web3、ブロックチェーン
8.2 Web3 のメソッド
8.2.1 getAccounts()
8.2.2 getBlockNumber()
8.2.3 getBalance()
8.2.4 sendTransaction()
8.2.5 プロバイダ
8.2.6 Web3 と Promise
8.2.7 Web3 インジェクションのための MetaMask
8.2.8 send(状態の更新/書き込み)
8.2.9 call(読み取り)
8.3 まとめ
9章 UI をコントラクトに接続する
9.1 React を選んだのはなぜか
9.1.1 開発環境のセットアップ
9.2 Truffle
9.2.1 React Truffle Box のセットアップ
9.2.2 Greeter コントラクトのインポート
9.2.3 Greeter コントラクトの機能を追加する
9.2.4 React を使ってあいさつ文を設定する
9.3 まとめ
10章 さらに大規模な DApp
10.1 React Truffle Box から始める
10.1.1 Fundraiser のセットアップ
10.1.2 React のルーティング
10.2 React と Material-UI
10.2.1 New Fundraiser ページビューを作成する
10.2.2 現在の Fundraiser を一覧表示する
10.3 まとめ
11章 Fundraiser UI を完成させる
11.1 各 Fundraiser の詳細情報を追加する
11.1.1 Material-UI のダイアログを実装する
11.2 React を使って寄付をする
11.2.1 寄付をテストする
11.3 ETH の現在のレートを表示する
11.4 寄付の領収書を発行する
11.5 コントラクトからの資金の引き出し
11.5.1 コントラクトの受取人を編集する
11.6 まとめ
第IV部 スマートコントラクトの保護
12章 スマートコントラクトのセキュリティ
12.1 セキュリティに配慮する必要があるのはなぜか
12.2 スマートコントラクトの脆弱性の種類
12.2.1 保護されていない関数
12.2.2 Transaction Ordering Dependence
12.2.3 整数のオーバーフローとアンダーフロー
12.2.4 リエントランシー
12.2.5 ブロックのガスリミット
12.2.6 Timestamp Dependence
12.2.7 その他さまざまな攻撃
12.3 コントラクトの外部監査の準備
12.3.1 外部監査
12.3.2 監査会社
12.3.3 Solidified
12.4 監査に利用できる無償のリソース
12.5 監査のスキルを養う
12.6 まとめ
監修者あとがき
索引