ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

比特币网络上的拍卖合约

2021-03-27 15:01:33  阅读:271  来源: 互联网

标签:比特 bidder bid bytes Util 拍卖 txPreimage 合约 require


我们在比特币网络上设计并实现了一个安全的拍卖合约。 它是公开透明的,每个人都可以参加,竞标结束后出价最高的竞标者将中标。 投标人受其出价的约束,而拍卖人则受拍卖结果的约束。

实现

// Auction: highest bid before deadline wins
contract Auction {
    PubKey auctioner;
    int auctionDeadline;

    // bid with a higher offer
    public function bid(Ripemd160 bidder, int bid, SigHashPreimage txPreimage) {
        require(Tx.checkPreimage(txPreimage));

        int highestBid = Util.value(txPreimage);
        require(bid > highestBid);

        // read previous highest bidder
        bytes lockingScript = Util.scriptCode(txPreimage);
        int scriptLen = len(lockingScript);
        Ripemd160 highestBidder = Ripemd160(lockingScript[scriptLen - Util.PubKeyHashLen : ]);

        // auction continues with a higher bidder
        bytes auctionScript = lockingScript[: scriptLen - Util.PubKeyHashLen] + bidder;
        bytes auctionOutput = Util.buildOutput(auctionScript, bid);

        // refund previous highest bidder
        bytes refundScript = Util.buildPublicKeyHashScript(highestBidder);
        bytes refundOutput = Util.buildOutput(refundScript, highestBid);
        
        require(hash256(auctionScript + refundOutput) == Util.hashOutputs(txPreimage));
    }

    // withdraw after bidding is over
    public function close(Sig sig, SigHashPreimage txPreimage) {
    		require(Tx.checkPreimage(txPreimage));
    		require(Util.nLocktime(txPreimage) >= this.auctionDeadline);
        require(checkSig(sig, this.auctioner));
	  }
}
  • bid (竞价)函数逻辑:如果找到更高的出价,则更新当前的中标者,并退款给之前的最高出价者。
  • close (成交)函数逻辑:拍卖者可以在到期后关闭拍卖并接受要约。

可能的扩展

有很多方法可以扩展此基本合同。 例如,如果拍卖的物品被标记并存储在 UTXO(例如 NFT)中,可以要求交易 Tx 的一个输入是通证的 UTXO,通过一个输出将其转移给买主,从而使得成交操作是原子性的,不可能作弊。

标签:比特,bidder,bid,bytes,Util,拍卖,txPreimage,合约,require
来源: https://blog.csdn.net/freedomhero/article/details/114638176

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有