IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 通学智能合约系列(二十二)--乞丐版众筹项目实践 -> 正文阅读

[区块链]通学智能合约系列(二十二)--乞丐版众筹项目实践

智能合约众筹项目实战

首先要给大家说声抱歉,最近太太太忙了。之前老早说的要进行一个智能合约总结,一直都没有时间,今天终于能抽出来点时间,做一个收尾工作。

无论做任何事,我都喜欢善始善终。要做就要做彻底。在这里,我们就跟着建勋老师的步伐,一起来实现我们这个乞丐版的灾情众筹项目吧。

当下正值台风“烟花”的侵袭,郑州的父老乡亲们身处水深泥流之中,我们大家也都是忧心忡忡,想给我们的同胞尽一份心,尽一份力。生活在我们当下这个时空,各种天灾频发,各种人祸也是经常让大家吃瓜吃的津津有味,例如,某某H十字又中饱私囊了多少我们的爱心捐赠。某笔款项又又又又不知去向。

那么,我们有没有好的办法,好的手段来实现我们的捐款可追溯,透明,公正,没有猫腻呢?

答案是肯定的,我们学了这么久的智能合约,作为一种图灵完备的,运行在区块链上的编程语言,便是上述问题的量身打造。在动手之前,我们先的合计合计,虽然是要写一个乞丐版的项目 ,但也不能缺胳膊少腿的。

我的基本想法就是,首先我们这个系统必须要有两类人:请求捐赠的人,捐赠的人。另外,我们需要具备 三个功能:发起筹款,捐款,结束捐款。大致的图就是下面这个样子了。

在这里插入图片描述

想想都是问题,做做都有答案。废话不多说,我们直接上代码。

pragma solidity ^0.4.16;

// 乞丐版灾情众筹项目
contract zhouchouTest{

    // 发起人或者可以理解为需要被帮助的人
    struct needer{
         // 发起人钱包地址
         address neederAddress;
    	 // 发起人目标筹款金额
         uint goal;
    	 // 账户金额(已筹得金额)
         uint amount;
         // 捐款人个数
         uint funderAmount;
         // 捐款人id与捐款人映射
         mapping(uint =>funder) map;
    }
    
    // 捐款人 
    struct funder{
        // 捐款人账户地址
        address funderAddress;
        // 捐款金额
        uint money;
        
    }
    
    
    // 作为一个乞丐版的众筹平台 我们也不能只支持一个人在该平台上 发起众筹 
    // 当多个人发起时,我们可以记录一下发起人的总数 也可以作为发起人的id
    uint neederId;
    // 另外我们还需要将id与发起人做一个映射,方便管理
    mapping(uint => needer) needMap;
    
    // 发起众筹 谁要发起众筹,需要众筹多少马尼呢?
    function newNeeder(address _neederAddress, uint _goal){
        // 发起人我们需要存储在区块链上以方便与后续查看 所以不能在内存中构造
        // needer memory newNeeder = needer(_neederAddress,_goal,0,0);
        
        // 不同的发起人
        neederId++;
        // 将发起人与我们的计数做一个绑定
        needMap[neederId] = needer(_neederAddress,_goal,0,0);
        
    }
    
    // 捐赠(看他们那么可怜,我拉上朋友一起给他们捐赠吧)
    // 那么到底是谁捐赠的?那我要捐赠给谁?
    function contribute(address _funderAddress,uint _neederAmount){
        // 根据id确定我要捐给谁
        needer storage _needer = needMap[_neederAmount];
        // 我要把捐500块钱,直接打给我想要捐的那个人的账户余额里
        // 通过msg.value全局变量确认我要捐多少钱
        _needer.amount += msg.value;
        // 有人给我捐款+1 (此处直接 个数等同于捐赠人id)
        _needer.funderAmount++;
        // 构造捐赠人(是谁 给我捐赠的,捐了多少马尼),最终要捐赠给谁
        _needer.map[_needer.funderAmount] = funder(_funderAddress,msg.value);
    }
    
    
    // 请求捐赠不同于乞讨,我们获取到了我们需要的马尼之后,就该结束了。
    // 而乞讨确实可以作为终身职业。emm 此处应该有一个五味杂陈的表情
    // 接收捐赠是否结束?(我发起众筹已经有一些时日了 灾情也结束了 我该看看是不是可以结束筹集马尼了)
    function isComplete(uint _neederId){
        // 根据发起人id获取发起人的筹mn信息
        needer storage _needer = needMap[_neederId];
        // 如果筹集的马尼已经大于我设定的目标筹款马尼时,那我就提现重新开始好好生活了~
        if(_needer.amount > _needer.goal){
        	// 提现
            _needer.neederAddress.transfer(_needer.amount);
        }
    }
 }

编写完成我们的众筹项目后,我们可以部署一下。然后执行以下步骤。

在这里插入图片描述

发起众筹前,1472民众存款:

在这里插入图片描述

发起众筹后,1472民众存款:

在这里插入图片描述

果然是多了2个达不溜,谢谢土豪大善人。

最后,1472民众感谢了平台,感谢了5830`大善人;

5830大善人感谢了平台,平台感谢了5830善人,并为其建立了个人档案,将这一善举利用hash函数打包,永久地记录在 了区块链上。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 10:50:27  更:2021-07-23 10:50:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:36:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码