Sui.

Publication

Partagez vos connaissances.

0xduckmove.
Jul 08, 2025
Discussion

Existe-t-il un moyen de fusionner des pièces et de les diviser en une seule transaction à l'aide du sui sdk ?

Nous pouvons utiliser CoinWithBalance intent L'intention CoinWithBalance gère toutes les opérations, y compris le fractionnement et la fusion de pièces. Cela signifie que vous n'avez pas toujours besoin de mapper manuellement l'ID de l'objet, de le fusionner, puis de le scinder : CoinWithBalance s'occupe de tout automatiquement.

import { coinWithBalance } from "@mysten/sui/transactions";

 const coin = coinWithBalance({
      balance: 1000000000,
      type: "0x9f992cc2430a1f442ca7a5ca7638169f5d5c00e0ebc3977a65e9ac6e497fe5ef::wal::WAL",
    });



  • Sui
2
2
Partager
Commentaires
.

Réponses

2
MoonBags.
Jul 21 2025, 08:21

utiliser CoinWithBalance intent L'intention CoinWithBalance gère toutes les opérations, y compris le fractionnement et la fusion de pièces. Cela signifie que vous n'avez pas toujours besoin de mapper manuellement l'ID de l'objet, de le fusionner, puis de le scinder : CoinWithBalance s'occupe de tout automatiquement.

1
Meilleure réponse
Commentaires
.
24p30p.
24p30p2046
Jul 9 2025, 05:39

Oui, vous pouvezfusionner et diviser des pièces dans le cadre d'une même transactionà l'aide du SDK Sui en créant un TransactionBlockqui regroupe les deux actions avant de les soumettre. Ceci est utile lorsque vous souhaitez consolider vos jetons, puis en extraire une quantité spécifique, le tout en une seule opération atomique. Sui vous permet d'enchaîner plusieurs actions dans un seul bloc de transactions, et tant que vous gérez correctement les références, cela fonctionne parfaitement.

@mysten/sui.jsVoici un exempleTypeScriptutilisant le SDK :

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

Dans ce code :

  • mergeCoinscombine coin2``coin1et renvoie une référence à la pièce fusionnée.
  • splitCoinsutilise cette pièce fusionnée pour extraire exactement 1 000 000 MIST (c'est-à-dire 0,001 SUI).
  • Vous pouvez ensuite utiliser le résultat du fractionnement (par exemplesplitCoin) pour transférer ou financer une autre opération.

Cette méthode est efficace car toute la gestion des pièces s'effectue en une seule transaction, ce qui réduit la consommation de gaz et simplifie la logique.

Pour en savoir plus et voir d'autres exemples, consultez la documentation du SDK Sui : https://docs.sui.io/build/sdk.

1
Commentaires
.

Connaissez-vous la réponse ?

Veuillez vous connecter et la partager.

Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

613Publications1608Réponses
Sui.X.Peera.

Gagne ta part de 1000 Sui

Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.

Campagne de RécompensesJuillet