堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門
本書は、セキュリティの注目した技術書です。
本書の対象は、実際にスマートコントラクトを使ってアプリケーションを作ろうとしている開発者です。
ブロックチェーンとはなんだろうか?など、全体を俯瞰するような入門書とは少し異なり、実際にブロックチェーンアプリを作るときに知っておかなくてはならない基本的なセキュリティを構築するための方法に重点を置いています。
まさに「スマートコントラクトを使った開発をしようとしている」人のために書かれた入門書です。
本書の目的は、単に動くスマートコントラクトを開発するだけではなく、セキュリティレベルの高い堅牢なスマートコントラクトの開発ができるようになることです。
(中略)
本書の構成はブロックチェーンそのものを理解したうえで、堅牢なスマートコントラクトの開発手法について学ぶ流れになっています。
堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門(p.51)
構成は、最初にブロックチェーン技術の基本となる暗号技術に関する説明から始まり、ビットコインの技術の仕組みの説明をします。その後、実際にイーサリアムを用いてサンプルプログラムに触れていきます。そして、実際にセキュリティのバグについてのコードを読み解き、スマートコントラクト特有の危険について説明していきます。
構成を載せておきます。
■Part1:ブロックチェーンと関連技術
Chapter 1:ブロックチェーンの全体像
Chapter 2:ブロックチェーンを理解するための暗号技術
■Part2:ビットコインネットワーク
Chapter 3:お金のように扱える仕組み
Chapter 4:トランザクション
Chapter 5:ブロックとブロックチェーン
Chapter 6:マイニングとコンセンサスアルゴリズム
■Part3:Ethereumとスマートコントラクト開発
Chapter 7:Ethereumとビットコインネットワークの主な違い
Chapter 8:スマートコントラクト開発の準備とSolidityの基本文法
Chapter 9:スマートコントラクトの用途別サンプル
■Part4:スマートコントラクトのセキュリティ
Chapter 10:スマートコントラクトのセキュリティプラクティス
Chapter 11:スマートコントラクトの脆弱性の仕組みと攻撃
Chapter 12:事例から学ぶブロックチェーンのセキュリティ
スマートコントラクト開発は、普通のアプリケーション開発に比べ、よりセキュリティが求めらている。
本書を読んだことで、暗号技術の基本的な仕組みを他の入門書よりもより深く学ぶことができました。そして、スマートコントラクト開発は、普通のWebアプリケーション以上にしっかりとしたセキュリティ対策が必要であることがわかりました。
まず第一に、スマートコントラクトは、ユーザー間のダイレクトな価値の交換が基本であるためです。スマートコントラクトは、価値のやりとり(通貨の交換)がサービスのメインになることが多いという点でお金のやりとりがダイレクトに反映されます。それが非中央集権なわけですが、もしコードの脆弱性がありそこを突かれると、こちらでストップすることができないため簡単に防ぐことができません。
第二に、スマートコントラクトのコードは誰でも閲覧可能であるという特性です。スマートコントラクトのコードは基本的に誰でも閲覧できるため、こちらの手の内を明かしているような状態だと言えます。
優秀なハッカーなら、そのコード自体のエラーを探すことはもちろん、そのコードのレベルも一目でわかるでしょう。もし私がハッカーだとしたら、そのコードに稚拙さが垣間見れたならばそのサービスのレベルは低いと仮定し、いずれ穴が生まれるだろうと狙っていくと思います。
だからこそ、セキュリティ対策はDApp開発では初期の段階から最高レベルを目指す必要があると感じました。
本書のようなセキュリティに特化した技術書は、今後スマートコントラクト開発を行う開発者には必読であると思います。
参考:
堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門