Допис
Діліться своїми знаннями.
Чи є спосіб об'єднати монети та розділити їх в одній транзакції за допомогою sui sdk?
Ми можемо використовувати намір CoinWithBalance. Інтент CoinWithBalance обробляє всі операції, включаючи розщеплення та об'єднання монет. Це означає, що вам не завжди потрібно вручну відображати ідентифікатор об'єкта, об'єднувати, а потім розділити - CoinWithBalance піклується про все автоматично.
import { coinWithBalance } from "@mysten/sui/transactions";
const coin = coinWithBalance({
balance: 1000000000,
type: "0x9f992cc2430a1f442ca7a5ca7638169f5d5c00e0ebc3977a65e9ac6e497fe5ef::wal::WAL",
});
- Sui
Відповіді
2використовувати намір CoinWithBalance Намір CoinWithBalance обробляє всі операції, включаючи розділення та об'єднання монет. Це означає, що вам не завжди потрібно вручну відображати ідентифікатор об'єкта, об'єднувати, а потім розділити - CoinWithBalance піклується про все автоматично.
Так, ви можетеоб'єднати та розділити монети в одній транзаціїза допомогою 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.
Ви знаєте відповідь?
Будь ласка, увійдіть та поділіться нею.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Зароби свою частку з 1000 Sui
Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.
- Чому BCS вимагає точного порядку полів для десеріалізації, коли структури Move мають названі поля?53
- Помилки перевірки кількох джерел» у публікаціях модуля Sui Move - автоматичне вирішення помилок43
- Невдала операція Sui: об'єкти, зарезервовані для іншої транзакції25
- Як обмеження здібностей взаємодіють з динамічними полями в гетерогенних колекціях?05