BSV网络上的拍卖合约
我们在 BSV 网络上设计并实现了一个安全的拍卖合约。 它是公开透明的,每个人都可以参加,竞标结束后出价最高的竞标者将中标。 投标人受其出价的约束,而拍卖人则受拍卖结果的约束。
实现
// Auction: highest bid before deadline wins
contract Auction {@statePubKeyHash bidder;PubKey auctioner;int auctionDeadline;// bid with a higher offerpublic function bid(PubKeyHash bidder, int bid, int changeSats, SigHashPreimage txPreimage) {require(Tx.checkPreimage(txPreimage));int highestBid = SigHash.value(txPreimage);require(bid > highestBid);PubKeyHash highestBidder = this.bidder;this.bidder = bidder;// auction continues with a higher bidderbytes stateScript = this.getStateScript();bytes auctionOutput = Utils.buildOutput(stateScript, bid);// refund previous highest bidderbytes refundScript = Utils.buildPublicKeyHashScript(highestBidder);bytes refundOutput = Utils.buildOutput(refundScript, highestBid);bytes changeScript = Utils.buildPublicKeyHashScript(bidder);bytes changeOutput = Utils.buildOutput(changeScript, changeSats);bytes output = auctionOutput + refundOutput + changeOutput;require(hash256(output) == SigHash.hashOutputs(txPreimage));}// withdraw after bidding is overpublic function close(Sig sig, SigHashPreimage txPreimage) {require(Tx.checkPreimage(txPreimage));require(SigHash.nLocktime(txPreimage) >= this.auctionDeadline);require(checkSig(sig, this.auctioner));}
}
bid
(竞价)函数逻辑:如果找到更高的出价,则更新当前的中标者,并退款给之前的最高出价者。close
(成交)函数逻辑:拍卖者可以在到期后关闭拍卖并接受要约。
可能的扩展
有很多方法可以扩展此基本合同。 例如,如果拍卖的物品被标记并存储在 UTXO(例如 NFT)中,可以要求交易 Tx 的一个输入是通证的 UTXO,通过一个输出将其转移给买主,从而使得成交操作是原子性的,不可能作弊。
BSV网络上的拍卖合约相关推荐
- BSV 网络上公平的掷硬币游戏
我们可以在 BSV 网络上基于比特承诺方法实现一个公平且不需要第三方的掷硬币游戏. 假设 Alice 和 Bob 决定掷硬币,但他们没有实物硬币,或者他们想通过互联网进行.通过遵循下面这个 BSV 协 ...
- 【以太坊】在测试网络上发布智能合约
一.准备工作 1.本地测试网络搭建完成,对以太坊的了解已经达到基础水平.(可以参考我之前的关于以太坊的文章). 2.有翻墙的能力(发布合约的时候,有不少网站都是需要翻墙操作的) 3.本地浏览器安装Me ...
- 结合 Mist 在本地测试网络上实现代币智能合约
Mist 简介 Mist是以太坊官方的在线钱包管理工具.通过 Mist 我们可以很方便的连接上我们的私有网络,从而更好的开发.调试.测试我们的智能合约.既可以连接生产网络.测试网络,更加可以通过设置参 ...
- 超700万个NFT存储在星际文件系统网络上,总量超54TiB
一.超54TiB的NFT存储于星际文件系统网络 目前已有超过700万个NFT通过nft.storage存储在星际文件系统网络上,总量超54TiB. 二.官方宣布星际文件系统虚拟机(FVM) 近期,官方 ...
- BSV网络完成历史性的“创世纪”硬分叉升级
发表时间:2020年2月5日 信息来源:BitcoinAssociation.net 2020年2月4日,BSV网络成功完成了其历史性的"创世纪"硬分叉升级,并恢复了比特币的原始设 ...
- 行走在区块链上的智能合约
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 我和你打一个赌,我赌明天是雨天,你赌是晴天,赌注100大洋.假设明天是晴天,然后你跑过来管我要100大洋的赌金,我装疯卖 ...
- 以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约
以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约 在上一篇文章中,我们使用Truffle自带的客户端Truffle Develop,在私有链上搭建并运行了官方提供的WebPack智能合 ...
- Truffle 4.0、Geth 1.7.2、TestRPC在私有链上搭建智能合约
1.什么是 Truffle? Truffle 是最流行的开发框架,能够在本地编译.部署智能合约,使命是让开发更容易. Truffle 需要以太坊客户端支持,需要支持标准的JSON RPC API. 2 ...
- 使用 remix-ide(Browser-solidity)在 Geth 上部署智能合约
什么是智能合约 简介:智能合约是存储在区块链上的一段代码,它们可以被区块链上的交易所触发,触发后,这段代码可以从区块链上读取数据或者向区块链上写入数据. Solidity 的语言特性 Solidity ...
最新文章
- [LeetCode]Implement Trie (Prefix Tree)
- SqlBulkCopy加了事务真的会变快吗?
- 数仓建模 项目_模型设计_数仓建模 PDF 下载
- linux xd命令,看Linux文件的内容:用cat,less,more,head,tail,nl,od,xxd,gv,xdvi命令
- 计算机教育类会议论文,中国教育和科研网(CERNET)第七届学术会议征集论文通知...
- 解决Windows下运行出现ModuleNotFoundError: No module named xxx问题
- 来自数据库的MVC 6动态导航菜单
- php开发App接口
- DHCP八种报文及其详解
- 设计模式:个人理解关于代理和委托模式的一点区别
- python 拆分excel单元格_python使用openpyxl excel 合并拆分单元格
- 从百草园到三味书屋,从servlet到springmvc
- 已解决:axios 发送post请求,报403错误
- 5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐
- CPC、MAU、DAU....术语集(1)
- 网络安全kali渗透学习 web渗透入门 ARL资产侦察灯塔系统搭建及使用
- python全0列表_Python 列表(Lists)
- 天使的分裂【NOIP2016提高A组模拟9.24】
- linux内核丢弃udp报文,内核udp报文截取、修改和发送
- 前端学习——Mobx