Sui.

Publicación

Comparte tu conocimiento.

0xduckmove.
Jul 08, 2025
Discusión

¿Hay alguna forma de fusionar monedas y dividirlas en la misma transacción utilizando el sui sdk?

Podemos usar la intención de CoinWithBalance La intención de CoinWithBalance gestiona todas las operaciones, incluida la división y la fusión de monedas. Esto significa que no siempre es necesario mapear manualmente el ID del objeto, fusionarlo y luego dividirlo: CoinWithBalance se encarga de todo automáticamente.

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

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



  • Sui
2
2
Cuota
Comentarios
.

Respuestas

2
MoonBags.
Jul 21 2025, 08:21

uso de CoinWithBalance El propósito de CoinWithBalance gestiona todas las operaciones, incluida la división y fusión de monedas. Esto significa que no siempre es necesario mapear manualmente el ID del objeto, fusionarlo y luego dividirlo: CoinWithBalance se encarga de todo automáticamente.

1
Mejor Respuesta
Comentarios
.
24p30p.
24p30p2046
Jul 9 2025, 05:39

Sí, puedesfusionar y dividir monedas en la misma transaccióncon el SDK de Sui creando uno TransactionBlockque agrupe ambas acciones por lotes antes de enviarlas. Esto es útil cuando quieres consolidar tus fichas y luego extraer una cantidad específica, todo en una sola operación atómica. Sui te permite encadenar múltiples acciones en un solo bloque de transacciones y, siempre que gestiones las referencias correctamente, funciona a la perfección.

@mysten/sui.jsEste es un ejemplo deTypeScriptcon el 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);

En este código:

  • mergeCoins``coin2se combina coin1y devuelve una referencia a la moneda fusionada.
  • splitCoinsusa esa moneda combinada para extraer exactamente 1 000 000 MIST (es decir, 0,001 SUI).
  • Luego puedes usar el resultado de la división (p. ej.splitCoin) para transferir o financiar otra operación.

Este método es eficiente porque toda la gestión de las monedas se realiza en una sola transacción, lo que reduce el consumo de gas y simplifica la lógica.

Para obtener más información y ver ejemplos adicionales, consulta la documentación del SDK de Sui: https://docs.sui.io/build/sdk.

1
Comentarios
.

Sabes la respuesta?

Inicie sesión y compártalo.

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

613Publicaciones1608Respuestas
Sui.X.Peera.

Gana tu parte de 1000 Sui

Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.

Campaña de RecompensasJulio