問題一覧に戻る
中級関数
問題57: 複数の修飾子

Solidityで複数の修飾子を連鎖する方法を学習します - 単一の関数に複数のチェックを適用します。修飾子は左から右に実行され、各アンダースコアが次の修飾子に制御を渡し、最終的に関数本体に到達します。これにより層状のセキュリティと検証が作成されます。複数の修飾子により、所有権、状態、タイミングチェックを組み合わせた複雑なアクセス制御パターンが可能になります。実行順序の理解はセキュリティに重要です - 早期の修飾子が後の修飾子の実行を防ぐことができます。このパターンはDeFiプロトコルでの洗練された権限システムと多要素検証の構築に不可欠です。

pragma solidity ^0.8.0;

contract MultiModifier {
address public owner = msg.sender;
bool public isActive = true;

modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
;
}

modifier whenActive() {
require(isActive, "Not active");
;
}

// 修飾子の連鎖
function critical() public {
// Execute after all checks
}
}