Move.

帖子

分享您的知识。

Dominikus .
Jan 30, 2025
专家问答

How to keep NFT metadata stable without leaking info?

I'm trying to develop an NFT contract and wish to make sure all NFT metadata remains stable. I'm concerned that if I include a source metadata link in the contract, it could be visible to users who might exploit it. How can I prevent this from happening? Additionally, I'd like to know if I can add optional fields to an NFT object as I do in TypeScript. Here's my idea:

type NFT = {
  name: string;
  description: string;
  url: string;
  attributes: {field: string; value: string}[];
};

I've never seen this approach before and I feel like I'm missing something. Can someone guide me on the best practices here?

  • Move CLI
  • Smart Contract
4
3
分享
评论
.

答案

3
yhant3.
Feb 5 2025, 11:01

关于添加类似于 TypeScript 的可选字段,你确实可以自定义 NFT 元数据. 流行的 NFT 集合使用了一种 “标准” 元数据格式,但你可以偏离它. VecMap如您所述,使用属性,并探索使用Display参数自定义显示的元数据的选项. 要了解更多信息,请浏览以下资源:

-NFT 标准和特许权使用费 -带场的 SUI 视觉对象 -NFT 显示参数

4
最佳答案
评论
.
Michelle .
Feb 5 2025, 11:01

听起来你最担心的是有人可能会推断出未来的 NFT 元数据,因为它们是按顺序铸造的. 为了降低这种风险,可以考虑将元数据序列改组到区块链之外. 这样,尽管它们可能在区块链上按顺序显示,但元数据是不可预测的. 或者,分配一个随机 ID,并确保铸币函数检查此 ID 是否尚未铸造.

2
评论
.
BigDev.
Aug 15 2025, 16:40

是的,在 Sui Move 中,你可以添加可选的元数据字段,类似于 TypeScript 中的可选字段. 虽然许多 NFT 集合遵循通用的元数据格式,但你可以自由地对其进行自定义.

要实现这一点: • 使用 VecMap(或矢量< (key, value) >)存储灵活的属性数据. • 对于可选字段,仅包含您需要的字段 — Sui 不强制执行严格的架构. • 要控制元数据在钱包或资源管理器中的显示方式,请使用显示对象. 它允许您定义名称、描述、image_url 或任何自定义密钥等字段的显示方式. • 要完全自定义格式,请创建自己的元数据结构并将其附加到 NFT 或通过动态字段进行管理.

这种方法使您可以完全控制 NFT 的元数据,同时保持其干净、灵活和用户界面友好

1
评论
.

你知道答案吗?

请登录并分享。

Move is an executable bytecode language used to implement custom transactions and smart contracts.

270帖子616答案
Sui.X.Peera.

赚取你的 1000 Sui 份额

获取声誉积分,并因帮助 Sui 社区成长而获得奖励。