在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 大數(shù)據(jù)/ 區(qū)塊鏈技術(shù)(八):以太坊公開拍賣智能合約案例
區(qū)塊鏈技術(shù)(十):以太坊去中心化淘寶智能合約案例
區(qū)塊鏈技術(shù)(八):以太坊公開拍賣智能合約案例
區(qū)塊鏈技術(shù)(九):以太坊非公開拍賣智能合約案例
區(qū)塊鏈技術(shù)(五):以太坊核心概念(一)
區(qū)塊鏈技術(shù)(一):Truffle開發(fā)入門
區(qū)塊鏈技術(shù)(七):以太坊投票智能合約案例
區(qū)塊鏈技術(shù)(四):區(qū)塊鏈?zhǔn)鞘裁矗?/span>
區(qū)塊鏈技術(shù)(三):智能合約入門
區(qū)塊鏈技術(shù)(二):以太坊編程語言Solidity安裝
區(qū)塊鏈技術(shù)(六):以太坊核心概念(二)

區(qū)塊鏈技術(shù)(八):以太坊公開拍賣智能合約案例

這篇文章實(shí)現(xiàn)一個(gè)簡單的公開拍賣智能合約,所有人都可以出價(jià),把以太幣發(fā)送到指定地址,出價(jià)B高于出價(jià)A時(shí),那么A的資金會(huì)被自動(dòng)退回。拍賣結(jié)束后,商品所有者會(huì)收到最高的出價(jià)資金。

代碼如下:

contract SimpleAuction {
  // 定義參數(shù):受益人、開始時(shí)間、拍賣持續(xù)時(shí)間
  address public beneficiary;
  uint public auctionStart;
  uint public biddingTime;

  // 最高出價(jià)者
  address public highestBidder;
  // 最高出價(jià)
  uint public highestBid;

  // 拍賣結(jié)束后,設(shè)置這個(gè)值為true,不允許被修改。
  bool ended;

  // 最高出價(jià)變動(dòng)時(shí)調(diào)用事件
  event HighestBidIncreased(address bidder, uint amount);
  // 拍賣結(jié)束時(shí)調(diào)用事件
  event AuctionEnded(address winner, uint amount);

  // 創(chuàng)建一個(gè)拍賣對象,初始化參數(shù)值:受益人、開始時(shí)間、拍賣持續(xù)時(shí)間 
  function SimpleAuction(uint _biddingTime, address _beneficiary) {
    beneficiary = _beneficiary;
    auctionStart = now;
    biddingTime = _biddingTime;
  }

  // 出價(jià)功能:包括交易參數(shù)。
  // 當(dāng)出價(jià)不是最高,資金會(huì)被自動(dòng)退回。
  function bid() {
    // 從交易中獲取時(shí)間,如果拍賣結(jié)束,拒絕出價(jià)
    if (now > auctionStart + biddingTime) {
      throw;
    }
    // 如果出價(jià)不是最高,資金退回
    if (msg.value <= highestBid) {
      throw;
    }

    // 如果出價(jià)最高,當(dāng)前出價(jià)者作為最高出價(jià)人
    if (highestBidder != 0) {
      highestBidder.send((highestBid);
    }
    highestBidder = msg.sender;
    highestBid = msg.value;
    HighestBidIncreased(msg.sender, msg.value);
  }

  // 結(jié)束拍賣,并轉(zhuǎn)賬資金到受益人
  function auctionEnd() {
    if (now <= auctionStart + biddingTime)
      throw;
    if (ended)
      throw;
    AuctionEnded(highestBidder, highestBid);

    beneficiary.send(this.balance);
    ended = true;
  }

  // 當(dāng)交易沒有數(shù)據(jù)或者數(shù)據(jù)不對時(shí),觸發(fā)此函數(shù),重置出價(jià)操作,確保出價(jià)者不會(huì)丟失資金
  function () {
    throw;
  }
}

從這個(gè)案例可以看到,智能合約在拍賣領(lǐng)域能讓過程更透明公平,最大程度的促進(jìn)參與者的積極性。下一篇文章我們會(huì)介紹一個(gè)復(fù)雜一點(diǎn)的拍賣智能合約。

原文:http://wangxiaoming.com/blog/2016/05/15/blockchain-tech-open-auction/