Sui 的 Display 对象:钱包里的名字和图片是模板拼出来的 图 1
Sui 的 Display 对象:钱包里的名字和图片是模板拼出来的 · 图 1

在 Sui 上转一枚 NFT,你可能会看到两种截然不同的界面:有的钱包显示名字、缩略图与描述,有的只显示一串字段名加值。差别通常不在资产本身,而在于这个类型有没有配一份 Display。

Display 是一个与类型绑定的独立对象

按 Sui 文档,Object Display 是一套模板引擎,控制对象在钱包、区块浏览器等链下应用里怎么呈现。实现上它是一个 Display<T> 结构,用幽灵类型参数把自己和某个资产类型绑在一起,内部装着一个字符串到字符串的映射,外加一个只有发布者能手动更新的 version。也就是说,显示信息不属于资产结构体,而是挂在类型上的另一份数据,好处是同一类型成千上万枚对象不必各自复制一遍项目主页、描述这类公共文案。

Sui 的 Display 对象:钱包里的名字和图片是模板拼出来的 图 2
Sui 的 Display 对象:钱包里的名字和图片是模板拼出来的 · 图 2

模板用花括号取字段

标准没有限制你能设哪些键。约定俗成的一组属性包括 name、description、link、image_url、thumbnail_url、project_url、creator,但文档强调这些只是建议,开发者可以自定义字段,客户端按自己的需要取用。

值里可以用花括号占位语法引用对象字段,渲染时由客户端读链上的 Display 定义,再把模板变量替换成该对象实际字段值。嵌套字段用点分路径逐层取。文档给的示例是这样的形状:为一个带有嵌套 metadata 的类型写模板时,image_url 可以直接引用对象自己的字段,description 则写成指向 metadata 内部字段的路径。

Display 定义(示意)
  name        -> "{name}(等级 {level})"
  image_url   -> "{image_url}"
  description -> "{metadata.description}"

这正是它和”把字段塞进结构体”路线的实质差别:字段名不需要统一,静态文案不需要每枚都存一份,显示还能随字段变化自动更新。

谁有权改,改了怎么发现

Display 由类型的发布者用 Publisher 对象创建和修改,其他人改不了。版本字段在每次更新调用时递增,客户端因此可以判断自己读到的是不是新的显示定义。文档同时说明,当前 Object Display V2 是标准版本,从 Move 代码里管理 Display 要用 sui::display_registry 相关接口;V1 属于遗留版本,已有的 V1 Display 已在一次系统快照迁移中迁到 V2,需要管理这类被迁移过来的 Display 时,要按自己的节奏去申领对应的 DisplayCap。

没有 Display 会怎样

文档的答案很直接:如果某个类型没有定义 Display,客户端会退回到渲染原始对象数据,也就是把结构体字段和值直接列出来。对象在链上依然完全可用,转账、组合都不受影响,只是钱包与浏览器无法显示人类可读的名字、图片和描述。对收藏者来说,这意味着”显示简陋”是缺配置,不是资产损坏;反过来,“显示漂亮”也只是发布者写好的模板,不代表额外的链上权利。

上手核对三件事

1. 用全节点或资源管理器查询该类型的 Display 定义是否存在、version 是多少
2. 看模板引用了哪些字段,判断页面显示的哪些内容来自对象本身
3. 需要改文案时确认自己是否持有 Publisher 或迁移后的 DisplayCap

模板能改变展示,不能改变归属与权限边界,这一点在比较两个市场页面的价差之前尤其值得记住。

版本字段的作用也常被忽略。Display 里的 version 只能由发布者手动推进,客户端每次渲染前都可以读到它,因此“页面显示的是第几版显示定义”是一个可以直接核对的事实。对做二创、镜像站点或聚合展示的人来说,把 version 与内容一起缓存,能避免拿到旧模板去渲染新字段;对收藏者来说,如果某次发布把名字模板改坏了,链上的版本号也能成为追溯依据,而不是只能靠截图举证。

另外,标准对字段是开放式的:文档明确说没有限制你能设置哪些键,建议的那组属性只是引导,出现新需求时生态可以自己加字段。这一点在比较两条链的展示能力时很容易被误读——Sui 这边不是靠一份封闭的字段白名单约束所有人,而是靠类型与发布者权限保证“这份模板出自谁手”。因此在钱包里没有正确显示的资产,通常意味着发布方没有配置模板,或者模板引用了对象里不存在的字段路径,而不是链本身缺少元数据能力。至于显示是否完整是否影响价值,那是各自判断。

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