Μέθοδοι για αποστολή, προσομοίωση και διαχείριση συναλλαγών.
sendTransaction
sendTransaction(tx: Transaction): TransactionMetadata | FailedTransactionMetadata
Εκτέλεση μιας συναλλαγής. Επιστρέφει μεταδεδομένα σε περίπτωση επιτυχίας ή λεπτομέρειες σφάλματος σε περίπτωση αποτυχίας.
const result = client.svm.sendTransaction(signedTx);// Check for errorsif ("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());
Οι ιδιότητες αποτελέσματος συναλλαγής όπως err(), computeUnitsConsumed(),
logs() και signature() είναι συναρτήσεις getter, όχι ιδιότητες. Να τις
καλείτε πάντα με παρενθέσεις.
Μέθοδοι TransactionMetadata
| Μέθοδος | Επιστρέφει | Περιγραφή |
|---|---|---|
signature() | Uint8Array | Bytes υπογραφής συναλλαγής |
computeUnitsConsumed() | bigint | Μονάδες υπολογισμού που χρησιμοποιήθηκαν |
logs() | string[] | Αρχεία καταγραφής προγράμματος |
innerInstructions() | InnerInstruction[] | Εσωτερικές οδηγίες (CPI) |
returnData() | TransactionReturnData | Δεδομένα επιστροφής από προγράμματα |
prettyLogs() | string | Μορφοποιημένα αρχεία καταγραφής με χρώματα |
simulateTransaction
simulateTransaction(tx: Transaction): SimulatedTransactionInfo | FailedTransactionMetadata
Προσομοίωση μιας συναλλαγής χωρίς τροποποίηση της κατάστασης.
const simResult = client.svm.simulateTransaction(signedTx);if ("err" in simResult && simResult.err()) {console.error("Simulation failed:", simResult.err());return;}// Use .meta() to get TransactionMetadataconst meta = simResult.meta();console.log("Would use", meta.computeUnitsConsumed(), "compute units");console.log("Logs:", meta.logs());// Get post-execution account statesconst postAccounts = simResult.postAccounts();console.log("Post-state accounts:", postAccounts);
Η προσομοίωση δεν αλλάζει την κατάσταση. Χρησιμοποιήστε την για να ελέγξετε τις συναλλαγές πριν τις στείλετε.
Διαχείριση Blockhash
latestBlockhash
latestBlockhash(): Blockhash
Λήψη του τρέχοντος blockhash.
const blockhash = client.svm.latestBlockhash();console.log("Blockhash:", blockhash);
getLatestBlockhash (μέσω client.rpc)
Λήψη του blockhash με πληροφορίες διάρκειας ζωής για τη δημιουργία συναλλαγών με μη αυτόματο τρόπο.
Χρησιμοποιήστε το βοηθητικό RPC καθώς επιστρέφει τόσο το blockhash όσο και το lastValidBlockHeight.
import {createTransactionMessage,setTransactionMessageLifetimeUsingBlockhash} from "@solana/kit";const { value: blockhashLifetime } = await client.rpc.getLatestBlockhash().send();const tx = setTransactionMessageLifetimeUsingBlockhash(blockhashLifetime,createTransactionMessage({ version: 0 }));
Όταν χρησιμοποιείτε plugins προγράμματος όπως systemProgram() ή tokenProgram(), δεν
χρειάζεται ποτέ να ανακτήσετε το blockhash μόνοι σας — το client.sendTransaction() (και
το βοηθητικό .sendTransaction() στις αλυσίδες οδηγιών) το διαχειρίζονται αυτόματα.
expireBlockhash
expireBlockhash(): LiteSVM
Προώθηση σε νέο blockhash. Χρήσιμο για δοκιμή σεναρίων λήξης 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
Ιστορικό Συναλλαγών
Ενεργοποιήστε το ιστορικό συναλλαγών για να ανακτάτε συναλλαγές μετά την αποστολή:
// Enable history storage (stores last N transactions)client.svm.withTransactionHistory(100n);// Send a transactionconst result = client.svm.sendTransaction(signedTx);// Later, retrieve it by signature (base58 string)// Note: getTransaction expects a base58-encoded signature string
Is this page helpful?