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

如何确保Solidity智能合约函数安全性?请求部署者权限控制示例

仅允许合约部署者调用updateState函数的实现方案

要限制updateState函数仅能被合约部署者调用,你可以通过以下步骤实现:

  1. 声明一个地址变量存储合约部署者(owner)的地址
  2. 编写一个onlyOwner修饰器(Modifier),用于校验调用者是否为部署者
  3. 将该修饰器添加到updateState函数上

以下是完整的修正代码:

pragma solidity ^0.8.0;

contract MyContract {
    uint public state;
    address public owner;

    // 构造函数:合约部署时初始化owner为部署者地址
    constructor() {
        owner = msg.sender;
    }

    // 仅允许owner调用的修饰器
    modifier onlyOwner() {
        require(msg.sender == owner, "Only contract owner can call this function");
        _; // 执行被修饰函数的逻辑
    }

    // 使用onlyOwner修饰器限制调用权限
    function updateState(uint _state) public onlyOwner {
        state = _state;
    }
}

代码说明:

  • owner变量:在合约部署时通过构造函数赋值为部署者的地址(msg.sender)
  • onlyOwner修饰器:通过require校验调用者地址是否等于owner,若不满足则抛出错误并回滚交易;_表示继续执行被修饰函数的代码逻辑
  • updateState函数:添加onlyOwner修饰器后,仅合约部署者能调用此函数修改状态

内容的提问来源于stack exchange,提问作者JGervas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:32:36