問題一覧に戻る
初級基本構文
問題15: require文
Solidityのrequire文を学習します。requireは条件を検証し、条件が満たされない場合にトランザクションをリバートするために使用されます。入力検証、アクセス制御、コントラクトの状態整合性を確保するための主要な方法です。トランザクションが失敗した理由をユーザーが理解できるようにカスタムエラーメッセージを提供できます。require文は失敗時点までのガスを消費しますが、残りのガスは返金されます。安全でユーザーフレンドリーなスマートコントラクトの構築に不可欠です。
pragma solidity ^0.8.0;
contract RequireStatement {
uint256 public balance = 1000;
address public owner;
constructor() {
owner = msg.sender;
}
// 基本的なrequire文
function withdraw(uint256 amount) public {
(amount <= balance);
balance -= amount;
}
// エラーメッセージ付きrequire文
function transfer(uint256 amount) public {
(amount > 0, "Amount must be positive");
(balance >= amount, "Insufficient balance");
balance -= amount;
}
// オーナー権限チェック
function resetBalance() public {
(msg.sender == owner, "Only owner allowed");
balance = 1000;
}
}