实战案例————众筹

对象1一个needer 受益人 募集资金

多个funder 捐赠者

pragma solidity ^0.4.0;
contract zhongchou{
    
    struct funder{
        address funderaddress;//捐赠者地址 
        uint Tomoney;//捐多少钱 
         
    }
    struct needer{
        address   Neederaddress;//受益人地址 
        uint goal;//资金 
        uint amount;//已经募集到的资金  
        uint funderAccount;//有多少个捐献者 
        mapping(uint=>funder) map;//映射到捐赠者
    }
    uint neederAmount;//管理 needer的数量 
    mapping(uint=>needer) needmap;//每个数量对应哪一个 needer,存储在区块链上面 
    
     function NewNeeder(address _Neederaddress,uint _goal){//行为 
        neederAmount++;
        needmap[neederAmount]=needer(_Neederaddress,_goal,0,0);//新建一个needer 
        
    }
    function contribute(address _address,uint _neederAmount)payable{
        needer storage _needer=needmap[_neederAmount];//拿到受益人实例 
        _needer.amount+=msg.value;//向受益人合约账户转钱
        _needer.funderAccount++;//捐献者加一 
        _needer.map[_needer.funderAccount]=funder(_address,msg.value);//绑定捐献者地址和捐赠数目给受益人  
        
    }//捐赠行为 
    function ISconpelete(uint _neederAmount){
        needer storage _needer=needmap[_neederAmount];
        if(_needer.amount>=_needer.goal){
            _needer.Neederaddress.transfer(_needer.amount);//把合约账户的钱转移到受益人地址上 
        }
    }
    //判断是否完成捐赠目标 
    function test()view returns(uint,uint,uint){
        return(needmap[1].goal,needmap[1].amount,needmap[1].funderAccount);
    }
    
    
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值