部署智能合约时如何设置所有者地址

问题描述

这里是owner的简单智能合约:

pragma ^0.7.2

contract simple {
  address owner;

  constructor() public {
    //do something 
  }

  modifier() {
    require(
      owner == msg.sender,'No sufficient right'
    )
  }

  function setowner() ownerOnly external {
     owner = msg.sender;
  }
}

我的问题是如何安全地将所有者地址设置为智能合约所有者的地址?

解决方法

您应该直接在构造函数中设置所有者地址。 msg.sender 字段将代表合同创建者。

constructor ()  {
       owner = msg.sender;
   }

并且您的函数 setOwner 没有太多意义,因为即使在创建过程中设置了所有者,也无法更改它。修改者将拒绝所有非所有者发送的交易。否则,它只会将 owner 重新分配给同时也是 owner msg.sender 。 它应该看起来像这样:

function setOwner(address newOwner) ownerOnly external {
     owner = newOwner;
  }