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 ...
随机推荐
- 一、CSS实现横列布局的方法总结
一.使用float实现横列布局的方法 如下面所示:DIV1和DIV2都可以选择向左或者向右浮动50%来实现展示在同一行 div1 div2 实现下面图片中布局的css样式如下: 分析: 1.第一行第一 ...
- 并发包CallableAndFuture
/** * * @描述: Callable Future * * 程序运行一个线程,线程运行结束后,我们可以获取另一个线程的结果 * * @作者: Wnj . * @创建时间: 2017年5月16日 ...
- webstorm javascript IDE调试
webstorm是我见过的前端开发调试最好用的IDE工具了,它不仅具有强大的编辑,代码查阅引用功能,更有强大的js调试功能,这是任何通过firebug,chrome devtool,console.l ...
- Routing Manager for WCF4 z
http://www.codeproject.com/Articles/77198/Routing-Manager-for-WCF Download source Contents Features ...
- 利息力(force of interest)
一.提出问题 二.定义 设积累函数连续可导,则时刻 t 的利息力为 三.单利在 t 时刻的利息力 单利的利息力是时间的递减函数 四.复利在时刻 t 的利息力 复利的利息力是常数!与时间无关. 称为复利 ...
- 关于Java中的反射的一个简单使用
把以前在其他地方的技术文章重新整理一遍, 方便自己回忆, 也方便他人借鉴. 刚工作的时候发过这么一段代码: package cn.com.hanbinit.test; import java.lang ...
- QT信号和槽在哪个线程执行问题
时隔四个月后的第一篇,换了个公司可以登录的博客,记录一些学习内容吧 这是看到别人写的比较好的一篇,排版有点乱 QThread的使用方法 起源 昨天不小心看到Qt开发人员( Bradley T.Hugh ...
- codeforces 797 E. Array Queries【dp,暴力】
题目链接:codeforces 797 E. Array Queries 题意:给你一个长度为n的数组a,和q个询问,每次询问为(p,k),相应的把p转换为p+a[p]+k,直到p > n为 ...
- Android(java)学习笔记1:多线程的引入
1. 多线程的引入:
- 阅读《C陷阱与缺陷》的知识增量
版权声明:本文为Focustc原创文章.转载请注明作者及出处. https://blog.csdn.net/caozhankui/article/details/35925939 看完<C陷阱与 ...