9章スマートコントラクトセキュリティ

 スマートコントラクトを書く際に、考慮すべき最重要事項はセキュリティです。スマートコントラクトプログラミングの分野では、セキュリティがらみのミスの修正はコストがかかり、容易に悪用されます。この章では、セキュリティのベストプラクティスとデザインパターンのみならず、「セキュリティアンチパターン」、つまりスマートコントラクトに脆弱性をもたらす可能性があるプラクティスとパターンについても考察します。

 他のプログラムと同様に、スマートコントラクトは記述されたとおりに正確に実行されますが、これはプログラマーの意図どおりとは限りません。さらに、すべてのスマートコントラクトは公開されており、どのユーザーもトランザクションを作成するだけでスマートコントラクトとやり取りすることができます。あらゆる脆弱性が悪用される可能性があり、損失を回復することはほとんど不可能です。したがって、ベストプラクティスに従い、十分にテストされたデザインパターンを使用することが重要です。

9.1 セキュリティのベストプラクティス

 防御的プログラミング(defensive programming)は、スマートコントラクトに特に適したプログラミングスタイルです。このスタイルは次に挙げる事項に重きを置いていますが、それらはすべてベストプラクティスです。

ミニマリズム/シンプル性

複雑さはセキュリティの敵となります。コードが単純で簡単なものであればあるほど、バグや予想外の影響が発生する可能性は低くなります。スマートコントラクトプログラミングを初めて行うとき、開発者は多くのコードを書き込もうとしたくなりますが、スマートコントラクトコードを精査して、コードの行数を減らし、複雑さを減らし、「機能」の数を減らして、より低コストの方法を見つけるべきです。あるプロジェクトがスマートコントラクト作成のために「数千行のコード」を生み出したと言うならば、そのプロジェクトの安全性に疑問を持つべきです。シンプルなほうがより安全です。 ...

Get マスタリング・イーサリアム ―スマートコントラクトとDAppの構築 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.