Publicación
Comparte tu conocimiento.
¿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
Respuestas
2uso 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.
Sí, puedesfusionar y dividir monedas en la misma transaccióncon el SDK de Sui creando uno TransactionBlock
que 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.js
Este 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``coin2
se combinacoin1
y devuelve una referencia a la moneda fusionada.splitCoins
usa 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.
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.
Gana tu parte de 1000 Sui
Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.
- ¿Por qué BCS requiere un orden de campo exacto para la deserialización cuando las estructuras Move tienen campos con nombre?53
- «Errores de verificación de múltiples fuentes» en las publicaciones del módulo Sui Move: resolución automática de errores43
- Fallo en la transacción Sui: objetos reservados para otra transacción25
- ¿Cómo interactúan las restricciones de capacidad con los campos dinámicos en colecciones heterogéneas?05