github首页:区块链学习有用链接和25本区块链书籍可免费阅读

  • 地址:https://github.com/cancerts/study-blockchain-referrence 点击这

第三节 我是实现了token的一些高级功能,如增发,冻结,撤销等,这一小节我就来实现一个众筹的项目ICO,我在学习solidity的时候好像也看见几个合约的例子,其中一个就是众筹的例子,好久了,我不记得了,大家可以去官网下载solidity去看一下,其中就有一个,今天呢,用自己的规则来实现,要完成一个众筹需要完成以下的内容:

众筹就是在约定的时间,完成约定的目标金额

第一步:设定众筹目标

众筹的目标金额,时间,兑换的价格,以及受益人

contract ico is owner{uint public fundingGoal;uint public  deadline ;uint public price;token public tokenReward;address public beneficiary;constructor(uint fundingGoalInEthers,uint durationInMinutes,uint costOfEachToken,address addressOfToken)public{fundingGoal=fundingGoalInEthers*1 ether;deadline=now + durationInMinutes* 1 minutes;price=costOfEachToken* 1 ether;tokenReward=token(addressOfToken);beneficiary=msg.sender;}
}

第二步: 实现以太和代币的兑换

我们知道,我们众筹是通过代币来完成的,但是,代币是没有价值的,只是作为一个交换的媒介

function() public payable{require(now<deadline);uint amount=msg.value;balanceOf[msg.sender]+=amount;fundAmount+=amount;uint tokenAmount=0;if(amount==0){tokenAmount=10;}else{tokenAmount=amount/price;}tokenReward.transfer(msg.sender,tokenAmount);emit FundingTransfer(msg.sender,amount);}

第三步:受益人提款或是投资人退款

当目标完成,大家都开心,齐了融融,万一达不到,也不至于去跳海把,好吧,开玩笑,这就是合约的魅力之处在于,没有达到预定的值,自动原路返回你投的钱

function checkGoalReached()public afterDeadline{if(fundAmount>=fundingGoal){emit CheckGoal(true);}   }function withdramal()public afterDeadline{if(fundAmount>=fundingGoal){if(beneficiary==msg.sender){beneficiary.transfer(fundAmount);}}else{uint amount=balanceOf[msg.sender];if(amount>0){msg.sender.transfer(amount);balanceOf[msg.sender]=0;}}}

最主要的就是要实现以上的这三步,当然还有一些为了安全和健壮做的一些添加和代码的修改

下面将完整代码给出来,大家作为一参考

pragma solidity ^0.4.20;import './owner.sol';
//===========
//转账接口
//==========
interface token{function transfer(address _to,uint amount) external ;
}
//=====================================================
//ico合约,继承token的owner,另外定义一个账本保存信息和两个事件输出显示众筹实现输出信息
//=====================================================
contract ico is owner{uint public fundingGoal;uint public  deadline ;uint public price;uint public fundAmount;token public tokenReward;address public beneficiary;mapping(address=>uint )public balanceOf;event FundingTransfer(address backer ,uint amount);event CheckGoal(bool success);//===========================================================================//构造函数,定义了众筹的目标,截止时间,每个代币的价格,还有就是投资人的收益哦//===========================================================================constructor(uint fundingGoalInEthers,uint durationInMinutes,uint costOfEachToken,address addressOfToken){fundingGoal=fundingGoalInEthers*1 ether;deadline=now + durationInMinutes* 1 minutes;price=costOfEachToken* 1 ether;tokenReward=token(addressOfToken);beneficiary=msg.sender;}//============================//代币所有者拥有设定价格的权限//============================function setPrice(uint costOfEachToken )public onlyOwner{price=costOfEachToken* 1 ether;}//===========================//实现代币和以太币的自动兑换//===========================function() public payable{require(now<deadline);uint amount=msg.value;balanceOf[msg.sender]+=amount;fundAmount+=amount;uint tokenAmount=0;if(amount==0){tokenAmount=10;}else{tokenAmount=amount/price;}tokenReward.transfer(msg.sender,tokenAmount);emit FundingTransfer(msg.sender,amount);}//======//构造器//======modifier afterDeadline(){require(now >=deadline);_;}//============================//达到目标值输出事件,成功true//============================function checkGoalReached()public afterDeadline{if(fundAmount>=fundingGoal){emit CheckGoal(true);}   }//====================================================//到达预定时间没有达到目标筹集值,将筹集到的金额返回//====================================================function withdramal()public afterDeadline{if(fundAmount>=fundingGoal){if(beneficiary==msg.sender){beneficiary.transfer(fundAmount);}}else{uint amount=balanceOf[msg.sender];if(amount>0){msg.sender.transfer(amount);balanceOf[msg.sender]=0;}}}
}

哈哈,皮皮,记录一下今天中国和韩国的争夺中夺冠了,第一枚金牌就是那么的洋气,真的佩服,鲜花,掌声送给社会人

