ethereum(以太坊)(实例)--"简单的公开竞拍"
- 说真的,刚开始接触这个竞拍案例--“简单的公开竞拍”,我就抱着简单的心态去查看这个实例,但是自我感觉并不简单.应该是我实力不到家的原因吧!!!233333。。。
不过经过大半天的努力,自己理解完之后,觉得是有那么点简单.(代码是官网上的,不过解释不太清楚.我加了自己的实践和理解,希望能帮助到大家)
- pragma solidity ^0.4.10;
- contract Bid{
- //0x14723a09acff6d2a60dcdf7aa4aff308fddc160c,100
- //0x4b0897b0513fdc7c541b6d9d7e929c4e5364d2db,200
- //0x583031d1113ad414f02576bd6afabfb302140225,150
- //商品拥有者地址
- address public benefiy;
- //拍卖时间
- uint bidEndtime;
- //记录未成功竞拍到的人,可以取回之前的出价
- mapping(address => uint) public RetrunMemony;
- //最高价地址
- address public HighestBidAddr;
- //最高价
- uint public HighestBidMomery;
- //是否结束
- bool isEnd;
- event HighestBidIncrase(address bider,uint _memony);
- event EndBidIncrase(address _bider,uint _memony);
- constructor(address _benefiy,uint _EndTime) public{
- benefiy = _benefiy;
- bidEndtime = now + _EndTime;
- }
- //开始竞拍
- function bid() public payable{
- require(now < bidEndtime);//require(msg.sender.balance > msg.value);
- require(msg.value>HighestBidMomery);
- if(HighestBidMomery !=0){ //储存成功参与竞拍但不是最高价的地址和出价
- RetrunMemony[HighestBidAddr] += HighestBidMomery;//同一参与竞拍者多次出价
- }
- HighestBidMomery = msg.value;
- HighestBidAddr = msg.sender;
- emit HighestBidIncrase(msg.sender,msg.value);
- }
- //结束竞拍
- function endBid() public payable{
- require(now >= bidEndtime);
- require(!isEnd);
- isEnd = true;
- benefiy.transfer(HighestBidMomery);
- emit EndBidIncrase(HighestBidAddr,HighestBidMomery);
- }
- //未竞拍成功的人取回交易
- function getBack() payable public returns(bool){
- uint mount = RetrunMemony[msg.sender];
- if(mount >0){//执行一次后,就无法再执行此返还函数
- RetrunMemony[msg.sender] = 0;//取回后,价格清0,不允许再次执行
- //send:success->true,failed->false
- //msg.sender.send(mount) 执行成功则不执行以下函数
- if(!msg.sender.send(mount)){// 未返还竞拍价格
- RetrunMemony[msg.sender] = mount;
- return false;//未返还竞拍价格
- }
- }
- return true;//if(mount <=0) 已经成功取回竞拍价
- }
- }
ethereum(以太坊)(实例)--"简单的公开竞拍"的更多相关文章
- ethereum(以太坊)(实例)--"安全的远程购买"
pragma solidity ^0.4.10; contract Safebuy{ uint public price; address public seller; address public ...
- ethereum(以太坊)(一)
从这周开始,开始学习以太坊开发--solidity,开始决定往区块链方向发展,毕竟区块链技术应用广泛.一开始接触solidity开发语言不太习惯,毕竟一直在学习python语法,有很多都不能接受.有难 ...
- ethereum(以太坊)(十四)--Delete
pragma solidity ^0.4.10; contract Delete{ /* delete可用于任何变量(除mapping),将其设置成默认值 bytes/string:删除所有元素,其长 ...
- ethereum(以太坊)(基础)--容易忽略的坑(三)
pragma solidity ^0.4.10; contract Byte{ bytes [] public T=new bytes[](3); function setLeng(uint len) ...
- ethereum(以太坊)(基础)--容易忽略的坑(二)
pragma solidity ^0.4.0; contract EMath{ string public _a="lin"; function f() public{ modif ...
- ethereum(以太坊)(基础)--容易忽略的坑(一)
pragma solidity ^0.4.0; contract base{ address public _owner=msg.sender; uint _a; string internal _b ...
- ethereum(以太坊)(十三)--异常处理/元祖
pragma solidity ^0.4.4; contract Students{ uint[] data= new uint[](4); address _owner = msg.sender; ...
- ethereum(以太坊)(十二)--应用(二)__投票(基础总和)
编写应用合约之前,先弄清它的逻辑,有助于我们更好的部署合约 pragma solidity ^0.4.21; pragma experimental ABIEncoderV2; contract vo ...
- ethereum(以太坊)(十二)--应用(一)__集资(构造函数/映射)
pragma solidity ^0.4.4; contract funder{ //0xca35b7d915458ef540ade6068dfe2f44e8fa733c //0x14723a09ac ...
随机推荐
- DELPHI 小结
//十六进制(S)-->>十进制(I) [重写:Jey]function hextoint(s: string): Integer; begin //$代表16进制 ...
- HTML,javascript,image等加载,DOM解析,js执行生命周期
- Linux ->> UBuntu 14.04 LTE下安装Hadoop 1.2.1(集群分布式模式)
安装步骤: 1) JDK -- Hadoop是用Java写的,不安装Java虚拟机怎么运行Hadoop的程序: 2)创建专门用于运行和执行hadoop任务(比如map和reduce任务)的linux用 ...
- SQL Server ->> CONCAT函数
这是一个SQL Server 2012后引进的新函数.作用就如同它名字的意思.它对NULL值得处理是空字符串.当然它能做的不仅是对字符的支持.它支持N个列输入,列的类型支持更加完善.不过其实它的原理不 ...
- 使用CoreImage教程
使用CoreImage教程 CoreImage包含有很多实用的滤镜,专业处理图片的库,为了能看到各种渲染效果,请使用如下图片素材. 现在可以开始教程了: #define FIX_IMAGE(image ...
- Struts学习-Hibernate2
一. 1.配置 <!-- hibernate-core --> <dependency> <groupId>org.hibernate</groupId> ...
- Makefile 实例
CROSS_COMPILE = HI_CFLAGS= -Wall -O2 -g -march=armv7-a -mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv ...
- 对HandlerExecutionChain类的理解分析
HandlerExecutionChain类比较简单,好理解. ==================================================================== ...
- Netty问题小结
1.问题:高并发时连接不够:java.net.SocketException: No buffer space available (maximum connections reached?): co ...
- reactnative 原生组件通信原理
http://www.csdn.net/article/2015-11-27/2826345-compare-React-Native-with-ExMobi 原生组件通信原理 React Nativ ...