『堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門』2017/10/27
田篭 照博 (著)

スマートコントラクト開発技術について、セキュリティに重点をおいて詳しく解説してくれる『堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門』です。タイトルに「技術」入門とある通り、内容に「プログラムのサンプル」が多数含まれるほど実践的な解説書なので、一般の人向けというよりは、技術者向けの本です。
前半の1/3は、ブロックチェーンや、ビットコイン、イーサリアムなどの概要説明、中盤の1/3は、スマートコントラクトを開発するための技術的解説(プログラムのサンプルを用いた、かなり実践的な解説)、後半の1/3は、セキュリティ関連の解説です。
ブロックチェーンやビットコインについては、一般的な解説書をかなり読んではいましたが、技術的にはこのように作られていたんだ……と初めて知る内容が多くて、とても参考になりました。
例えば「Chapter 4:トランザクションの4.2:トランザクションの概要」には、手数料は暗黙的に「手数料=インプットの総額-アウトプットの総額」となるという情報がありました。「お釣り用のアウトプットをトランザクションに設定しないと、お釣り分も含めて手数料としてマイナーに回収されてしまう」ので、注意が必要なようです。
また「Chapter 5:ブロックとブロックチェーン」の「5.2:ブロックからトランザクションを検索する(マークルツリー)」によると、大きなディスク容量を持つサーバーやPCのノードと、スマートフォンやタブレットのような十分なディスク容量を持たないノードには違いがあるようで、スマートフォンやタブレットでは、トランザクションを含むブロックではなく、ブロックヘッダだけを肘するSPVノードになっているようです。そのため、SPVノードでは「マークルツリー」を使って確認するようになっているのだとか。
このようにシステムに関するかなり詳細な説明をしてくれるので、スマートコントラクトを開発しようと考えている技術者の方には、すごく参考になると思います。
さらに「Chapter 12:事例から学ぶブロックチェーンのセキュリティ」には、「サードパーティのソフトウェアに脆弱性が発見されることもあるという前提に立つ。」、「関数の公開は必要最小限にし、公開する場合も可能な限りアクセス制限を設けて攻撃表面を最小化するべき。」、「脆弱性のキャッチアップを行い、脆弱性が公開されたらCircuit Breakerを発動するといったルールを明確にしておく(有事の際のプランを計画しておく)」などの提言がありました。(注:Circuit Breakerとは、緊急停止装置のようなもの)
「スマートコントラクトは一度生成されると修正が効かないため、バグや脆弱性が見つかった際には、不具合や攻撃が永続的に続く危険性がある」のだそうです。またスマートコントラクトは、常に攻撃者に晒されるというリスクもあるので、セキュリティに関しては、本当に注意深く開発すべきだと思いました。
実践的に参考になる情報が満載です。スマートコントラクトの開発を考えている方は、ぜひ読んでみてください。
なお社会や科学、IT関連の本は変化のスピードが速いので、購入する場合は、対象の本が最新版であることを確認してください。
<Amazon商品リンク>