Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ethereum 部署智能合约时如何设置所有者地址_Ethereum_Solidity - Fatal编程技术网

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

Ethereum 部署智能合约时如何设置所有者地址,ethereum,solidity,Ethereum,Solidity,以下是与所有者签订的简单智能合同: pragma ^0.7.2 contract simple { address owner; constructor() public { //do something } modifier() { require( owner == msg.sender, 'No sufficient right' ) } function setOwner() ownerOnly exter

以下是与
所有者签订的简单智能合同

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,它也不能被更改。修改器将拒绝所有不是从所有者发送的事务。否则,它只会将所有者重新分配给同时也是所有者的msg.sender。 应该是这样的:

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