チェーンの下でインタラクションして太坊Dappインターフェースで開発します.

3334 ワード

主にNodeJsを使って、フロントエンドでユーザーの照会と振替を利用するために提供インターフェースを呼び出すことです.
エーテル坊Dappプロジェクト
プロジェクト
機能ニーズ
  • 通行人
  • みんなの計画項目を調べます.2@OK
  • 衆のプロジェクトのaddressに基づいて、この衆の計画の詳細(参加人数/予定金額/目標金額/終了時間/参加人数)を取得し、2.5@OK
  • 衆計画プロジェクトに参加します.3@OK
  • 衆議案の発起人
  • 衆議案を作成します.1@OK
  • 自分で作成した大衆計画を確認してください.5@OK
  • 支払要求を開始し、6
  • 大勢の参加者
  • 参加したプロジェクトを確認します.4@OK
  • 決裁請求、7
  • 現在のaccount@OK
  • を取得します.
    知能契約及びテスト
  • 外部関数の呼び出し参加者は自分が参加した項目をどうやって保存しますか?
  • 定義データ:
    //                 ,   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];
        }
    
    }
  • 新しい契約にデータを置くPlayer ToFunings.mapping(address=>address[]prvate player ToFunnings;
    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);
        }
    
    }
  • データを保存します.Funing 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);
        }
    }
    
  • を保存します.
  • demo
    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);
        }
    }
    
  • 知能契約及びテスト(web 3.js)
  • インターナショナル.jsスマート契約コードパッケージ
  • 契約書createFuning
  • を作成します.
    転載先:https://www.cnblogs.com/xiaocongcong888/p/9553300.html