ISBN 9784774193533

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

堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門
著者
田篭照博
出版社
技術評論社
刊行
2017-11

概要

ブロックチェーンの原理からスマートコントラクトのセキュア開発まで体系的に学ぶ

想定読者

Ethereumを使ったスマートコントラクト開発に取り組むエンジニア、またはブロックチェーン技術の仕組みを原理から理解したい開発者

こんな人には向いていない

  • プログラミング未経験者や暗号技術の基礎がない読者には暗号鍵・ハッシュ関数の章で難度が上がる
  • すでにSolidity開発を実務で運用している上級者には基礎説明の比重が大きい
  • 2017年出版のため、コードサンプルが現行の仕様変更に追従していない箇所がありself-updateが必要

読了後にできるようになること

  • ハッシュ関数・デジタル署名・マークルツリーなどビットコインを支える暗号技術の仕組みを説明できる
  • EthereumとSolidityを使ったスマートコントラクトの開発フローを実装できる
  • Geth(Ethereumクライアント)とMist Walletを用いた動作確認の手順を実行できる
  • リエントランシー攻撃・トランザクション順序依存性などスマートコントラクト固有の脆弱性を識別できる
  • 脆弱なコードサンプルと比較しながらセキュアな実装パターンを選択できる
  • 暗号通貨以外(地域通貨・投票・偽造防止)へのブロックチェーン応用事例を俯瞰できる

ハイライト

  • ビットコインを支えるブロックチェーンの仕組み。Ethereumとスマートコントラクト開発。脆弱なコードサンプルから学ぶセキュアなアプリ開発。ブロックチェーンそのものを理解したうえで、堅牢なスマートコントラクトの開発手法についても学べる構成。(本書の三層構造(原理→実装→セキュリティ)を最も端的に示した記述)

外部からの言及

  • ブロックチェーンの学習初期に本書を主要参考書として使ったという記事が複数あり、ハッシュチェーン・マークルツリー・Proof of Workの解説が学習の土台として機能したと報告されている(qiita)
  • 入門書として「わかりやすく何度も読み返したい」という評価がある一方、コードサンプルが仕様変更に追従しておらず、経験の浅い読者がつまずくケースも報告されている(qiita)
  • CTFでのスマートコントラクト脆弱性解析の文脈で、本書のセキュリティ章が日本語リファレンスとして引用されており、実践的なセキュリティ学習にも活用されている(qiita)

編集メモ

Qiita上で本書を直接参照している記事は確認できた複数件のみで、likes累計は限定的。2017年出版でブロックチェーンブーム期の入門書として参照される一方、現行仕様との乖離から継続的な引用は減少傾向。rakuten rankingデータなし。

読む前に押さえておきたいこと

  • Pythonまたは他の汎用言語での基本的なプログラミング経験
  • TCP/IPとHTTPの基本的な通信モデルの理解
  • Linuxコマンドライン操作の基礎(gethの実行環境に必要)

学習のコツ

  • 暗号技術(ハッシュ・デジタル署名)の章は難度が高めだが、後のセキュリティ章を理解する前提になるため、概念レベルで通読してから実装章に進むのが効率的
  • 脆弱なコードサンプルと安全なコードサンプルの対比が本書の核心なので、コード差分を手元で実際に動かしながら読むと記憶定着が高まる
  • 2017年出版のため、Solidityの文法・gethのAPIは現行バージョンと異なる箇所がある。公式ドキュメント(docs.soliditylang.org)を並走させて差分を確認する読み方を推奨する
  • 第3部(Ethereum・スマートコントラクト)から読み始め、概念理解が必要な場面で第1・2部のビットコイン基礎に戻る逆引き利用も有効
出版社による内容紹介

ビットコインを支えるブロックチェーンの仕組み。Ethereum(イーサリアム)とスマートコントラクト開発。脆弱なコードサンプルから学ぶセキュアなアプリ開発。ブロックチェーンそのものを理解したうえで、堅牢なスマートコントラクトの開発手法についても学べる構成。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。