Beitrag
Teile dein Wissen.
Gibt es eine Möglichkeit, Münzen zusammenzuführen und sie in derselben Transaktion mit dem Sui SDK aufzuteilen?
Wir können CoinWithBalance Intent verwenden Die CoinWithBalance Intent wickelt alle Operationen ab, einschließlich des Teilens und Zusammenführens von Münzen. Das bedeutet, dass du die Objekt-ID nicht immer manuell zuordnen, zusammenführen und dann teilen musst — CoinWithBalance kümmert sich automatisch um alles.
import { coinWithBalance } from "@mysten/sui/transactions";
const coin = coinWithBalance({
balance: 1000000000,
type: "0x9f992cc2430a1f442ca7a5ca7638169f5d5c00e0ebc3977a65e9ac6e497fe5ef::wal::WAL",
});
- Sui
Antworten
2CoinWithBalance Intent verwenden Die CoinWithBalance Intent wickelt alle Operationen ab, einschließlich des Teilens und Zusammenführens von Coins. Das bedeutet, dass du die Objekt-ID nicht immer manuell zuordnen, zusammenführen und dann teilen musst — CoinWithBalance kümmert sich automatisch um alles.
Ja, Sie können mithilfe des Sui SDK Münzen in derselben Transaktion zusammenführen und aufteilen**, indem Sie ein Paket erstellen, das beide Aktionen vor dem TransactionBlock
Absenden stapelt. Das ist hilfreich, wenn du deine Tokens konsolidieren und dann einen bestimmten Betrag extrahieren möchtest, und das alles in einer einzigen atomaren Operation. Sui ermöglicht es Ihnen, mehrere Aktionen in einem einzigen Transaktionsblock zu verketten, und solange Sie die Referenzen ordnungsgemäß verwalten, funktioniert es reibungslos.
@mysten/sui.js
Hier ist einTypeScript-Beispiel, das das SDK verwendet:
import { TransactionBlock } from '@mysten/sui.js/transactions';
import { SuiClient } from '@mysten/sui.js/client';
// Assume you already have your SuiClient and signer configured
const client = new SuiClient({ url: 'https://fullnode.mainnet.sui.io' });
const txb = new TransactionBlock();
// Your coin object IDs
const coin1 = '0xabc...';
const coin2 = '0xdef...';
// Step 1: Merge two coins
const merged = txb.mergeCoins(
txb.object(coin1), // target coin
[txb.object(coin2)] // coins to merge into target
);
// Step 2: Split the merged coin into a specific amount
const [splitCoin] = txb.splitCoins(merged, [txb.pure(1000000)]); // amount in MIST (1 SUI = 1e9 MIST)
// (Optional) You can now use `splitCoin` for a transfer or any other action
// Send the transaction
const result = await client.signAndExecuteTransactionBlock({
transactionBlock: txb,
signer: yourSigner,
options: { showEffects: true },
});
console.log('Tx result:', result);
In diesem Code:
mergeCoins``coin2
wird zu dercoin1
zusammengeführten Münze kombiniert und gibt eine Referenz auf diese zurück.splitCoins
verwendet diese zusammengeführte Münze, um genau 1.000.000 MIST (d. h. 0,001 SUI) zu extrahieren.- Sie können dann das Ergebnis der Aufteilung verwenden (z. B.
splitCoin
), um eine andere Operation zu übertragen oder zu finanzieren.
Diese Methode ist effizient, da die gesamte Verwaltung der Münzen in einer einzigen Transaktion erfolgt, wodurch der Gasverbrauch reduziert und die Logik vereinfacht wird.
Weitere Informationen und weitere Beispiele finden Sie in der Sui SDK-Dokumentation: https://docs.sui.io/build/sdk.
Weißt du die Antwort?
Bitte melde dich an und teile sie.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Verdiene deinen Anteil an 1000 Sui
Sammle Reputationspunkte und erhalte Belohnungen für deine Hilfe beim Wachstum der Sui-Community.
- Warum benötigt BCS eine genaue Feldreihenfolge für die Deserialisierung, wenn Move-Strukturen benannte Felder haben?53
- Fehler bei der Überprüfung mehrerer Quellen“ in den Veröffentlichungen des Sui Move-Moduls — Automatisierte Fehlerbehebung43
- Sui-Transaktion schlägt fehl: Objekte sind für eine andere Transaktion reserviert25
- Wie interagieren Fähigkeitsbeschränkungen mit dynamischen Feldern in heterogenen Sammlungen?05