• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 百科 查看內容
    • 1199
    • 0
    • 分享到

    以太坊公開拍賣智能合約案例

    2018-1-28 13:31

    來源: 赤道鏈

    這篇文章實現一個簡單的公開拍賣智能合約,所有人都可以出價,把以太幣發送到指定地址,出價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;
      }
    }

    從這個案例可以看到,智能合約在拍賣領域能讓過程更透明公平,最大程度的促進參與者的積極性。下一篇文章我們會介紹一個復雜一點的拍賣智能合約。

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频