You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用modifierExample.enterDetails触发交易回退,提示非所有者求排查

错误原因及修复方案

核心问题

构造函数中误用了相等比较运算符==,而非赋值运算符=,导致合约部署时admin变量未被正确赋值为部署者地址,始终保持默认的0x0地址。调用enterDetails时,当前调用者地址(部署者地址)与admin的0x0地址不匹配,触发了isAdmin修饰器中的require校验,抛出“you are not the owner”错误。

修复后的构造函数代码

constructor() {
    admin = msg.sender;
}

额外优化建议

  • Solidity 0.8.0及以上版本中,构造函数的public修饰符可省略,编译器会自动识别。
  • 可将admin变量声明为immutable,提升合约安全性与执行效率:
    address immutable admin;
    

内容的提问来源于stack exchange,提问作者GADEY POLESWARA MANOJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:35:27