以太坊--众筹ICO实现相关推荐

  1. 众筹系统源码 java_以太坊 众筹系统

    以太坊众筹系统 众筹系统是基于以太坊solidity书写智能合约,并用基于web3j 开发web应用. 项目地址:https://github.com/niyuelin1990/CrowdFundin ...

  2. NO.15 不得不说的以太坊跟ICO

    随着以太坊的出现,区块链进入了2.0时代,以太坊是个太神奇的东西,没有天才的想法.高超的技术以及黑客的精神是无法如此成功的.它实现了区块链项目的快速开发,快速实施. 以太坊这个开发平台本身发行了一种币 ...

  3. Pantera Capital创始合伙人:最大遗憾是没有投资以太坊ICO

    Pantera Capital创始合伙人Steven Waterhouse近日表示,作为一名风险投资人,他最大的遗憾是没有投资以太坊的ICO.目前,他是去中心化V/PN服务公司Orchid(兰花协议) ...

  4. 以太坊简史:因暴雪削弱术士而诞生的千亿美元巨兽

    撰文:Eric,Foresight News 2013 年 11 月,在比特币创世区块诞生近 5 年之后,以太坊白皮书问世. 2013 年的 Vitalik Buterin 「这份初稿是我对我们称之为 ...

  5. 避不过裁员大潮,有钱任性也独木难支!以太坊联合创始人Joe Lubin的分布式梦,要破了吗?

    Joe Lubin 不仅是以太坊联合创始人.区块链风险投资公司 Consensys 创始人,他也是一个「有钱且任性」的亿万富翁.但你绝对不会想到,5年前的他,还在为帮助牙买加模特成功「混入音乐界」忙得 ...

  6. 基于以太坊发布属于自己的数字货币(代币)完整版

    https://blog.csdn.net/JAVA_HHHH/article/details/79771752 本文单纯从技术角度详细介绍如何基于以太坊ERC20创建代币的流程(此案例是部署的eth ...

  7. 独家!天才少年 Vitalik:“中国开发者应多关注以太坊!”

    "我构思以太坊这个项目时,最初的想法是'这要是能做成那太牛掰了'.当以太坊真的落地后,证明我的想法是对的,以太坊从里到外都是个很棒的项目!" --Vitalik Buterin,以 ...

  8. 新一代区块链系统——以太坊将带领我们去往何方?

    从2020年末至2021年五月上旬,币圈一直风头正盛,大部分虚拟货币的价格一路高歌猛进.进入五月,比特币甚至一度涨到6万美元一枚,以太币也突破了4000美元的大关. 但是好景不长,五月下旬币圈马上迎来 ...

  9. 一个基础的以太坊介绍

    https://bitsonblocks.net/2016/10/02/a-gentle-introduction-to-ethereum/ Posted on October 2, 2016 by ...

最新文章

  1. 科大讯飞副总裁刘鹏:人机交互的未来是人人交互?
  2. cisco 路由器访问权限的设置
  3. c++中判断某个值在字典的value中_Python核心知识系列:字典
  4. SAP Spartacus的产品主数据模型
  5. 下面哪个字段是http请求中必须具备的_HTTP 协议报文结构及示例
  6. navicat工具查看MySQL数据库_表占用容量_占用空间是多少MB---Linux工作笔记048
  7. Django运算表达式与Q对象/F对象
  8. 软件开发计划_软件开发的流程是怎么样的?福州IT告诉你:这五点是你需要掌握的...
  9. BM3D算法学习总结
  10. 4k hidpi 黑苹果_【图片】为了让Mac pro也实现hidpi 把4k的分辨率显示成到1920,我今天也是拼了,下午研究了半天【macpro吧】_百度贴吧...
  11. iOS AVCaptureDevice介绍
  12. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
  13. 【lifelines中文wiki】生存分析简介
  14. IOT漏洞挖掘学习笔记(一)——堆基础及相关数据结构
  15. 网桥、交换机、路由器等的区别
  16. keras入门教程 1.线性回归建模(快速入门)
  17. 数据解惑 · 带你认识数字高程模型(DEM)
  18. Yolanda,Withings,PICOOC以及RyFit四款智能人体成分秤对比评测
  19. 论文笔记—LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain
  20. 21-7-14 绝对差值和

热门文章

  1. rk3128-优化开机速度
  2. VUE3组件库-input组件
  3. 某银行核心系统架构升级改造
  4. bootstrap实现轮播图 --设置图片大小等于父容器大小
  5. CID/clickid最新进展及原理介绍
  6. 轻轻松松学习SpringBoot2:第十九篇: 数据库操作(三):事务
  7. html语言怎么标记音乐文件,添加背景音乐的html标签是什么?
  8. 安装KB3132372补丁后,WIN10中IE内核加载flash崩溃
  9. 最新.net面试题及答案
  10. 管理信息系统相关计算机技术,分析管理信息系统中计算机通信技术要点