これに数時間を費やして少し迷っていますが、理由がわかりません。基本的に、この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);
}
}