Bài viết
Chia sẻ kiến thức của bạn.
Hướng dẫn giao dịch Sui: Từ thiết lập đến thực hiện và xác minh
Hướng dẫn giao dịch Sui: Từ thiết lập đến thực hiện và xác minh
Nếu bạn tò mò về các chi tiết của việc thực hiện các giao dịch trên blockchain Sui và muốn có một hướng dẫn chuyên sâu, thực tế hướng dẫn bạn từng bước.
Trong bài viết này, chúng ta sẽ khám phá toàn bộ hành trình — từ thiết lập môi trường khách hàng của bạn, kiểm tra các đối tượng ví của bạn, tính phí gas, đến việc ký và thực hiện giao dịch và cuối cùng xác minh chi tiết của nó.
Hãy chia nhỏ từng bước:
Điều gì làm cho Sui trở nên đặc biệt như vậy? 🔥
Sui cung cấp một nền tảng được tối ưu hóa cao cho các ứng dụng phi tập trung (DApps) và hợp đồng thông minh. Thiết kế thanh lịch của nó trong việc quản lý phí gas và logic giao dịch làm cho nó trở thành một sân chơi thú vị cho các nhà phát triển muốn vượt qua ranh giới của công nghệ Web3.
2. Bắt đầu: Thiết lập môi trường và Cấu hình ví ⚙️
2.1. Cấu hình môi trường khách hàng Sui của bạn
Trước khi đi sâu vào các giao dịch, hãy đảm bảo khách hàng Sui của bạn được thiết lập đúng cách. Sui hỗ trợ nhiều mạng (devnet, mainnet, testnet) và bạn có thể kiểm tra mạng nào đang hoạt động bằng lệnh dưới đây:
➜ sui client envs
╭─────────┬─────────────────────────────────────┬────────╮
│ alias │ url │ active │
├─────────┼─────────────────────────────────────┼────────┤
│ devnet │ https://fullnode.devnet.sui.io:443 │ │
│ mainnet │ https://fullnode.mainnet.sui.io:443 │ │
│ testnet │ https://fullnode.testnet.sui.io:443 │ * │
╰─────────┴─────────────────────────────────────┴────────╯
Điều này xác nhận rằng bạn đã được kết nối với testnet. Có được mạng lưới phù hợp là bước đầu tiên hướng tới một giao dịch thành công.
2.2. Kiểm tra ví hoạt động của bạn
Tiếp theo, xác minh địa chỉ ví hoạt động của bạn. Điều này rất quan trọng vì mọi giao dịch đều gắn liền với danh tính ví của bạn:
➜ sui client active-address
0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73
2.3. Truy vấn đối tượng thuộc sở hữu
Sử dụng API Suix_GetOwnEdObjects, bạn có thể lấy thông tin chi tiết về các đối tượng (như tiền xu) bạn sở hữu trên blockchain. Lệnh này giúp bạn kiểm tra số dư tài khoản và tài sản có sẵn cho các giao dịch:
{
"jsonrpc": "2.0",
"id": 1,
"method": "suix_getOwnedObjects",
"params": [
"0x35370841d2e69b495b1e2f944a3087e4242f314e503691a00b054e0ee2a45a73",
{
"filter": {
"MatchAll": [
{
"StructType": "0x2::coin::Coin<0x2::sui::SUI>"
}
]
},
"options": {
"showType": true,
"showOwner": true,
"showPreviousTransaction": true
}
}
]
}
Bước này rất quan trọng để xác minh rằng ví của bạn có các đồng tiền cần thiết (trong trường hợp này là SUI coin) trước khi bạn thực hiện bất kỳ giao dịch nào.
3. Tính toán khí đốt: Lập ngân sách cho chi phí giao dịch 💸
Gas là nhiên liệu cung cấp năng lượng cho các giao dịch blockchain. Điều cần thiết là phải hiểu cả giá xăng và ngân sách gas để tránh thất bại trong giao dịch.
3.1. Lấy giá xăng
Giá gas hiện tại có thể được truy xuất bằng cách sử dụng lệnh gọi API SUIX_getReferenceGasPrice:
{
"jsonrpc": "2.0",
"id": 1,
"method": "suix_getReferenceGasPrice",
"params": []
}
Nếu API trả về “1000", điều đó có nghĩa là mỗi đơn vị khí có giá 1000 MIST. Hãy nhớ rằng, 1 SUI bằng 10 ^ 9 MIST, vì vậy ngay cả những con số nhỏ trong MIST cũng có thể cộng lại khi lập ngân sách.
3.2. Thiết lập ngân sách gas
Ngân sách xăng của bạn là lượng gas tối đa (trong MIST) mà bạn sẵn sàng chi tiêu. Ví dụ của chúng tôi, giả sử ngân sách gas của bạn là 4964000 MIST. Tổng chi phí của một giao dịch thường được tính như sau:
Tổng chi phí = Chi phí tính toán + Chi phí lưu trữ - Hoàn tiền lưu trữ
Ví dụ: • Chi phí tính toán: 1.000.000 MIST • Chi phí lưu trữ: 2,964.000 MIST • Giảm giá lưu trữ: 978.120 MIST
Vì vậy, chi phí ròng trở thành 1.000.000 + 2.964.000 - 978.120 = 2.985.880 MIST.
Thiết lập chính xác ngân sách gas của bạn đảm bảo giao dịch của bạn có đủ tiền để được thực hiện thành công.
4. Xây dựng giao dịch: Một cuộc chạy khô khan cho sự tự tin 🔧
Trước khi gửi giao dịch trực tiếp, tốt nhất bạn nên chạy “chạy khô” để phát hiện bất kỳ vấn đề tiềm ẩn nào. Điều này cho phép bạn xác thực logic giao dịch mà không tốn bất kỳ khí đốt nào.
4.1. Xây dựng giao dịch Dry-Run
Dưới đây là một hàm TypeScript mẫu trình bày cách chuẩn bị và thực hiện một giao dịch chạy khô. Mã này phác thảo cách chia tiền xu và chuẩn bị các hoạt động chuyển nhượng:
export const signSuiDryRunTransaction = async (requestParams: SignDryRequestParams): Promise<string> => {
const { gasPrice, privateKey, coinRefs, network, recipients } = requestParams;
const keypair = Ed25519Keypair.fromSecretKey(privateKey);
const tx = newTransaction();
// Configure gas payment, price, and sender
tx.setGasPayment(coinRefs);
tx.setGasPrice(gasPrice);
tx.setSender(keypair.toSuiAddress());
// Split coins based on each recipient's amount
const coins = tx.splitCoins(tx.gas, recipients.map((transfer) => transfer.amount));
recipients.forEach((transfer, index) => {
tx.transferObjects([coins[index]], transfer.to);
});
// Build and sign the transaction with the client
const client = newSuiClient({ url: getFullnodeUrl(network) });
const bytes = await tx.build({ client });
const { signature } = await keypair.signTransaction(bytes);
await verifyTransactionSignature(bytes, signature, { address: keypair.getPublicKey().toSuiAddress() });
return JSON.stringify([toBase64(bytes), signature]);
};
Bước chạy khô này rất quan trọng để đảm bảo rằng mọi chi tiết đều chính xác trước khi bạn cam kết tiền thật.
5. Ký kết và thực hiện giao dịch: Kết hợp tất cả lại với nhau ✍️
Sau khi chạy nhanh thành công, bước tiếp theo là ký và gửi giao dịch của bạn trên blockchain.
5.1. Ký giao dịch
Dưới đây là một chức năng ví dụ tinh chỉnh ký giao dịch với ngân sách gas được chỉ định:
const signSuiTransaction = async (requestParams: SignRequestParams): Promise<string> => {
const { gasBudget, gasPrice, privateKey, coinRefs, network, recipients } = requestParams;
const keypair = Ed25519Keypair.fromSecretKey(privateKey);
const tx = newTransaction();
// Set up gas parameters, including the gas budget
tx.setGasPayment(coinRefs);
tx.setGasPrice(gasPrice);
tx.setGasBudget(gasBudget);
tx.setSender(keypair.toSuiAddress());
// Split coins for each recipient
const coins = tx.splitCoins(tx.gas, recipients.map((transfer) => transfer.amount));
recipients.forEach((transfer, index) => {
tx.transferObjects([coins[index]], transfer.to);
});
// Build the transaction and sign it
const client = newSuiClient({ url: getFullnodeUrl(network) });
const bytes = await tx.build({ client });
const { signature } = await keypair.signTransaction(bytes);
await verifyTransactionSignature(bytes, signature, { address: keypair.getPublicKey().toSuiAddress() });
return JSON.stringify([toBase64(bytes), signature]);
};
Chức năng này tích hợp tất cả các thông số cần thiết — bao gồm chi tiết gas và người nhận — đảm bảo rằng giao dịch của bạn được ký một cách an toàn và sẵn sàng để thực hiện.
5.2. Thực hiện giao dịch
Sau khi ký, giao dịch được gửi đến blockchain bằng cách sử dụng điểm cuối API SUI_ExecuteTransactionBlock:
curl --location 'https://fullnode.testnet.sui.io:443' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "sui_executeTransactionBlock",
"params": [
"<base64-encoded-transaction>",
["<signature>"],
{
"showInput": true,
"showRawInput": true,
"showEffects": true,
"showEvents": true,
"showObjectChanges": true,
"showBalanceChanges": true
},
"WaitForLocalExecution"
]
}'
Cuộc gọi này trả về phản hồi JSON chi tiết với thông tin như tổng hợp giao dịch, mức tiêu thụ gas, sửa đổi đối tượng và cập nhật số dư.
6. Xác minh giao dịch của bạn: Kiểm tra chÉO MỌI THỨ 🔍
Sau khi thực hiện giao dịch, điều cần thiết là phải xác minh rằng mọi thứ được thực hiện như mong đợi.
6.1. Xác minh trình duyệt
Bạn có thể kiểm tra giao dịch của mình trên trình thám hiểm blockchain như Suivision Testnet Explorer. Trình khám phá hiển thị tất cả các chi tiết giao dịch ở định dạng trực quan, giúp dễ dàng phát hiện bất kỳ vấn đề nào.
6.2. Xác minh dòng lệnh
Để kiểm toán chi tiết hơn, hãy sử dụng dòng lệnh:
sui client tx-block -- 3FopuDy5qzKm1kLRFZCdi8Lynadym9j15NaVxzUH6nYD
Lệnh này cung cấp bảng phân tích toàn diện về giao dịch, bao gồm chi tiết người gửi, thanh toán gas, thay đổi đối tượng và trạng thái thực hiện.
7. Phân tích phản hồi JSON: Hiểu các lớp của giao dịch
Hãy giải nén phản hồi JSON bạn nhận được sau khi thực hiện giao dịch của mình:
7.1. Tổng quan giao dịch
- jsonrpc & id: Các trường tiêu chuẩn cho giao thức JSON-RPC.
- Digest: Mã băm giao dịch duy nhất (ví dụ: “3fOPudy5qzkm1klrfzcdi8lynadym9j15navxzuH6nyd”), được sử dụng để theo dõi.
- TimestampMS & checkpoint: Cung cấp ngữ cảnh về thời điểm giao dịch được thực hiện và điểm kiểm tra blockchain tại thời điểm đó.
7.2. Nội dung giao dịch
- Dữ liệu người gửi và khí đốt: Bao gồm địa chỉ của người gửi và tất cả các cấu hình liên quan đến khí đốt (thanh toán, giá cả, ngân sách).
- Hoạt động (Giao dịch): Logic giao dịch bao gồm các hoạt động như:
- SplitCoins: Phá vỡ một đồng xu gas thành các phần nhỏ hơn.
- TransferObjects: Di chuyển các phân đoạn tiền xu đến địa chỉ người nhận được chỉ định.
- Chữ ký: Chữ ký mật mã (mã hóa Base64) đảm bảo tính xác thực của giao dịch.
7.3. Hiệu ứng thực thi
- Trạng thái: Trạng thái “thành công” xác nhận rằng giao dịch đã được xử lý mà không có lỗi.
- Sử dụng khí đốt: Chi tiết chi phí tính toán và lưu trữ cùng với bất kỳ khoản chiết khấu áp dụng nào.
- Thay đổi đối tượng: Phác thảo các đối tượng đã được sửa đổi, tạo hoặc cập nhật do kết quả của giao dịch.
- Phụ thuộc: Liệt kê các hash giao dịch liên quan mà giao dịch này phụ thuộc vào.
Sự cố chi tiết này rất cần thiết để gỡ lỗi và cải thiện hiệu suất DApp của bạn.
8. Thông tin chi tiết về nhà phát triển thực tế: Mẹo và rút ra
Hiểu từng bước của quy trình này trang bị cho bạn các kỹ năng để xây dựng các ứng dụng Web3 an toàn, hiệu quả trên Sui. Những hiểu biết này không chỉ giúp bạn khắc phục sự cố mà còn giúp bạn tự tin đổi mới trong hệ sinh thái Sui.
- Sui
- SDKs and Developer Tools
- Transaction Processing
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.