Move.

Beitrag

Teile dein Wissen.

elfDani.
Apr 11, 2025
Experten Q&A

Können Module nahtlos mehrere Coins auf der Kette generieren?

Ich arbeite an einem Modul für Prognosemärkte und benötige es, um während einer Factory-Klasse auf erlaubnisfreie und überprüfbare Weise Coins in der Kette zu generieren. Derzeit gibt es für Module aufgrund von One Time Witness Einschränkungen, wie z. B. nur eine Münze pro Modul. Das bedeutet, dass ich einen entsprechenden Münzstandard erstellen musste, den die Wallets der Nutzer nicht als Münze erkennen. Können wir das im nächsten Update lösen?

  • Move CLI
  • Move Module
0
3
Teilen
Kommentare
.

Antworten

3
Caplec.
Apr 12 2025, 08:27

Während Module derzeit Einschränkungen haben, wie z. B. die Beschränkung, aufgrund von One Time Witness nur eine Münze pro Modul zu veröffentlichen, sollten Sie erwägen, einen einzigen bereitgestellten Vertrag wie WASM zu verwenden, der die Erstellung mehrerer Münztypen ermöglicht, wie in diesem Handbuch beschrieben: https://docs.sui.io/guides/developer/nft/asset-tokenization.

0
Kommentare
.
24p30p.
Jul 9 2025, 07:01

Wenn Sie ein Marktprognosemodul erstellen und mithilfe eines Fabrikmusters neue Coins auf der Kette generieren möchten, stoßen Sie im aktuellen Move-Coin-Framework auf eine bekannte Einschränkung — insbesondere auf dieOne Time Witness (OTW)-Regel, die jedes Modul darauf beschränkt, nur einen Münztyp zu definieren. Aus diesem Grund sind Sie beim Versuch, mehrere Coins dynamisch zu erstellen, gezwungen, eine benutzerdefinierte Struktur zu verwenden, die Wallets nicht als native Coins erkennen, was die Benutzerinteraktionen weniger reibungslos macht.

Um dies zu umgehen, kannst du eine benutzerdefinierte, münzähnliche Struktur erstellen, die das Verhalten der nativen Struktur nachahmt, Coin<T>aber von der Sui-Wallet-Oberfläche nicht als solche behandelt wird. Leider bleibt diese Einschränkung bestehen, bis Sui sein Coin-Modell aktualisiert, umUnterstützung mehrerer Münzen pro Modulzu ermöglichen, oder ein flexibleres Factory-System mit korrekter Wallet-Unterstützung einführt. Du kannst aber trotzdem sicherstellen, dass das System verifizierbar und erlaubnisfrei bleibt, indem du Ereignisse für die Münzgenerierung ausgibst und Metadaten in einer Registry speicherst, die Wallets oder Indexer lesen können.

In der Zwischenzeit findest du hier eine einfache konzeptionelle Struktur für einen werksseitigen Münzgenerator, der das native Verhalten von Münzen nachahmt:

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)
}

Sui könnte in Zukunft eine flexiblere oder native Lösung anbieten, möglicherweise mitMulti-Münzfabrikenoder einer aktualisierten Wallet-Erkennungslogik für werkseitig generierte Münzen. Bis dahin kannst du die Entwicklungen verfolgen und Verbesserungen in den offiziellen Repo- oder Community-Diskussionen vorschlagen.

https://github.com/MystenLabs/sui/discussions

https://docs.sui.io/devnet/build/coin

Dies ist ein wachsender Bereich im Ökosystem, sodass Ihr Feedback zukünftige Updates direkt beeinflussen könnte.

0
Kommentare
.
BigDev.
Aug 15 2025, 16:51

Im Moment beschränkt sich die OTW-Regel (One-Time Witness) in Suis Move-Sprache darauf, nur einen Münztyp pro Modul zu erstellen, was für so etwas wie einen Prognosemarkt, auf dem Sie vielleicht möchten, dass eine Fabrikklasse mehrere Münztypen auf der Kette auf erlaubnisfreie und überprüfbare Weise produziert, problematisch sein kann. Diese Einschränkung ergibt sich aus der Art und Weise, wie die Funktion coin: :create_currency die OTW verwendet, um eine eindeutige TreasuryCap für jeden Münztyp zu gewährleisten, den Wallets als Standard-Coins erkennen, aber das bedeutet, dass du nicht einfach mehrere Coins in einem Modul hochdrehen kannst, ohne Workarounds wie das Erstellen separater Module oder benutzerdefinierter Typen, die Wallets möglicherweise nicht als richtige Coins sehen. Für Ihren Prognosemarkt könnten Sie ein Factory-Muster ausprobieren, bei dem ein einzelnes Modul mehrere münzähnliche Objekte verwaltet, indem es sie in eine benutzerdefinierte Struktur einschließt. Dies führt jedoch häufig zu ungewöhnlichen Tokens, die nicht gut zu Wallets passen, wie Sie bemerkt haben. Im nächsten Sui-Update gibt es keine bestätigte Lösung, um das OTW-Limit anzuheben oder die nahtlose Erstellung mehrerer Coins in einem einzigen Modul zu ermöglichen, da sich die Roadmap eher auf Dinge wie ZK-Logins und Speicheroptimierungen konzentriert. Ein praktischer Schachzug besteht darin, eine Factory einzurichten, die dynamisch für jeden Münztyp neue Module erzeugt. Dabei nutzt man die Funktion coin: :create_currency, um sie Wallet-kompatibel zu halten, und ihre Erstellung anhand von Ereignissen, die auf der Kette ausgegeben werden, zu verifizieren. Dieser Ansatz bleibt erlaubnislos, da jeder die Factory aufrufen kann. Er ist über das Eventsystem oder den Explorer von Sui verifizierbar, obwohl es etwas umständlich ist, zusätzliche Module zu veröffentlichen.

0
Kommentare
.

Weißt du die Antwort?

Bitte melde dich an und teile sie.

Move is an executable bytecode language used to implement custom transactions and smart contracts.

152Beiträge259Antworten
Sui.X.Peera.

Verdiene deinen Anteil an 1000 Sui

Sammle Reputationspunkte und erhalte Belohnungen für deine Hilfe beim Wachstum der Sui-Community.

BelohnungskampagneAugust