Publicación
Comparte tu conocimiento.
+15
¿Cómo interactúan las restricciones de capacidad con los campos dinámicos en colecciones heterogéneas?
Estoy creando un mercado que necesita gestionar varios tipos de activos con diferentes requisitos de capacidad, y me he planteado algunas preguntas fundamentales sobre el sistema de tipos de Move. Quiero almacenar diferentes tipos de activos en la misma colección, pero tienen diferentes capacidades:
- NFT normales:
key + store
(transferibles) - Tokens Soulbound:
key
únicamente (no transferibles) - Activos personalizados con restricciones de transferencia
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? */ }
Preguntas clave:
- Requisitos de habilidad: Cuando se usa
dynamic_field::add<K, V>()
, ¿V
siempre se necesitastore
en tiempo de compilación? ¿Pueden los tipos de contenedores solucionar esto? - Almacenamiento heterogéneo: ¿puede una sola bolsa almacenar objetos con diferentes conjuntos de habilidades (
key + store + copy
contrakey + store
) y manipularlos de forma diferente durante el tiempo de ejecución? - Seguridad de tipos: dado que los campos dinámicos eliminan los tipos, ¿cómo puedo mantener la seguridad de los tipos al recuperar los valores? ¿Cuál es el patrón para almacenar los metadatos de tipo?
- Patrón de testigos: ¿Cómo funcionan las restricciones de habilidad con los tipos de fantasmas? ¿Puedo
Asset<Type1>``Asset<Type2>
guardarlos en la misma colección y extraer la información de tipos más adelante?
Construir un sistema en el que los NFT, los tokens de soul bound y los activos restringidos requieran funciones de mercado, pero con una semántica de transferencia diferente.
He probado los tipos de contenedores, varias colecciones por conjunto de habilidades y el almacenamiento de metadatos de tipos separados. Cada uno tiene sus ventajas y desventajas entre la seguridad del tipo, los costos de la gasolina y la complejidad.
- Sui
- Architecture
Sabes la respuesta?
Inicie sesión y compártalo.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Gana tu parte de 1000 Sui
Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.

- Owen... SUI+137
1
- MoonBags... SUI+60
2
- 0xduckmove... SUI+55
3
- ... SUIdudley_smith+31
- ... SUI
- ... SUIderiss+15
- ... SUIPluto Dev👽+10
- ... SUIDominikus +10
- ... SUIandreweth.+10
- ... SUIfarshad+10
- ¿Por qué BCS requiere un orden de campo exacto para la deserialización cuando las estructuras Move tienen campos con nombre?52
- «Errores de verificación de múltiples fuentes» en las publicaciones del módulo Sui Move: resolución automática de errores41
- ¿Cómo interactúan las restricciones de capacidad con los campos dinámicos en colecciones heterogéneas?00