函式解釋:
newCampaign:創建公司受益人以及籌款目標
contribute:進行捐贈,并將捐贈名單計入結構體
CheckGoalReached:若達到眾籌目標,清空amout,并將goal轉給受益者
呼叫次序說明:

合約代碼:
pragma solidity ^0.4.11;
contract CrowdFunding{
struct Funder{
address addr;
uint amout;
}
struct Campaign{
address beneficiary;
uint fundingGoal;
uint numFunders;
uint amount;
//when initialize the Campaign
//ignore the mapping
mapping(uint => Funder) funders;
}
uint numCampaigns;
mapping(uint => Campaign) campaigns;
function newCampaign(address beneficiary, uint goal)
public returns (uint campaignID){
campaignID = numCampaigns++;
campaigns[campaignID] = Campaign(beneficiary, goal, 0, 0);
}
function contribute(uint campaignID) public payable{
Campaign storage c = campaigns[campaignID];
c.funders[c.numFunders++] = Funder(msg.sender, msg.value);
c.amount += msg.value;
}
function checkGoalReached(uint campaignID) public returns (bool reached){
Campaign storage c = campaigns[campaignID];
if(c.amount < c.fundingGoal)
return false;
uint amount = c.amount;
c.amount = 0;
c.beneficiary.transfer(amount);
return true;
}
}
總結:
模擬眾籌
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/303360.html
標籤:區塊鏈
