前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >以太坊合约分析之拍卖算法

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

作者头像
老钱
发布2018-08-15 16:01:33
5060
发布2018-08-15 16:01:33
举报
文章被收录于专栏:码洞码洞

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

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码洞 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档