Sui.

Допис

Діліться своїми знаннями.

Винагорода+15

Xavier.eth.
Jun 17, 2025
Питання та відповіді експертів

Як обмеження здібностей взаємодіють з динамічними полями в гетерогенних колекціях?

Я створюю ринок, який повинен обробляти кілька типів активів з різними вимогами до здібностей, і я зіткнувся з деякими фундаментальними запитаннями щодо системи типів Move. Я хочу зберігати різні типи активів в одній колекції, але вони мають різні здібності:

  • Звичайні NFT: key + store(можна передавати)
  • Токени Soulbound: key тільки (не передаються)
  • Користувальницькі активи з обмеженнями передачі
public struct Marketplace has key {
    id: UID,
    listings: Bag,  // Want to store different asset types here
}

// This works for transferable assets
public fun list_transferable<T: key + store>(
    marketplace: &mut Marketplace,
    asset: T,
    price: u64
) { /* ... */ }

// But how to handle soulbound assets?
public fun list_soulbound<T: key>(  // No store ability
    marketplace: &mut Marketplace,
    asset_ref: &T,  // Can only take reference
    price: u64
) { /* How do I store metadata about this? */ }

Ключові питання:

  • Вимоги до здібностей: dynamic_field::add<K, V>()При використанні Vзавжди потрібно під store час компіляції? Чи можуть типи обгортки обійти це?
  • Гетерогенне зберігання: Чи може одна сумка зберігати об'єкти з різними наборами здіб key + store + copyностей (vskey + store) та обробляти їх по-різному під час виконання?
  • Безпека типу: Оскільки динамічні поля виконують стирання типу, як я можу підтримувати безпеку типу під час отримання значень? Який шаблон для зберігання метаданих типу?
  • Шаблон свідків: Як працюють обмеження здібностей з фантомними типами? Чи можу я зберігати Asset<Type1>і Asset<Type2>в тій самій колекції та витягувати інформацію про тип пізніше?

Побудова системи, де NFT, токени, пов'язані з душею, та обмежені активи потребують функціональності ринку, але з різною семантикою передачі.

Я спробував типи обгортки, кілька колекцій на набір можливостей, окреме зберігання метаданих типу. Кожен з них має компроміси між безпекою типу, витратами на газ та складністю.

  • Sui
  • Architecture
0
0
Поділитися
Коментарі
.

Ви знаєте відповідь?

Будь ласка, увійдіть та поділіться нею.

Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

325Пости469Відповіді
Sui.X.Peera.

Зароби свою частку з 1000 Sui

Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.

Кампанія винагородЧервень