【发布时间】:2021-07-19 23:47:25
【问题描述】:
我与一个私有枚举 state 签订了一个合同,该合同具有三个选项:CREATED、VALID 和 TERMINATED。该合约有一个函数withdrawn只能被合约创建者调用,还有一个函数terminatine只能被合约创建时设置的第三方调用。这两个函数都有一个修饰符requireState(State.VALID),所以它们只能在合约处于VALID 状态后调用。
问题是我想配置 withdrawn 函数,以便在 state 设置为 VALID OR TERMINATED 时调用它。我该怎么做?
我的modifier如下图:
enum State { CREATED, VALID, TERMINATED }
State state;
modifier requireState(State _state) {
require(state == _state);
_;
}
我正在使用 Solidity 0.8.1。
【问题讨论】:
-
最简单的解决方案:我建议不要使用
modifier,而是在你的函数的开头有这个条件。
标签: ethereum solidity access-modifiers