以太坊合约分析之拍卖算法

拍卖的基本流程很简单,一般就是拍卖人亮出一件商品,拼命的宣传吹嘘商品的价值,然后进入一轮又一轮的竞价过程,待拍卖时间结束,价高者和拍卖人一手交货一手交钱。

现场拍卖和数字拍卖略微不同,现场拍卖等待的时间不能太长,不能冷场,拍卖参与的人数也很有限,拍卖程序进行的很快,连喊几声无人加价就结束了。

数字拍卖一般是限定时间段,活动时间到了拍卖才算结束,或者拍卖人觉得拍卖的价钱已经很不错了就提前结束。

下面我们分析一个简单的拍卖合约代码

  1. 拍卖人通过构造器SimpleAuction()发起拍卖,提供拍卖持续时间和受益人账户地址参数,拍卖人可以是商品主人也可以是代理人。
  2. 参与人通过调用bid()方法进行举牌。举牌是一个需要耗币的过程,并且每次举牌的金额必须高于当前举牌的最大金额。该方法会记录当前的举牌人账户地址和金额。 如果参与人的举牌金额在下一轮被超越了,就会将上一轮的举牌人和举牌金额记录在pendingReturns字典中以便在拍卖结束返还给参与人。
  3. 任意用户调用auctionEnd()触发交易结束。也许你会问如果是任意用户可以结束交易,那交易不就可以提前结束了么?该方法的代码已经做了时间判断,只有等到拍卖的时间结束调用此方法才能成功,并且通过设置ended变量来控制只能结束一次。 拍卖一结束,合约就会调用beneficiary.transfer(highestBid)将当前举牌的最大金额转入受益人账户。
  4. 其它未中标的参与人可以调用withdraw()方法从合约账户中取回自己的竞拍金额。

上面这个简单的合约有一个不足,参与人如果向加价竞拍的话,需要重复支付全量金额,如果重复加价N次,需要付出N倍的金额。

还有就是没有限定加价最低间隔,会导致后面的参与人使用微弱的价格增量就可以抢夺商品的购买权,因为合约的执行确认需要一定时间,在活动临近结束时,当前最高竞价者持有的商品购买权很容易被抢占。

原文发布于微信公众号 - 码洞(codehole)

原文发表时间:2018-03-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏流星博客

吐槽下坑爹的主机屋

大家好!  众所周知  建网站离不开域名和建站主机 但这两样东西大多都是需要付费的    

49212
来自专栏北京马哥教育

面向物联网的几大开源操作系统

在过去的十年间,大多数新型开源操作系统已从移动市场转向物联网市场。本文介绍了面向物联网的许多新型开源操作系统。我们之前的文章介绍了开源物联网框架,以及面向物...

6276
来自专栏FreeBuf

快讯 | 继CoinHive后,JQuery官方博客也被黑了

FreeBuf 先前报道过,分发挖矿 javascript 的网站 CoinHive 被黑了,而且影响范围很广,今天,又有新闻爆出,前端领域经久不衰的老牌第三方...

2569
来自专栏C语言及其他语言

个人如何免费举办编程训练赛?Dotcpp编程网比赛权限完全开放 助你轻松实现

经过长时间的了解和沟通,了解到很多学校的老师、社团负责人甚至个人,都苦于没有一个很好的编程训练比赛平台,来检测检验或者举办各种赛事活动。

691
来自专栏ytkah

公众平台开发者中心接口权限列表改版 细分接口类别方便查阅见监控

  腾讯公司董事会主席兼CEO马化腾在世界互联网大会上表示基于连接基于开放的原则,“在微信创新性的引入公众账号和服务号的体系,连接了很多服务和商家”,与腾讯开放...

2385
来自专栏站长

站长:新站优化擎惕过度优化,恢复很长漫长

www.gzdangaopeixun.com 我这个新站是5月4号上线的,当时把网站内容完善以后就开始上线了,网站也提交了百度站长验证,过了两天,百度检验我的这...

1535
来自专栏IT大咖说

终于等到你,还好没放弃的周五程序员段子

男人要记住,与女人吵架的要领是,要像在安装软件或注册网站时阅读“服务条款”那样,直接忽略所有的内容,到最后面勾选“我同意”,然后点击“确定”。

1294
来自专栏小文博客

腾讯云年中大促,低至三折优惠

1K6
来自专栏域名资讯

一口价!“铜交所”三拼域名18888元易主

由于中国网民记忆和输入习惯,拼音域名在国内非常吃香!最近三拼米也是爆发出了强劲的增值潜力,高价结拍或交易的案例一个接一个。这不,一枚三拼域名tong...

2288
来自专栏企鹅号快讯

揭秘黑客盗号

早期的盗取号的方法主要有两种: 第一种:本地机器种木马这是极为普遍的一种方法,而且很简单,只要您能有一个木马就行,这种软件可以说遍地都是,数量很多,随便到哪个小...

1.3K8

扫码关注云+社区

领取腾讯云代金券