对象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);
}
}
该博客介绍了使用Solidity编程语言构建的一个智能合约系统,用于管理众筹活动。合约包含捐赠者(funder)和受益人(needer)的结构,记录捐赠金额和进度,并实现了捐赠、目标完成判断和资金转移的功能。
5481

被折叠的 条评论
为什么被折叠?



