Solidity

理解所有者分配的問題

  • June 15, 2019

假設我有 3 個契約,即 Owner、B 和 C:

contract Owned {
   address public owner;

   constructor() public {
       owner = msg.sender;
   }

   modifier onlyOwner {
       require(msg.sender == owner);
       _;
   }
}

契約乙

contract B is Onwed{
    constructor() public{
       uint256 totalSupply = 10000000000;     // any amount
    }
}

契約 C

我想contract B在契約 C 中創建 , 的實例。有兩種方法可以做到

contract C{
    constructor() public{
         B instance = B(address_of_deployed_B);  // Method 1
         B instance = new B();                   // Method 2
         B instance2 = new B();                  // 2 instances of B
   }

}

我在這裡真正想要的是,owner契約的設置為contract C's address.

但以下情況正在發生。

當我嘗試以這種方式實例化時,**方法 1工作正常,**但由於它已經部署,我無法正確設置 owner方法 2無法在建構子中部署 2 個合約實例(顯示還原)。

$$ Edit 1 $$ 方法2工作正常。但是,如果您初始化同一契約的 2 個實例,它就不起作用。

這裡的問題是它的氣體用完了。

也許,在這種情況下,它可以工作,但如果你有像 之類的大契約ERC20 TOKEN,它可能會耗盡 gas 並且可能無法部署。

引用自:https://ethereum.stackexchange.com/questions/71873