123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | pragma solidity ^0.4.23;contract campaign{ //捐赠者的对象 struct funder{ address funderaddress; //捐赠者的地址 uint Tomoney; //捐赠者捐赠的金钱 } //受益人的对象 struct needer{ address Neederaddress; //受益人的地址 uint goal;//受益人的目标值 uint amount; //当前的已经募集到了多少钱 uint funderAcoount; //捐赠者的id mapping(uint => funder) map; //映射,将捐赠者的id与捐赠者绑定在一起,从而能够得知,是谁给当前的受益人捐钱了。 } uint neederAmount; //受益人的id数 mapping(uint=> needer) needmap; //通过mapping将受益人的id与受益人绑定在额一起,从而能够能耗的管理受益人 //实现一个众筹的事件 function NewNeeder(address _Neederaddress, uint _goal ){ //将受益人id与受益人绑定 neederAmount++; needmap[neederAmount] = needer(_Neederaddress,_goal,0,0); } //@param _address 捐赠者的地址 , //@param _neederAmount 受益人的id function contribute( address _address, uint _neederAmount) payable{ //通过id获取到受益人对象 needer storage _needer = needmap[_neederAmount]; //聚集到的资金增加 _needer.amount += msg.value; // 捐赠人数增加 _needer.funderAcoount++; //将受益人id与受益人绑定 _needer.map[ _needer.funderAcoount] = funder(_address , msg.value ); } //当募集到的资金满足条件,就会给给受益人的地址转账 //@param _neederAmount 受益人的id 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].funderAcoount); }} |
本文链接: https://dreamerjonson.com/2018/11/23/solidity-43-campaign/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。