主要是指的是用NodeJs调用 提供接口供前端使用 用户查询和转帐javascript
外部函数的调用前端
参与人如何保存本身已经参与的项目java
定义数据:web
// 用于保存 参与者的全部参与的项目,每个FundingFactory只有一个 contract PlayerToFundings { mapping(address => address[]) playersFundings; // 添加接口 (在Funding的support中被调用) function joinFunding(address funding, address sender) public{ playersFundings[sender].push(funding); } // 查询接口 (在FundingFactory中被调用) function getFundings(address sender) public view returns(address[] fundings){ // return msg.sender; return playersFundings[sender]; } }
把数据放到新的合约中PlayerToFundings。app
mapping(address => address[]) private playerToFunings;函数
contract FundingFactory { PlayerToFundings playerToFundings; // 初始化PlayerToFundings合约 constructor() public { address playerToFundingsAddress = new PlayerToFundings(); playerToFundings = PlayerToFundings(playerToFundingsAddress); } // * 提供获取合约中数据的函数 function getPlayerFoundings() public view returns(address[]){ return playerToFundings.getFundings(msg.sender); } }
存数据:Funding support时候存数据测试
contract Funding { // 在factory建立Funding时,把PlayerToFundings传进来。 constructor (string _projectName, uint _supportMoney, uint _goalMoney, PlayerToFundings _p2f,address _address) public { ... p2f = _p2f; } // * 调用p2f, 把参与者参与的项目存到PlayerToFundings的mapping中 funtion support() public payable { ... players.push(msg.sender); p2f.joinFunding(address(this), msg.sender); } }
demoui
pragma solidity ^0.4.17; contract PlayerToFundings { uint count = 100; function setFundingsCount(uint _count) public { count = _count; } function getFundingsCount() public view returns(uint){ return count; } } contract Factory { PlayerToFundings p2f; address[] public fundings; // function Test(address p2fAddress) public{ // p2f = PlayerToFundings(p2fAddress); // } function Factory() public{ address p2fAddress = new PlayerToFundings(); p2f = PlayerToFundings(p2fAddress); } function createFounding() public { address funding = new Funding(p2f); fundings.push(funding); } function setCount(uint count) public { p2f.setFundingsCount(count); } function getCount() public view returns(uint){ return p2f.getFundingsCount(); } } contract Funding { PlayerToFundings p2f; function Funding(PlayerToFundings _p2f) public{ p2f = _p2f; } function support() public { p2f.setFundingsCount(999); } }