создание дочернего контракта с использованием дочерней функции из фабрики контрактов - PullRequest
0 голосов
/ 23 марта 2019

У меня есть умный контракт, который будет выглядеть примерно так.

pragma solidity >=0.4.24;
contract Issue {

    uint public threshold = 0;  
    address public partyA;
    address public partyB;
    bytes public issueHash;

    // issue can only be created once and non - mutable, hence this function
    function Issuecreate(address _addressB, bytes memory _issueHash) public {
        if (threshold != 0){
            revert("Issue can only be created once");
        }
        partyA = msg.sender;
        partyB = _addressB;
        issueHash = _issueHash;
        threshold = 1;


    }

    // .....more contract here

}

contract issueFactory{


  address[] public contracts;

  // contract counter

  function getContractCount() 
    public
    view
    returns(uint contractCount)
        {
            return contracts.length;
        }

  // deploy a new contract

  function newIssue() //of course parameters would go here
    public
    returns(address newContract)
        {
            Issue c = new Issue();  //HERE, I would like to create a new issue contract here but also calling the function issue create from within that contract. Is this possible?
            contracts.push(address(c));
            return address(c);
        }

}

Сейчас практически я хочу создать новый умный контракт, используя эту фабрику контрактов, но чтобы сэкономить на расходах на газ, я хочу, чтобы контракт был развернут и чтобы часть этой информации уже была заполнена при развертывании контракта.

Итак, допустим, я создаю контракт на выдачу, хочу сохранить адрес, выдать хеш и все такое. Этот материал никогда не изменится, так что это практично, это написано при развертывании контракта.

Есть ли какая-нибудь команда, которую я могу использовать для развертывания контракта, одновременно используя функцию.

например, некоторый псевдокод, например IssueFactory.newIssue.issueCreate (x, x);

Я также буду использовать Web3 на своем внешнем интерфейсе, так что, возможно, я смогу сделать это там, если не смогу напрямую написать свой контракт.

...