Sui.

Допис

Діліться своїми знаннями.

0xduckmove.
Jul 08, 2025
Обговорення

Чи є спосіб об'єднати монети та розділити їх в одній транзакції за допомогою sui sdk?

Ми можемо використовувати намір CoinWithBalance. Інтент CoinWithBalance обробляє всі операції, включаючи розщеплення та об'єднання монет. Це означає, що вам не завжди потрібно вручну відображати ідентифікатор об'єкта, об'єднувати, а потім розділити - CoinWithBalance піклується про все автоматично.

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

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



  • Sui
2
2
Поділитися
Коментарі
.

Відповіді

2
MoonBags.
Jul 21 2025, 08:21

використовувати намір CoinWithBalance Намір CoinWithBalance обробляє всі операції, включаючи розділення та об'єднання монет. Це означає, що вам не завжди потрібно вручну відображати ідентифікатор об'єкта, об'єднувати, а потім розділити - CoinWithBalance піклується про все автоматично.

1
Найкраща відповідь
Коментарі
.
24p30p.
24p30p2046
Jul 9 2025, 05:39

Так, ви можетеоб'єднати та розділити монети в одній транзаціїза допомогою Sui SDK, створивши пакет, який об'єднує TransactionBlockобидві дії перед надсиланням. Це корисно, коли ви хочете консолідувати свої токени, а потім витягти певну суму в одній атомній операції. Sui дозволяє ланцюжкувати кілька дій в одному блоці транзакцій, і якщо ви правильно керуєте посиланнями, це працює безперебійно.

@mysten/sui.jsОсь прикладTypeScriptз використанням 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);

У цьому коді:

  • mergeCoinsоб'є coin2``coin1днується в і повертає посилання на об'єднану монету.
  • splitCoinsвикористовує цю об'єднану монету для вилучення рівно 1 000 000 MIST (тобто 0,001 SUI).
  • Потім ви можете використовувати результат спліту (наприклад,splitCoin) для переказу або фінансування іншої операції.

Цей метод ефективний, оскільки все управління монетами відбувається в одній транзакції, зменшуючи споживання газу та спрощуючи логіку.

Щоб прочитати більше та переглянути додаткові приклади, перегляньте документи Sui SDK: https://docs.sui.io/build/sdk.

1
Коментарі
.

Ви знаєте відповідь?

Будь ласка, увійдіть та поділіться нею.

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

613Пости1608Відповіді
Sui.X.Peera.

Зароби свою частку з 1000 Sui

Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.

Кампанія винагородЛипень