Publicación
Comparte tu conocimiento.
Error de verificación de tipos al usar una estructura personalizada como parámetro de tipo en coin: :Coin de Sui Move?
Pregunta:
Me encuentro con un error de verificación de tipo en mi código Sui Move que no entiendo. Esta es una versión simplificada de mi código:
module my_module::mymodule {
use sui::coin;
use sui::wallets;
struct MyCoin has drop {}
public fun create_coin(): coin::Coin<MyCoin> {
coin::mint(1000)
}
}
Cuando intento compilar, aparece el siguiente error:
Invalid type parameter instantiation.
Expected type 'phantom type T' but found 'MyCoin'
¿Qué estoy haciendo mal? ¿Por qué no puedo usarlo MyCoin
como parámetro de tipo para coin::Coin
este problema de verificación de tipos y cómo puedo solucionarlo?
- Sui
- Architecture
Respuestas
4Se produce este error de verificación de tipo porque coin: :Coin
El módulo de monedas de Sui está diseñado para ser genérico, donde el tipo de moneda es solo un marcador, como una etiqueta para distinguir una moneda de otra. Es por eso que espera que la tipografía no contenga datos reales y que solo exista para fines de escritura.
Estás intentando usar coin: :mint (1000) sin registrar correctamente tu tipo de moneda personalizado MyCoin. En Sui Move, antes de poder acuñar una moneda personalizada, necesitas definirla y registrarla mediante la función create_currency.
Recibes el error porque sui: :coin: :Coin
module my_module::mymodule {
use sui::coin;
struct MyCoin has drop, store {} // add `store` because it's often required
phantom struct PhantomMyCoin has drop, store {}
public fun create_coin(): coin::Coin<PhantomMyCoin> {
coin::mint<PhantomMyCoin>(1000)
}
}
Estás intentando usar tu MyCoin personalizado como argumento de tipo para coin: :Coin
Invalid type parameter instantiation. Expected type 'phantom type T' but found 'MyCoin'
Lo que esto significa en términos sencillos es que: coin: :Coin
Entonces, a menos que tu tipo se declare así:
phantom struct MyCoin has store, drop {}
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.

- ... SUIBigSneh+1396
- ... SUISuiLover+1333
- ... SUI0xduckmove+1207
- ... SUIThorfin+1202
- ... SUIOwen+970
- ... SUIharry phan+847
- ... SUItheking+742
- ¿Por qué BCS requiere un orden de campo exacto para la deserialización cuando las estructuras Move tienen campos con nombre?53
- «Errores de verificación de múltiples fuentes» en las publicaciones del módulo Sui Move: resolución automática de errores43
- Fallo en la transacción Sui: objetos reservados para otra transacción25
- ¿Cómo interactúan las restricciones de capacidad con los campos dinámicos en colecciones heterogéneas?05