zoukankan      html  css  js  c++  java
  • 以太坊公开拍卖智能合约案例

    这篇文章实现一个简单的公开拍卖智能合约,所有人都可以出价,把以太币发送到指定地址,出价B高于出价A时,那么A的资金会被自动退回。拍卖结束后,商品所有者会收到最高的出价资金。

    代码如下:

    contract SimpleAuction {
      // 定义参数:受益人、开始时间、拍卖持续时间
      address public beneficiary;
      uint public auctionStart;
      uint public biddingTime;
    
    
      // 最高出价者
      address public highestBidder;
      // 最高出价
      uint public highestBid;
    
    
      // 拍卖结束后,设置这个值为true,不允许被修改。
      bool ended;
    
    
      // 最高出价变动时调用事件
      event HighestBidIncreased(address bidder, uint amount);
      // 拍卖结束时调用事件
      event AuctionEnded(address winner, uint amount);
    
    
      // 创建一个拍卖对象,初始化参数值:受益人、开始时间、拍卖持续时间 
      function SimpleAuction(uint _biddingTime, address _beneficiary) {
        beneficiary = _beneficiary;
        auctionStart = now;
        biddingTime = _biddingTime;
      }
    
      // 出价功能:包括交易参数。
      // 当出价不是最高,资金会被自动退回。
      function bid() {
        // 从交易中获取时间,如果拍卖结束,拒绝出价
        if (now > auctionStart + biddingTime) {
          throw;
        }
        // 如果出价不是最高,资金退回
        if (msg.value <= highestBid) {
          throw;
        }
        
        // 如果出价最高,当前出价者作为最高出价人
        if (highestBidder != 0) {
          highestBidder.send((highestBid);
        }
        highestBidder = msg.sender;
        highestBid = msg.value;
        HighestBidIncreased(msg.sender, msg.value);
      }
    
      // 结束拍卖,并转账资金到受益人
      function auctionEnd() {
        if (now <= auctionStart + biddingTime)
          throw;
        if (ended)
          throw;
        AuctionEnded(highestBidder, highestBid);
    
        beneficiary.send(this.balance);
        ended = true;
      }
    
      // 当交易没有数据或者数据不对时,触发此函数,重置出价操作,确保出价者不会丢失资金
      function () {
        throw;
      }
    }

    从这个案例可以看到,智能合约在拍卖领域能让过程更透明公平,最大程度的促进参与者的积极性。下一篇文章我们会介绍一个复杂一点的拍卖智能合约。

  • 相关阅读:
    Android 拍照 代码实例
    利用Android手机里的摄像头进行拍照
    看视频时,类加载器没太理解,现在再整理下几个要点
    关于java设计模式与极品飞车游戏的思考
    【Mood-3】心声
    源自梦想 eclipse快捷键整理
    2020重新出发,JAVA语言,JAVA的诞生和发展史
    2020重新出发,序章: 语言的诞生
    2020重新出发,JAVA学前了解,DOS常用命令
    2020重新出发,JAVA学前了解,Windosws常用快捷键
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313438.html
Copyright © 2011-2022 走看看