CosmWasm 也有版税查询:cw2981 的 RoyaltyInfo 与可以指向多签的收款地址 图 1
CosmWasm 也有版税查询:cw2981 的 RoyaltyInfo 与可以指向多签的收款地址 · 图 1

谈 NFT 版税声明时,多数内容停留在以太坊的 EIP-2981。CosmWasm 生态其实有一套对应设计:cw-nfts 仓库里的 cw2981-royalties 合约,README 直接注明灵感来自 EIP-2981,把”合约自报版税”这个模式搬进了 Rust 与 CosmWasm 的查询消息体系。字段语义相通,但查询形态、类型系统和实现自由度都是另一套。

核心是一个查询消息。cw2981 在合约上暴露两个新的查询消息类型,其中主查询 RoyaltyInfo 接收参数 token_id,语义是”这笔销售该付多少版税”——README 写得很直白:应该在出售时由正在售卖这枚 NFT 的市场来调用,返回的是该代币应当支付的版税信息。这与 EIP-2981 的 royaltyInfo(tokenId, salePrice) 相比少了一个售价参数,返回的是百分比形态的声明,具体金额由市场按成交价折算。

声明存在发行配置里,两个字段:royalty_percentage,类型是可选的 64 位无符号整数;royalty_payment_address,可选的字符串地址。README 特意补了一句:这个收款地址可以是单一地址,也可以是一个多签合约,或者一个 DAO。这给了发行团队直接把版税收入挂到集体金库的可能——收款方不是一个人的钱包,而是一套需要多人签名才能动用的合约,版税流入即进入集体治理范围。对持有人来说,读到这样的地址意味着版税去向受多签规则约束,动它需要的门槛比私人地址高。核对时可以把这个地址拿去区块链浏览器上看它本身是不是合约、合约有没有公开的多签配置,判断标准与其他链上地址一致。

还要留意两个字段都是”可选”(Option 类型)这件事。可选意味着合约允许版税字段为空——发行方可以部署一个实现了 cw2981 查询接口、但比例或地址留空的合约,查询不报错、返回却是空值。这与”根本没实现 cw2981”是两种状态:前者是声明了但声明为空,后者是连问答格式都不支持。把一枚藏品的版税状态写进笔记时,“查询返回空”与”合约不支持查询”要分开记录,两者的含义完全不同,前者说明发行方有意留白,后者的比例问题根本没有链上答案。

第二个查询消息是 CheckRoyalties。README 解释了它的定位:这个合约里”没什么可检查的”,但钩子存在的意义是让外部合约验证目标合约是否确实实现了 cw2981。市场或聚合器挨个收录合约时,先问一句 CheckRoyalties,得到实现确认再读版税字段,避免对着一个根本没实现扩展的合约瞎猜默认值。这套”先验存在、再读数值”的两步,是 CosmWasm 查询体系里的常见模式。

放在生态里看,cw2981 是一份”声明层”标准,与前面聊过的 TON TEP-66、以太坊 EIP-2981 属同一类:都回答”发行方要求收多少、打给谁”,都不回答”市场是否真的会收”。CosmWasm 侧的市场是否读取该字段、上架时是否允许改比例、清算时按什么优先级分账,由平台政策决定,与合约声明是两本账。README 本身也没承诺任何执行机制,它只定义了查询的形状。

对持有人,实际操作路径有三步:第一步确认藏品合约实现了 cw2981(问 CheckRoyalties,或者直接看它能否正确响应 RoyaltyInfo 查询);第二步带 token_idRoyaltyInfo,记下返回的百分比与收款地址;第三步把收款地址的形态记下来——是私人地址还是多签或 DAO 合约,前者的修改弹性通常更大,后者的变动要走集体流程。任何一项查证都建议注明核验日期,因为合约可升级性会改变答案。

值得再强调一次边界:查询返回的比例不是历史成交的审计结果。某集合声明百分之五,只意味着问题”该付多少”有链上答案;每一笔二手成交里是否真扣了、是否真打给了声明地址,要靠逐笔核对成交记录。声明与执行分离,是这一类版税标准的共同结构,CosmWasm 没有例外。

本文为机制说明,不构成任何投资建议。

CosmWasm 也有版税查询:cw2981 的 RoyaltyInfo 与可以指向多签的收款地址 图 2
CosmWasm 也有版税查询:cw2981 的 RoyaltyInfo 与可以指向多签的收款地址 · 图 2