Solidity

從合約部署合約

  • June 27, 2017

我嘗試這樣的事情:

孩子.sol

pragma solidity ^0.4.6;
contract Child {
 address owner;

 function Child() {
   owner = msg.sender;
 }
}

父.sol

pragma solidity ^0.4.6;

import "./Child.sol"

contract Parent {

 address owner;


 function Parent(){
   owner = msg.sender;
 }

 function createChild() {
   Child child = new Child()
 }
}

然後我部署 Parent.sol。我可以在 etherscan 上找到這筆交易。然後我呼叫 createChild() 函式,但合約沒有部署,因為我找不到任何新交易。

所以問題是,我應該如何正確地做到這一點。謝謝你。

或者我應該只在父契約中存檔子契約的所有地址?那麼父母契約可能真的很重。

您可能沒有看到 Child 契約,因為它在內部交易中。查看 etherscan 上的“內部交易”選項卡(在父合約頁面上)進行檢查。

在我看來,這是一個好的開始,但家長確實說了任何關於孩子的事情,所以它沒有用。

一些想法。

   pragma solidity ^0.4.6;

   contract Child {

     address public owner; // public, so you can see it when you find the child

     function Child() {
       owner = msg.sender;
     }
   }

和 …

pragma solidity ^0.4.6;

import "./Child.sol"

contract Parent {

 address owner;
 address[] public children; // public, list, get a child address at row #
 event LogCreatedChild(address child); // maybe listen for events

 function Parent(){
   owner = msg.sender;
 }

 function createChild() {
   Child child = new Child();
   LogChildCreated(child); // emit an event - another way to monitor this
   children.push(child); // you can use the getter to fetch child addresses
 }
}

我剛剛在 SE 中做到了這一點,所以我希望我沒有在你身上弄錯語法。

希望能幫助到你。

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