不用智能合约的 NFT:Cardano 上 CIP-25 怎么描述一枚藏品 图 1
不用智能合约的 NFT:Cardano 上 CIP-25 怎么描述一枚藏品 · 图 1

不用智能合约的 NFT:Cardano 上 CIP-25 怎么描述一枚藏品

多数 NFT 教程默认了一个前提:藏品活在一段合约代码里,合约地址加编号就是一枚 NFT 的身份证号。Cardano 走的是完全不同的路——链上原生资产模型:不存在“部署 NFT 合约”这一步,资产本身就是账本一等公民,描述它们的元数据则挂在铸造交易上。CIP-25(Media Token Metadata Standard)就是给这种元数据定格式的社区标准。理解这套结构,是读懂 Cardano 生态藏品与排查显示问题的前提。

先换地图:资产不是合约里的编号

在以太坊,一枚 ERC-721 藏品的存在形式是“某合约的存储映射里,编号 X 归地址 Y”;在 Cardano,资产是 UTxO 模型里的原生条目,携带发行策略(Policy)与资产名两个要素,被打包进交易的输出里流转。没有合约调用,也没有 approve 授权——所有权就是持有那笔包含资产的输出,转账就是普通转账。这个结构差异决定了核验方式的不同:查 ERC-721 藏品打开合约页,查 Cardano 资产看的是资产的身份与其发行脚本。

CIP-25 的位置:给元数据一个共同方言

原生资产自带名字与数量,但不自带“这张图叫什么、属性有哪些、文件存在哪”。CIP-25 的解法是在铸造交易上附加一段结构化元数据,写在固定的标签编号下(注册为 721 一族),让钱包与市场能用统一方式解析。结构以发行策略 ID(policyId)为第一层键,指向该策略下的条目;条目里记录藏品名、媒体文件地址与属性表。规范存在两个主要结构版本:0 版的键结构以 policyId 直接映射条目,1 版进一步把资产名纳入键中。这个版本差异对用户的直接后果是:解析器若只认一个版本,就会出现“链上有资产、市场显示空白或错名”的错位——排查 Cardano 藏品显示问题时应先确认解析器支持的 CIP-25 版本。

没有合约,谁来管“发行权”

以太坊 NFT 的铸造权限写在合约里,Cardano 的答案在发行脚本:控制某资产能否继续铸造、总量如何增长的是一段锁定在策略 ID 下的脚本,任何满足脚本条件的交易才能增发对应资产。日常语义近似“发行权归谁”,技术语义却差很远——没有可调用的合约地址,权限约束以脚本条件形式提前锁死。对持有者的含义是:判断“会不会再增发”,要看策略脚本写的条件,而不是找管理员函数;脚本内容公开在链上,可在浏览器按 policyId 查。顺带一提,Cardano 生态还有针对版税声明、元数据预言机等主题的后续 CIP 在演进,说明“用元数据标签与脚本约定拼出完整 NFT 语义”这条路还在继续加长,读旧资料时留意标准编号与年代。

三条实操核验习惯

  1. 认资产用 policyId 加资产名这对组合,不看展示名称——同一展示名在不同策略下就是不同资产。
  2. 显示异常先查元数据版本:铸造交易的 CIP-25 版本与浏览器的解析版本是否匹配。
  3. 关心增发风险查发行脚本条件;关心文件存续看元数据里的媒体地址是否内容寻址,逻辑与其他链一致。另有一个常被称作“链上图片”的误解要澄清:Cardano 账本对每笔交易可携带的元数据规模设有参数上限,CIP-25 条目因此按“属性加媒体地址”的思路设计,图片本体存放在链下,链上锁定的是描述与指向;把“有原生资产”误读成“文件上了链”,会导致对内容存续风险的完全误判。

本文只做结构科普,不构成投资建议;标准条目持续修订,细节以 CIPs 官方站点的当前文本为准。