問題一覧に戻る
初級基本構文
問題17: revert文

Solidityのrevert文を学習します。revertは現在のトランザクションを明示的にリバートし、すべての状態変更を元に戻します。エラーメッセージ付きまたはなしでrevertを使用できます。requireよりも細かい制御が必要な複雑な条件ロジックで便利です。revertはrequireと同様に残りのガスを返金します。複数の条件で異なるエラーメッセージが必要なif-else文やスイッチのようなパターンでよく使用されます。

pragma solidity ^0.8.0;

contract RevertStatement {
uint256 public balance = 1000;

// 基本的なrevert
function withdraw(uint256 amount) public {
if (amount > balance) {
();
}
balance -= amount;
}

// エラーメッセージ付きrevert
function transfer(uint256 amount) public {
if (amount == 0) {
("Amount must be positive");
}
if (amount > balance) {
("Insufficient balance");
}
balance -= amount;
}
}