实战案例————众筹

    科技2026-02-14  22

    对象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); } }
    Processed: 0.012, SQL: 9