东莞网站建设设计公司,东莞网络外包公司,惠州网站关键字优化,莆田网站设计基于 Ordinals 的 BSV-20 同质化代币 之前#xff0c;我们展示了如何将比特币智能合约与 Ordinals 集成#xff0c;Ordinals 可以被视为链上的 NFT。 在本文中#xff0c;我们将展示如何将它们与同质化代币#xff08;即 BSV-20 代币#xff09;集成。 我们仍然以拍卖为例… 基于 Ordinals 的 BSV-20 同质化代币 之前我们展示了如何将比特币智能合约与 Ordinals 集成Ordinals 可以被视为链上的 NFT。 在本文中我们将展示如何将它们与同质化代币即 BSV-20 代币集成。 我们仍然以拍卖为例它的工作原理与 NFT 版本相同只有很少的变化。 BSV-20 同质化代币如何运作
BSV-201 是 BSV 网络上的同质化代币标准受到 BTC 上的 BRC-20 标准的启发。
Ordinals 铭文由内容类型也称为 MIME 类型和内容任意字节字符串组成。
OP_FALSE
OP_IFOP_PUSH ordOP_PUSH 1OP_PUSH content-typeOP_PUSH 0OP_PUSH content
OP_ENDIF在 BSV-20 中您可以创建内容类型为 application/bsv-20 且内容为 JSON 的 Ordinals 铭文输出。
部署 (Deploy)
例如要部署最大供应量为 21000000 的 ordi 代币您可以使用以下 JSON 创建一个铭文。
{ p: bsv-20,op: deploy,tick: ordi,max: 21000000,lim: 1000
}铸造 (Mint)
要铸造 1000 个 ordi 代币请写入以下 JSON。 { p: bsv-20,op: mint,tick: ordi,amt: 1000
}转移 (Transfer)
代币存储在未花费的交易输出UTXO中就像原生比特币的持有方式一样。 要启动代币转账您需要花费指定的 UTXO 并使用与花费常规聪相同的过程生成新输出。只不过这些新输出需要包含转账铭文。 这与 Ordinal NFT 不同Ordinal NFT 仅在铸造时需要铭文而在转移时会被丢弃。
例如要转移上面铸造的代币您将创建一个交易其输入花费铸造 UTXO通常提供签名和公钥以花费 P2PKH 脚本输出包含以下铭文。 它将 1000 个代币分成三个输出每个输出分别包含 100、500 和 400 个代币。 有关 BSV-20 代币如何工作的更多详细信息请阅读官方文档。
拍卖 BSV-20 代币
拍卖 BSV-20 代币的智能合约与我们上一篇文章中用于拍卖 NFT 的智能合约几乎相同。 唯一的区别在于 close 公共方法。 除了检查第一个输出是否发送给中标者之外我们还检查它在一开始就包含预期的转移铭文。 如果我们忽略此检查则解锁的 UTXO 携带的 BSV-20 代币将被视为烧毁。
// Close the auction if deadline is reached.
method()
public close(sigAuctioneer: Sig) {...// Ensure the ordinal is being payed out to the winning bidder.let outScript Utils.buildPublicKeyHashScript(hash160(this.bidder))outScript this.transferInscription outScriptlet outputs Utils.buildOutput(outScript, 1n)...
}假设我们要拍卖上面铸造的 1000 个 ordi 代币this.transferInscription 将如下所示
OP_FALSE
OP_IFOP_PUSH ordOP_PUSH 1OP_PUSH application/bsv-20OP_PUSH 0OP_PUSH { p: bsv-20,op: transfer,tick: ordi,amt: 1000}
OP_ENDIF[1] 这里我们使用 BSV-20 的 V1First 是第一模式。 V2无 tick 模式稍作修改即可支持。