問題一覧に戻る
初級基本構文
問題16: assert文
Solidityのassert文を学習します。assertは内部エラーチェックと、決してfalseになってはいけない不変条件の検証に使用されます。requireとは異なり、assertはコード内のバグやロジックエラーを捕捉するためのものです。assertが失敗すると、残りのガスをすべて消費し、深刻な問題を示します。コードが正しければ常に真となるべき条件、例えば数学的不変条件や操作後の状態整合性チェックにassertを使用します。
pragma solidity ^0.8.0;
contract AssertStatement {
uint256 public value = 100;
// 不変条件のチェック
function setValue(uint256 newValue) public {
value = newValue;
(value == newValue);
}
// ゼロ除算チェック
function divide(uint256 a, uint256 b) public pure returns (uint256) {
(b != 0);
return a / b;
}
// 乗算のオーバーフローチェック
function multiply(uint8 a, uint8 b) public pure returns (uint8) {
uint8 result = a * b;
(result / a == b);
return result;
}
}