Sui.

Beitrag

Teile dein Wissen.

0xduckmove.
Jul 08, 2025
Diskussion

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
2
2
Teilen
Kommentare
.

Antworten

2
MoonBags.
Jul 21 2025, 08:21

CoinWithBalance 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.

1
Beste Antwort
Kommentare
.
24p30p.
24p30p2046
Jul 9 2025, 05:39

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 TransactionBlockAbsenden 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.jsHier 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``coin2wird zu der coin1zusammengeführten Münze kombiniert und gibt eine Referenz auf diese zurück.
  • splitCoinsverwendet 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.

1
Kommentare
.

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.

613Beiträge1608Antworten
Sui.X.Peera.

Verdiene deinen Anteil an 1000 Sui

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

BelohnungskampagneJuli