Skip to content

TomContral/funding-eth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

funding-eth

基于以太坊的众筹项目

使用InvestorToFunding合约的方法 参考(实际进行了部分简化)

第一步,修改构造函数

import './InvestorToFunding.sol';

contract FundingFactory { ... //添加一个变量,默认i2为0x00000000000000000,必须实例化才可使用 InvestorToFunding i2f;

constructor() public {
    platformProvider = msg.sender;
    //实例化InvestorToFunding合约,返回一个地址。
    address i2fAddress = new InvestorToFunding();
    //将地址显示转换为InvestorToFunding类型,此时i2可以正常使用了
    i2f = InvestorToFunding(i2fAddress);
}
...

}

第二步,传递到CrowFunding中,因为要在CrowFunding的invest函数中使用,添加到最后一个参数。

go address fundingAddress = new CrowFunding(_projectName,..., _duration, msg.sender, i2f);

第三步,修改CrowFunding的构造函数。

InvestorToFunding i2f; //新增一个状态变量
 constructor(string _projectName, ...address _creator, InvestorToFunding _i2f) public {
        creator = _creator;
        i2f = _i2f;  //赋值给状态变量
  }

第四步,修改invest函数,在参与众筹的时候,将数据添加到所维护的mapping结构中。

function invest() public payable {
    ...
    i2f.joinFunding(msg.sender, this); //<--调用添加方法,添加到mapping结构中
}

第五步,在FundingFactory中添加方法,获取当前账户所参加的所有合约。

function getInvestorFunding() public view returns(address[]) {
    return i2f.getFundingBy(msg.sender);
}

About

基于以太坊的众筹项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published