属性数组不在任何 ERC 里:市场约定怎么变成事实标准 图 1
属性数组不在任何 ERC 里:市场约定怎么变成事实标准 · 图 1

几乎每个看过 NFT 元数据的人都见过那个数组:一列列键值对,写着背景、帽子、眼睛。它如此普遍,新铸造者照抄模板、买家拿它核对稀有度,仿佛这是标准背书的字段。真相更曲折:ERC-721 的元数据扩展只规定了三个可查询函数——名称、符号、令牌定位符;至于定位符指向的那份 JSON 里该有什么,标准文本没有任何约束。属性数组是一个市场约定,一个强大到被误认成标准的惯例。

把因果链摆正。最早的聚合市场为了给海量异构藏品提供统一展示面,发布了元数据规范文档,把属性数组、图像地址、外部链接地址这些字段写进指南。因为那家市场同时是绝大多数交易发生的场所,这份文档获得了不成文的强制力:钱包要显示藏品就照它读,稀有度工具做统计就照它算,铸造工具默认按它导出。没有人给这份 JSON 发过证书,但它事实上统治了整个字段生态——事实标准的形成往往如此:先有一家的展示需求,后有万家的兼容义务。

事实标准的代价随之而来:没有权威 schema,各家解析口径就开始漂移。属性值写字符串还是数字,不同校验器答案不同;同名属性大小写混用要不要归并,稀有度工具各自立法;数组要不要嵌套、层级多深,历史项目文件里什么都有。于是有了“同一集合、两个工具、三个稀有度排名”的日常景观——分歧大多不来自链上数据,而来自对同一份自由格式 JSON 的解释权。别忘了:合约里没有任何地方存过“稀有度”这个数,它是各家解析 JSON 后各自计算的观点值。

对买家,这份现实翻译成三条纪律。第一,把属性展示当渲染结果,不当链上事实:页面上“全集合仅 3 件带金冠”的徽章,背后是某工具按其口径解析全体元数据的统计,口径一变徽章就变。第二,链上事实与展示信息分开记账:合约地址、代币编号、持有与授权记录以链上为准;属性、名称、图片以元数据为准,两边不混用。第三,按属性做筛选出价时,理解你在依赖一个可能滞后的索引层——元数据改了、解析没跟上,你圈定的条件就是过期的。

对铸造者,结论更直白:惯例没有官方语法,一致性就是你的宪法。属性名称在铸造前定稿并统一大小写锁定;值类型统一(该是字符串的绝不混数字);属性名不做同义复用。元数据一旦公开传播,事后清洗的成本远高于事前自律——稀有度工具的历史快照、二级市场的筛选条件、别人已经写好的分析文章,全是清洗不掉的分叉源。

把视线从属性数组移开半寸,同一份 JSON 里的其他字段也在同样的“惯例层”上:图像地址、动画地址、外链地址、背景色,这些键名全部出自市场文档而非任何 ERC 条文。更微妙的是口径连锁——稀有度计算依赖“属性名+属性值”的配对统计,空值算不算一个属性、多值数组怎么摊平、同名异大小写是否归并,每个选择都会改写排名小数点后的数字。你会发现“同一作品在不同面板的稀有度不一样”不是数据错了,是各家在同一份自由文本上写了不同的解析器。标准缺失的地方,工具就会替你做决定——这是元数据层最本质的权力结构。

最后留一个观察框架:属性数组的地位提醒我们,NFT 生态里最有力的规则常常不在代码里,而在“足够多人依赖同一份文档”的事实里。链上标准定义资产怎么转移,市场惯例定义资产怎么被看见、被统计、被定价——两层规则,两套修订程序,后者的修订没有任何投票记录。看懂你依赖的字段活在哪一层,是穿透“标准感”的第一步。本文为机制说明,不构成任何投资建议。

属性数组不在任何 ERC 里:市场约定怎么变成事实标准 图 2
属性数组不在任何 ERC 里:市场约定怎么变成事实标准 · 图 2