書籍概要

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

著者
発売日
更新日

概要

ブロックチェーンの技術は,ビットコインに代表される仮想通貨に使用されるだけではありません。従来のように中央集中管理型のシステムに比べて,改ざんが難しく,かつ低予算で構築できることから,幅広い分野への応用が期待されています。例えば,地域通貨や電子クーポン,有価証券,投票,電子チケットの偽造・転売防止などです。
本書では,ブロックチェーンの暗号化技術のほか,スマートコントラクト開発で注目されるEthereum(イーサリアム)のセキュリティ対策まで言及しています。

こんな方におすすめ

  • ブロックチェーンの技術や具体的な開発方法,セキュリティ問題/対策に興味のある方
  • スマートコントラクトでシステム開発を企画している方

サンプル

目次

Part1 ブロックチェーンと関連技術
Chapter 1 ブロックチェーンの全体像

  • 1.1 ブロックチェーン
  • 1.2 ビットコインネットワーク
  • 1.3 Ethereum
  • 1.4 ブロックチェーンネットワークの構成要素

Chapter 2 ブロックチェーンを理解するための暗号技術

  • 2.1 ハッシュ関数
  • 2.2 公開鍵暗号
  • 2.3 楕円曲線暗号
  • 2.4 デジタル署名

Part2 ビットコインネットワーク
Chapter 3 お金のように扱える仕組み

  • 3.1 所有者を特定する「鍵」と「錠」
  • 3.2 送金先となる「アドレス」
  • 3.3 鍵を管理する「ウォレット」
  • 3.4 ウォレットの種類

Chapter 4 トランザクション

  • 4.1 トランザクションのライフサイクル
  • 4.2 トランザクションの概要
  • 4.3 トランザクションの構造
  • 4.4 UTXOと残高
  • 4.5 Locking ScriptとUnlocking Script

Chapter 5 ブロックとブロックチェーン

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

Chapter 6 マイニングとコンセンサスアルゴリズム

  • 6.1 ビザンチン将軍問題と分散型コンセンサス
  • 6.2 Proof-Of-Work
  • 6.3 トランザクションの集積
  • 6.4 マイナーの報酬トランザクション(coinbaseトランザクション)
  • 6.5 チェーンの分岐(フォーク)
  • 6.6 51%攻撃

Part3 Ethereumとスマートコントラクト開発
Chapter 7 Ethereumとビットコインネットワークの主な違い

  • 7.1 Ethereumの特徴
  • 7.2 ネットワークの種類

Chapter 8 スマートコントラクト開発の準備とSolidityの基本文法

  • 8.1 環境構築
  • 8.2 Ethereumの公式ウォレット(Mist Wallet)
  • 8.3 Remix-Solidity IDE
  • 8.4 Solidity言語仕様

Chapter 9 スマートコントラクトの用途別サンプル

  • 9.1 サンプル(その1)-HelloEthereum
  • 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)
  • 10.3 Access Restrictionパターン
  • 10.4 Mortalパターン
  • 10.5 Circuit Breakerパターン

Chapter 11 スマートコントラクトの脆弱性の仕組みと攻撃

  • 11.1 Reentrancy問題
  • 11.2 Transaction-Ordering Dependence(TOD)
  • 11.3 Timestamp Dependence
  • 11.4 重要情報の取り扱い
  • 11.5 オーバーフロー

Chapter 12 事例から学ぶブロックチェーンのセキュリティ

  • 12.1 サードパーティの脆弱性(Solidity脆弱性)
  • 12.2 クライアントアプリの脆弱性と鍵管理(Jaxx脆弱性)

サポート

ダウンロード

本書のサンプルソースがダウンロードできます。

ダウンロード
samplesrc_20171027.zip(約14KB)

解凍してファイル名を参考にしてご利用ください。

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2017年11月6日最終更新)

P.9:目次(P.129)

コンスラクトを生成する
コントラクトを生成する

P.15:下から2行目

各ノートは
ノード

P.21:上から3行目

VirturlBox上に
VirtualBox上に

P.111:下から3行目(見出し)

ソースコードを記述してコンストラクタを指定する
ソースコードを記述してコントラクトを指定する

商品一覧