0

これに数時間を費やして少し迷っていますが、理由がわかりません。基本的に、このSolidityコントラクトを持っています(ブロックチェーンを誘惑する3日目)。コードは remix JS VM 環境で動作しますが、ローカルでビルドして web3 を使用して ganache-cli で実行しようとすると、最初のファクトリ コントラクトがデプロイされますが、ファクトリの createFund 関数を使用して 2 番目のコントラクトが作成されません。JS VM環境をローカル環境にリミックスするという別のフォームがありますか。それとも、私はまだこれに慣れていないので、何かを見逃していますか?

以下は私が遊んでいるコードです。

pragma solidity ^0.4.24;

contract testFactory{
    address[] public deployedFund;

    function createFund(string NewCampaignName) public{
       address newFund = new testFund(NewCampaignName, msg.sender);
       deployedFund.push(newFund);
    }

    function getDeployedFund() public view returns (address[]){
        return deployedFund;
    }
}

contract testFund {    
    struct OurFunders{
        string FristName;
        address ETHaddress;
        uint128 Amount;
        string Email;
        uint8 Funderpercent;
    }

    OurFunders[] public ourFunders;
    address public manager;
    uint8 public Fpercent;
    bool public IsFunded;
    string public CampaignName;    

     constructor (string NewCampaignName, address creater) public{
        manager = creater;
        CampaignName = NewCampaignName;
    }

    function newFunder(string FristName, address ETHaddress, uint128 Amount, string Email, uint8 Funderpercent) public{
        OurFunders memory newPerson = OurFunders({
            FristName: FristName, 
            ETHaddress: ETHaddress, 
            Amount: Amount, 
            Email: Email, 
            Funderpercent: Funderpercent
        });

        Fpercent = Fpercent + Funderpercent;

        if(Fpercent == 100){
            IsFunded = true;
        }

        ourFunders.push(newPerson);
    }
}
4

0 に答える 0