Publicación
Comparte tu conocimiento.
¿Pueden los módulos generar múltiples monedas en cadena sin problemas?
Estoy trabajando en un módulo para mercados de predicción y lo necesito para generar monedas en cadena a través de una clase de fábrica de forma verificable y sin permiso. Actualmente, los módulos tienen limitaciones, como una moneda por módulo, debido a One Time Witness, lo que significa que tuve que crear un estándar de monedas equivalente que las carteras de los usuarios no reconocieran como moneda. ¿Podremos resolver este problema en la próxima actualización?
- Move CLI
- Move Module
Respuestas
3Si bien los módulos actualmente tienen limitaciones, como la restricción de publicar solo una moneda por módulo debido a One Time Witness, considere usar un único contrato implementado como WASM, que permite la creación de varios tipos de monedas, tal como se describe en esta guía: https://docs.sui.io/guides/developer/nft/asset-tokenization.
Si estás creando un módulo de predicción del mercado y quieres generar nuevas monedas en cadena siguiendo un patrón de fábrica, te estás encontrando con una limitación conocida en el marco actual de Move coin, específicamente, la reglaOne Time Witness (OTW), que restringe cada módulo a definir un solo tipo de moneda. Por eso, cuando intentas crear varias monedas de forma dinámica, te ves obligado a usar una estructura personalizada que las carteras no reconocen como monedas nativas, lo que hace que las interacciones de los usuarios sean menos fluidas.
Para solucionar este problema, puedes crear una estructura personalizada similar a la de una moneda que imite el comportamiento de la moneda nativa, Coin<T>
pero la interfaz de monedero Sui no la trate como tal. Lamentablemente, esta limitación persistirá hasta que Sui actualice su modelo de monedas para permitir el uso de múltiples monedas por módulo o introduzca un sistema de fábrica más flexible con la compatibilidad adecuada con monederos. Sin embargo, puedes asegurarte de que el sistema siga siendo verificable y sin permisos emitiendo eventos para la creación de monedas y almacenando los metadatos en un registro que puedan leer los monederos o los indexadores.
Mientras tanto, he aquí una estructura conceptual sencilla para un generador de monedas fabricado en fábrica que imita el comportamiento de las monedas nativas:
public entry fun create_prediction_token(
admin: &signer,
name: vector<u8>,
symbol: vector<u8>,
decimals: u8
): (CustomCoin, CustomCoinMetadata) {
let token = CustomCoin { id: object::new(admin), value: 0 };
let metadata = CustomCoinMetadata {
name,
symbol,
decimals,
creator: signer::address_of(admin)
};
// Emit an event or store in registry for traceability
event::emit<NewTokenCreated>(&metadata);
(token, metadata)
}
Es posible que Sui ofrezca una solución más flexible o nativa en el futuro, posiblemente confábricas de múltiples monedaso una lógica de reconocimiento de monederos actualizada para las monedas generadas en fábrica. Hasta entonces, puedes seguir los avances y proponer mejoras en el repositorio oficial o en los debates de la comunidad.
https://github.com/MystenLabs/sui/discussions
https://docs.sui.io/devnet/build/coin
Se trata de un área en crecimiento en el ecosistema, por lo que tus comentarios podrían influir directamente en futuras actualizaciones.
En este momento, la regla del testigo único (OTW) del lenguaje Move de Sui te limita a crear un solo tipo de moneda por módulo, lo que puede resultar complicado para algo como un mercado de predicción en el que querrías que una clase de fábrica produjera varios tipos de monedas en cadena de forma verificable y sin permisos. Esta restricción se debe a la forma en que la función coin: :create_currency usa la OTW para garantizar un TreasuryCap único para cada tipo de moneda, que las carteras reconocen como monedas estándar, pero esto significa que no puedes hacer girar fácilmente varias monedas en un módulo sin soluciones alternativas, como crear módulos separados o tipos personalizados que las carteras podrían no ver como monedas adecuadas. Para tu mercado de predicción, podrías probar un patrón de fábrica en el que un solo módulo gestione varios objetos similares a monedas envolviéndolos en una estructura personalizada, pero esto a menudo conduce a fichas no estándar que no funcionan bien con las carteras, como habrás notado. No hay ninguna solución confirmada en la próxima actualización de Sui para eliminar el límite de la OTW o permitir la creación fluida de múltiples monedas en un solo módulo, ya que la hoja de ruta se centra más en cosas como la optimización del almacenamiento y el inicio de sesión en ZK. Una medida práctica consiste en instalar una fábrica que genere nuevos módulos de forma dinámica para cada tipo de moneda, usar la función coin: :create_currency para mantenerlos compatibles con el monedero y verificar su creación mediante eventos que se emitan en cadena. Este enfoque no tiene permisos, ya que cualquiera puede llamar a la fábrica y se puede verificar mediante el sistema de eventos o el explorador de Sui, aunque es un poco torpe con la publicación de módulos adicionales.
Sabes la respuesta?
Inicie sesión y compártalo.
Move is an executable bytecode language used to implement custom transactions and smart contracts.
Gana tu parte de 1000 Sui
Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.
