Tài liệu SolanaLiteSVMTypeScriptTài liệu tham khảo API

Giao dịch

Các phương thức để gửi, mô phỏng và quản lý giao dịch.

sendTransaction

sendTransaction(tx: Transaction): TransactionMetadata | FailedTransactionMetadata

Thực thi một giao dịch. Trả về siêu dữ liệu khi thành công hoặc chi tiết lỗi khi thất bại.

const result = client.svm.sendTransaction(signedTx);
// Check for errors
if ("err" in result && result.err()) {
console.error("Transaction failed:", result.err());
return;
}
// Access result properties (note: these are getter functions)
console.log("Signature:", result.signature());
console.log("Compute units:", result.computeUnitsConsumed());
console.log("Logs:", result.logs());

Các thuộc tính kết quả giao dịch như err(), computeUnitsConsumed(), logs()signature()các hàm getter, không phải thuộc tính. Luôn gọi chúng kèm dấu ngoặc đơn.

Các Phương Thức TransactionMetadata

Phương thứcTrả vềMô tả
signature()Uint8ArrayByte chữ ký giao dịch
computeUnitsConsumed()bigintSố đơn vị tính toán đã dùng
logs()string[]Nhật ký chương trình
innerInstructions()InnerInstruction[]Lệnh nội (CPI)
returnData()TransactionReturnDataDữ liệu trả về từ các chương trình
prettyLogs()stringNhật ký được định dạng với màu sắc

simulateTransaction

simulateTransaction(tx: Transaction): SimulatedTransactionInfo | FailedTransactionMetadata

Mô phỏng một giao dịch mà không thay đổi trạng thái.

const simResult = client.svm.simulateTransaction(signedTx);
if ("err" in simResult && simResult.err()) {
console.error("Simulation failed:", simResult.err());
return;
}
// Use .meta() to get TransactionMetadata
const meta = simResult.meta();
console.log("Would use", meta.computeUnitsConsumed(), "compute units");
console.log("Logs:", meta.logs());
// Get post-execution account states
const postAccounts = simResult.postAccounts();
console.log("Post-state accounts:", postAccounts);

Mô phỏng không thay đổi trạng thái. Hãy dùng nó để kiểm tra giao dịch trước khi gửi.

Quản Lý Blockhash

latestBlockhash

latestBlockhash(): Blockhash

Lấy blockhash hiện tại.

const blockhash = client.svm.latestBlockhash();
console.log("Blockhash:", blockhash);

getLatestBlockhash (qua client.rpc)

Lấy blockhash kèm thông tin thời hạn để xây dựng giao dịch thủ công. Sử dụng trình trợ giúp RPC vì nó trả về cả blockhash lẫn lastValidBlockHeight.

import {
createTransactionMessage,
setTransactionMessageLifetimeUsingBlockhash
} from "@solana/kit";
const { value: blockhashLifetime } = await client.rpc
.getLatestBlockhash()
.send();
const tx = setTransactionMessageLifetimeUsingBlockhash(
blockhashLifetime,
createTransactionMessage({ version: 0 })
);

Khi sử dụng các plugin chương trình như systemProgram() hay tokenProgram(), bạn không bao giờ cần tự lấy blockhash — client.sendTransaction() (và trình trợ giúp .sendTransaction() trên chuỗi lệnh) sẽ xử lý việc đó cho bạn.

expireBlockhash

expireBlockhash(): LiteSVM

Chuyển sang blockhash mới. Hữu ích để kiểm tra các kịch bản hết hạn blockhash.

const oldBlockhash = client.svm.latestBlockhash();
client.svm.expireBlockhash();
const newBlockhash = client.svm.latestBlockhash();
console.log("Old:", oldBlockhash);
console.log("New:", newBlockhash);
// Blockhashes will be different

Lịch Sử Giao Dịch

Bật lịch sử giao dịch để truy xuất các giao dịch sau khi gửi:

// Enable history storage (stores last N transactions)
client.svm.withTransactionHistory(100n);
// Send a transaction
const result = client.svm.sendTransaction(signedTx);
// Later, retrieve it by signature (base58 string)
// Note: getTransaction expects a base58-encoded signature string

Is this page helpful?

Mục lục

Chỉnh sửa trang