概要

スマートコントラクトの安全性を支える、3つのエラー処理(require, assert, revert)の完全ガイドです。外部入力の検証に用いるrequireと、内部エラーを検出するassertの違いを明確化。
さらに、現代のベストプラクティスであるrevertと「カスタムエラー」が持つ、優れたガス効率と豊富な情報伝達能力を解説。堅牢でユーザーに優しいDAppを構築するための必須知識が身につきます。
-
-
Solidity学習講座:最終版 目次(全20話)
基礎編 第1話:未来のインターネットへようこそ!Solidityとスマートコントラクトの全体像 第2話:準備は1分!ブラウザだけで開発できる「Remix IDE」の基本操作 第3話:記念すべき初コント ...
続きを見る
はじめに
第13話では、ETHを送金する際の最重要セキュリティパターン「Checks-Effects-Interactions」を学びました。その最初のステップ「Checks」において、require
文がいかに重要な門番の役割を果たすか、実感していただけたと思います。
スマートコントラクトは、一度デプロイすると修正が困難な、お金が絡むプログラムです。そのため、予期せぬ入力や不正な状態を徹底的に排除する**「防御的プログラミング」**の発想が不可欠です。
Solidityには、この防御を固めるための強力なツールとして、3つのエラー処理機能が用意されています。
require
: 外部からの入力や状態を検証するassert
: 内部的なロジックの不整合をチェックするrevert
: より柔軟でガス効率の良いエラー処理を行う
あなたはrequire
には既によく慣れ親しんでいるはずです。しかし、これら3つの微妙な違いと、それぞれの適切な使い分けを理解することは、あなたのコントラクトの安全性と品質を決定づける、極めて重要な知識なのです。