Skip to content

CAT721 规范

不同于 CAT20 代币,CAT721 代币不能被分割成更小的单位。每个代币都是独一无二的,不可互换的,即非同质的。每个 NFT 都使用比特币交易将 完整数据存储在链上

1. 部署

img

要铸造任何非同质代币 (NFT),必须先部署一个集合。所有从创世交易中铸造的 NFT 都属于该集合。出处是链上的,并记录在协议中。它可以被任何一方访问,并且不依赖于链下的数据。

与 CAT20 类似,集合信息嵌入在 CAT 信封中,但使用不同的标签。

text
OP_FALSE
OP_IF
  OP_PUSH "cat"
  OP_PUSH 2 // collection
  OP_PUSH 5 // metadata tag
  OP_PUSH <JSON>   // CBOR encoded
OP_ENDIF

JSON 文件包含集合级别的元数据,必须至少包含以下内容:

json
{ 
  "name": "lockedcat",
  "symbol": "LockedCAT",
}

collectionId 定义为创世提交输出点 txid_vout,与 CAT20 的 tokenId 相同。揭示交易必须遵循与 CAT20 相同的规则。

字段

信封可能包含其他字段。每个字段由一个标签和一个对应的值组成。目前定义了以下标签:

  • 0: content
  • 1: MIME type of the content
  • 5: metadata
  • 9: encoding of the content

Royalties

集合创建者可以在元数据字段中选择性地包含版税支付信息,如下所示:

json
{ 
  "receiver": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",  // 接收版税支付的地址
  "royaltyPercent": "10",    // 版税支付金额占销售价格的百分比
}

NFT 市场生态系统可以自愿采用上述标准化的版税支付系统,但强制执行。这有助于为艺术家和内容创作者建立可持续的收入流。潜在的 NFT 买家在购买时可能会将版税结构作为决策过程中的一个重要因素。

2. 铸造

每个集合中的每个 NFT 都可以通过花费一个铸造者 UTXO 来铸造,就像 CAT20 一样。铸造者合约和相应的铸造交易必须遵循与 CAT20 铸造相同的规则,但有两个额外的规则:

  • 其输入中只有一个信封。信封与输出中刚铸造的 NFT 相关联。它包含 NFT 的所有元数据。这个输入不同于花费前一个铸造者输出的输入。
  • Each NFT must have a local ID unique within the collection.

img

每个 NFT 都嵌入在一个信封中,类似于 Ordinals,但使用不同的标签。

text
OP_FALSE
OP_IF
  OP_PUSH "cat"
  OP_PUSH 3	// NFT
  OP_PUSH 0
  OP_PUSH content
OP_ENDIF

可选的 字段 可以添加到内容之前,内容也是可选的。

note

Inscription 在 CAT721 中绑定到一个特定的 UTXO,而不是像 Ordinals 那样绑定到一个特定的 satoshi。

从全局来看,每个单独的 NFT 将由一个唯一的 ID 引用:collectionId_localId,即 txid_vout_localId。一个 CAT20/FT 和 CAT721/NFT 输出分别具有以下合约状态:

img

与 CAT20 一样,任意铸造规则可以在 CAT721 铸造合约中编程和执行,例如开放铸造和限量供应。

并行铸造

在顺序和链式铸造中,当并发 N = 1 时,我们可以简单地将铸造的 NFT 的 localId 作为其 localId,例如 NFT_0NFT_1。为了减少集合中铸造 NFT 时的争用,并发铸造也允许在 CAT20 中使用。我们需要在 N > 1 的集合中强制执行唯一的 localId 以允许并行铸造。

注意铸造交易形成一个 N 元树,根在揭示交易中。一种方法是使用 Level Order Traversal(也称为广度优先搜索或 BFS)为每个交易和其中的 NFT 分配一个唯一的 ID,基于它们被访问的顺序。我们以这样的方式遍历树,即同一级别的所有节点完全访问完后再移动到下一级别的节点。下图展示了在二叉树中 N = 2 时的工作原理。

img

注意 localId 仅在协议中用于内部使用。它不一定是 NFT 在集合中被铸造的顺序编号。例如,NFT_3 可以在上面的 NFT_1 之前被铸造。在实践中,应用程序在向用户展示 NFT 时可能会使用不同的 ID,例如它实际被铸造的顺序编号。

3. 转移

一个 NFT 可以从一个输入转移到另一个输出,即从一个 UTXO 转移到另一个。只有状态中的所有者地址字段被更新。 img

批量转移

多个 NFT,在同一个或不同的集合中,可以在单个交易中转移。输入中的 NFT 集合必须等于输出中的集合,无论顺序如何。以下示例显示了两个 NFT 的转移。 img

4. 销毁

一个 NFT 的所有者可以销毁并销毁它,永久地从集合中删除它。可以在单个交易中销毁多个 NFT。 img