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параметра для налаштування показаних метаданих. Щоб дізнатися більше, ознайомтеся з цими ресурсами:

4
Найкраща відповідь
Коментарі
.
Michelle .
Feb 5 2025, 11:01

Схоже, ваша головна турбота полягає в тому, що хтось може вивести майбутні метадані NFT через те, як вони викарбуються послідовно. Щоб зменшити цей ризик, подумайте про переміщення послідовності метаданих поза блокчейном. Таким чином, навіть якщо вони можуть виглядати послідовно на блокчейні, метадані не будуть передбачуваними. Крім того, призначте випадковий ідентифікатор і переконайтеся, що функція карбування перевіряє, чи цей ідентифікатор ще не викарбуваний.

2
Коментарі
.
BigDev.
Aug 15 2025, 16:40

Так, у Sui Move ви можете додати необов'язкові поля метаданих, подібні до необов'язкових полів у TypeScript. Хоча багато колекцій NFT дотримуються загального формату метаданих, ви можете налаштувати його.

Щоб досягти цього: • Використовуйте VecMap (або вектор< (key, value) >) для зберігання даних гнучких атрибутів. • Для необов'язкових полів включайте лише ті, які вам потрібні - Sui не застосовує сувору схему. • Щоб керувати відображенням метаданих у гаманцях або дослідниках, скористайтеся об'єктом Display. Він дозволяє визначити, як повинні відображатися такі поля, як ім'я, опис, 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.