Beitrag
Teile dein Wissen.
Bei einem DEX-Swap-Vorgang eine Gebühr von einer Münze erheben
Ich habe seit einer Woche Probleme damit, einen Vertrag umzusetzen, bei dem eine Gebühr für eine Münze erhoben wird, die bei einem DEX-Swap verwendet wird. Es scheint, dass ich den SUI-Betrag der Münze nicht anhand der Ausgabe ablesen kann, da er bei der Transaktion verbraucht wurde. Wie kann ich eine Gebühr atomar erheben, wenn Funktionen wie swap_a2b
„keine Münze“ zurückgeben?
- Move CLI
- Move Bug
Antworten
2Wenn Sie die Münze für eine Transaktion verbrauchen, kann sie nicht erneut verwendet werden. Wenn Sie es für eine Gaszahlung verwenden, ist es eine einmalige Verwendung. Wenn es um DEX-Swaps geht: Sobald Sie eine Münze wie OutCoinA in einem Funktionstausch weitergeben, wird sie verbraucht, und nachfolgende Aufrufe erkennen sie nicht, sofern sie nicht explizit zurückgegeben werden. Das Hauptproblem könnte sein, dass swap_a2b nichts zurückgibt, was bedeutet, dass Sie nach einem Swap-Vorgang nicht direkt eine Gebühr erheben können. Eine Problemumgehung könnte darin bestehen, die zu tauschende Münze in Besitz zu nehmen und nach Ausführung des Swaps die Gebühr abzuziehen, bevor das Ergebnis an den Benutzer zurückgegeben wird.
Das Einbinden der Swap-Funktionalität in einen intelligenten Vertrag kann dieses Problem lösen. Indem Sie den Swap im Rahmen des Vertrags ausführen, können Sie das Eigentum und den Vertrieb so verwalten, dass die Gebühren atomar abgewickelt werden. Der Vertrag würde den Swap ausführen, die Gebühren abziehen und dann den Restbetrag an den Nutzer zurückzahlen. Hier ist ein Ansatz im PTB-Kontext: 1. teilen Sie die Münze in ein separates CoinIn auf, 2. übergeben Sie diese Münze an den Smart Contract für den Tausch, die Gebührenabwicklung und die Rückkehr zum Benutzer. Du musst das Coin-Objekt nicht unbedingt vor Schritt 2 explizit übertragen, wenn der Smart Contract CoinIn nach Wert berechnet.
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.