需求描述
为交易本身附带额外的 metadata(下称 CTMeta),用以在减少 ckb 状态占用的前提下,增加元信息描述。典型的应用场景包括:转账附言、代币静态信息描述、NFT 静态信息描述等
标准规范
在交易的 witness 数组的最后一个 witness 作为 CTMeta 的容器,待确认问题
如何确保这些数据不会被传播节点、矿工篡改?
链外同步数据时需要确认该 witness 被至少一个 input lock 的签名覆盖,否则不处理该部分 metadata 数据
内容如下
{
"id": "CTMeta", // 用来识别消息格式与内容
"ver": "1.0",
"metadata": // 具体的 metadata 内容
[
{
"target": "output#0", // 用来描述本数据是针对哪个utxo的,可选标签 input, output, omni
"type": "nft-renderer", // 用来描述用途,由应用自定义
"data": {
<payload_data> // 对应的详细信息,参考 "NFT Metadata Standard"
}
},
{
"target": "output#0",
"type": "postscript",
"data": "I love you."
},
...
]
}
预定义的 CTMeta.type 类型
type | 描述 | 针对 UTXO 对象 | 规范标准 |
---|---|---|---|
nft-renderer | mNFT 协议的 NFT Class metadata 描述 | 创建 mNFT Class | 待定 |
nft-distribution | 针对不同的 NFT 个体进行不同的设定 | 创建 mNFT Cell / 批量创建 cNFT 分发 | 待定 |
postscript | 通用转账附言,可以是 CKB、sudt、NFT | 收款方 UTXO | UTF-8 编码字符串 |
sudt-info | sudt 的扩展信息 | 发行方 mint sudt cell | 待定 |
其他 |