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 ...
随机推荐
- Spring @Value SpEl 知识点小记
在JavaBean文件中使用Spring的@Value注解获取配置文件.yml或资源文件.properties中 key - value 键值信息 @Value("${stu.number} ...
- 通过JavaScript创建Qml对象
有两种方法可以创建,都是全局对象Qt提供的方法 一:用Qt.createComponent加载一个qml文件并创建Component 二:用Qt.createQmlObject从一个qml字符串创建C ...
- TreeMap----的实现原理(红黑树)
TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致 ...
- Linux->ZooKeeper集群搭建
人,总免不了有心结,限制着自己,难以前行.对于ZooKeeper的理解,以及实践也拖了很久,今天用零散时间学习一下,补点干货. 一.简述 Zookeeper是Google的Chubby一个开源的实现, ...
- Windows 10 KMS 手工激活
第一.安装好Win10系统,不需要安装其他激活工具.第二.是删除默认序列号,打开命令提示符(管理员),运行 slmgr.vbs -upk,可提示已卸载了序列号. slmgr /ipk W269N-WF ...
- jclass和jobject的迷惑
[译]jclass和jobject 2012-09-18 15:02:58| 分类: Android |字号 订阅 jclass和jobject的迷惑第一次使用JNI,实例引用(jobject) ...
- 模糊搜索框(H5),兼容安卓和ios(令人头大的ios输入法)
项目里要可以实现,按照模糊,于是从jq22网站找到一个代码,效果如图: 具体的html代码:(复制,需要引入jq相关的支持文件) <!DOCTYPE html PUBLIC "-//W ...
- Python之Dict和Set类型(入门5)
转载请标明出处: http://www.cnblogs.com/why168888/p/6407905.html 本文出自:[Edwin博客园] Python之Dict和Set类型 1. Python ...
- 第三篇——第二部分——第一文 SQL Server镜像简单介绍
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/DBA_Huangzj/article/details/26951563 原文出处:http://bl ...
- JS解析json数据(如何将json字符串转化为数组)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...