solidity智能合约练习

源码:

pragma solidity ^0.4.0;
contract Crowdfunding{
    //赞助人
    struct funder{
        address funderAddr;
        uint money;//捐赠的数额 
    }
    //被赞助人
    struct needer{
        address neederAddr;
        uint goal;//众筹的目标资金
        uint current;//目前筹集到的资金
        uint funderAmount;
        mapping(uint => funder) funderMap;
    }
    
    //合约属性 
    uint neederAmount;
    mapping(uint => needer) neederMap; 
    
    //被赞助人构造 
    function newNeeder(address _neederAddr, uint _goal){
        neederAmount++;
        neederMap[neederAmount] = needer(_neederAddr, _goal, 0, 0);//type mapping can be ignore in constructor
    }
    //赞助
    function contribute(address _funderAddr, uint _neederId) payable{
        needer storage _needer = neederMap[_neederId];
        _needer.current += msg.value;//msg is a global variaty
        _needer.funderAmount++;
        _needer.funderMap[_needer.funderAmount] = funder(_funderAddr, msg.value);
    }
    //judge if the crowdfunding have completed
    function judgeCompleted(uint _neederId){
        needer storage _needer = neederMap[_neederId];
        if(_needer.current >= _needer.goal)
            _needer.neederAddr.transfer(_needer.current);
    }
    //show the status of a needer
    function showNeeder(uint _neederId) view returns(uint, uint, uint){
        needer storage _needer = neederMap[_neederId];
        return(_needer.goal, _needer.current, _needer.funderAmount);
    }
}
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值