Bài viết
Chia sẻ kiến thức của bạn.
Có cách nào để hợp nhất tiền xu và chia chúng trong cùng một giao dịch bằng sui sdk không?
Chúng ta có thể sử dụng ý định CoinWithBalance Mục đích CoinWithBalance xử lý tất cả các hoạt động, bao gồm cả việc tách và hợp nhất tiền xu. Điều này có nghĩa là bạn không phải lúc nào cũng cần phải lập bản đồ ID đối tượng theo cách thủ công, hợp nhất và sau đó tách - CoinWithBalance sẽ tự động xử lý mọi thứ.
import { coinWithBalance } from "@mysten/sui/transactions";
const coin = coinWithBalance({
balance: 1000000000,
type: "0x9f992cc2430a1f442ca7a5ca7638169f5d5c00e0ebc3977a65e9ac6e497fe5ef::wal::WAL",
});
- Sui
Câu trả lời
2sử dụng ý định CoinWithBalance Mục đích CoinWithBalance xử lý tất cả các hoạt động, bao gồm cả việc tách và hợp nhất tiền xu. Điều này có nghĩa là bạn không phải lúc nào cũng cần phải lập bản đồ ID đối tượng theo cách thủ công, hợp nhất và sau đó tách - CoinWithBalance sẽ tự động xử lý mọi thứ.
Có, bạn có thể** hợp nhất và chia tiền trong cùng một giao dịch**bằng cách sử dụng Sui SDK bằng cách xây dựng một TransactionBlock
lô hàng cả hai hành động trước khi gửi. Điều này rất hữu ích khi bạn muốn hợp nhất mã thông báo của mình và sau đó trích xuất một số lượng cụ thể, tất cả trong một hoạt động nguyên tử. Sui cho phép bạn chuỗi nhiều hành động trong một khối giao dịch duy nhất và miễn là bạn quản lý các tài liệu tham khảo đúng cách, nó hoạt động liền mạch.
@mysten/sui.js
Dưới đây là ví dụ vềTypeScriptsử dụng 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);
Trong mã này:
mergeCoins
kết hợpcoin2
thànhcoin1
và trả về tham chiếu đến đồng tiền đã hợp nhất.splitCoins
sử dụng đồng tiền đã hợp nhất đó để trích xuất chính xác 1.000.000 MIST (tức là 0,001 SUI).- Sau đó, bạn có thể sử dụng kết quả của việc chia tách (ví dụ:
splitCoin
) để chuyển hoặc nạp tiền cho một hoạt động khác.
Phương pháp này hiệu quả vì tất cả việc quản lý tiền xu xảy ra trong một giao dịch duy nhất, giảm sử dụng gas và đơn giản hóa logic.
Để đọc thêm và xem các ví dụ bổ sung, hãy kiểm tra tài liệu Sui SDK: https://docs.sui.io/build/sdk.
Bạn có biết câu trả lời không?
Hãy đăng nhập và chia sẻ nó.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Kiếm phần của bạn từ 1000 Sui
Tích lũy điểm danh tiếng và nhận phần thưởng khi giúp cộng đồng Sui phát triển.
- Tại sao BCS yêu cầu thứ tự trường chính xác để khử chuỗi khi cấu trúc Move có các trường được đặt tên?53
- Nhiều lỗi xác minh nguồn” trong các ấn phẩm về mô-đun Sui Move - Giải quyết lỗi tự động43
- Giao dịch Sui thất bại: Đối tượng được dành riêng cho giao dịch khác25
- Làm thế nào để các ràng buộc về khả năng tương tác với các trường động trong các bộ sưu tập không đồng nhất?05