Login
欢迎来到未来世界

您现在的位置是: 首页 > 计算机 > 区块链

区块链

以太坊 智能合约

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

本文实现了一个简单的公开拍卖智能合约,每个人都可以出价,将以太坊发送到指定地址。当出价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 gt; auctionStart + biddingTime) { throw; } // 如果出价不是最高,资金退回 if (msg.value lt;= highestBid) { throw; } // 如果出价最高,当前出价者作为最高出价人 if (highestBidder != 0) { highestBidder.send((highestBid); } highestBidder = msg.sender; highestBid = msg.value; HighestBidIncreased(msg.sender, msg.value); } // 结束拍卖,并转账资金到受益人 function auctionEnd() { if (now lt;= auctionStart + biddingTime) throw; if (ended) throw; AuctionEnded(highestBidder, highestBid); beneficiary.send(this.balance); ended = true; } // 当交易没有数据或者数据不对时,触发此函数,重置出价操作,确保出价者不会丢失资金 function () { throw; } }

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

图集详情底部广告位