博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Solidity(6)
阅读量:5861 次
发布时间:2019-06-19

本文共 1588 字,大约阅读时间需要 5 分钟。

众筹

pragma solidity ^0.4.24;// 主要完成产品的众筹contract CrowdFunding{        // 投资者是结构体    struct Funder{        address addr;  // 投资者地址        uint amount;   // 投资金额    }        // 采用结构体来描述众筹产品    struct Product{        address addr;   // 如果众筹成功,则金额会转到当前地址        uint goal;      // 预期众筹的目标,如果达到此目标则说明众筹成功        uint amount;    // 实际众筹的金额        uint funderNum;    // 统计投资者的人数,缺省值为0        // 映射类型,统计当前产品的投资者        mapping(uint => Funder) funders;    }        // 平台要统计众筹的产品数量    uint count;      // 此映射主要记录平台的众筹产品    mapping (uint => Product) public products;    // 添加众筹产品信息       function candidate(address addr, uint goal) returns (uint compaingnID){        // 结构体是不需要new,此处按照结构体声明的变量顺序进行赋值        products[count++] = Product(addr, goal*10**18, 0, 0);    }        // 此函数实现对产品进行众筹功能    function vote(uint index) payable {        // 通过索引获取要众筹产品信息        Product p = products[index];        // 创建投资者,并且存储到产品众筹映射中        // msg.sender:当前函数调用者,就是众筹者, msg.value:众筹金额是调用函数时传入的value值        p.funders[p.funderNum++] = Funder({addr: msg.sender, amount: msg.value});        // 把当前众筹金额追加到amount中        p.amount += msg.value;    }        // 检测当前产品众筹是否成功(如果成功则众筹金额转到产品提供的地址)    function check(uint index) payable returns (bool){        Product p = products[index];        // 判断当前众筹金额是否大于设置金额        if(p.amount < p.goal){            return false;        }        // 众筹成功,当前金额要转给产品地址        uint amount = p.amount;        // 初始化amount        p.amount = 0;        p.addr.transfer(amount);  // 如果失败则返回为false        // if(!p.addr.send(amount)){        //     throw;        // }        return true;    }}复制代码

转载地址:http://azwnx.baihongyu.com/

你可能感兴趣的文章
转两好文防丢:Debian 版本升级/降级 & Linux 应用程序失去输入焦点问题的解决...
查看>>
HDU - Pseudoforest
查看>>
Linux平台Java调用so库-JNI使用例子
查看>>
Web服务器压力测试工具http_load、webbench、ab、Siege使用教程
查看>>
Mac软件下载备忘
查看>>
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory
查看>>
就是一个表格
查看>>
找回使用Eclipse删除的文件
查看>>
集成spring3、hibernate4、junit
查看>>
URL与ASCII
查看>>
java读取properties配置文件
查看>>
UITableview中cell重用引起的内容重复的问题
查看>>
Windows7操作系统安装教程(图文)
查看>>
除了模拟手术教学,VR在医疗领域如何应用?
查看>>
盘点5款Ubuntu监控工具解决CPU暴增问题
查看>>
java 测试IP
查看>>
用CSS做导航菜单的4个理由
查看>>
NOIP2015 运输计划 二分答案+Tarjan LCA+树上差分
查看>>
基本信息项目目标文档
查看>>
移动开发Html 5前端性能优化指南
查看>>