Méthodes pour envoyer, simuler et gérer des transactions.
sendTransaction
sendTransaction(tx: Transaction): TransactionMetadata | FailedTransactionMetadata
Exécute une transaction. Retourne des métadonnées en cas de succès ou des détails sur l'erreur en cas d'échec.
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());
Les propriétés du résultat de transaction comme err(), computeUnitsConsumed(),
logs() et signature() sont des fonctions accesseurs, pas des propriétés. Appelez-les
toujours avec des parenthèses.
Méthodes de TransactionMetadata
| Méthode | Retourne | Description |
|---|---|---|
signature() | Uint8Array | Octets de la signature de transaction |
computeUnitsConsumed() | bigint | Unités de calcul utilisées |
logs() | string[] | Journaux du programme |
innerInstructions() | InnerInstruction[] | Instructions internes (CPI) |
returnData() | TransactionReturnData | Données de retour des programmes |
prettyLogs() | string | Journaux formatés avec couleurs |
simulateTransaction
simulateTransaction(tx: Transaction): SimulatedTransactionInfo | FailedTransactionMetadata
Simule une transaction sans modifier l'état.
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);
La simulation ne modifie pas l'état. Utilisez-la pour vérifier les transactions avant de les envoyer.
Gestion des blockhashes
latestBlockhash
latestBlockhash(): Blockhash
Obtenir le blockhash actuel.
const blockhash = client.svm.latestBlockhash();console.log("Blockhash:", blockhash);
getLatestBlockhash (via client.rpc)
Obtenir le blockhash avec les informations de durée de vie pour construire des transactions manuellement.
Utilisez le helper RPC car il retourne à la fois blockhash et lastValidBlockHeight.
import {createTransactionMessage,setTransactionMessageLifetimeUsingBlockhash} from "@solana/kit";const { value: blockhashLifetime } = await client.rpc.getLatestBlockhash().send();const tx = setTransactionMessageLifetimeUsingBlockhash(blockhashLifetime,createTransactionMessage({ version: 0 }));
Lorsque vous utilisez des plugins de programme comme systemProgram() ou tokenProgram(), vous
n'avez jamais besoin de récupérer le blockhash vous-même — client.sendTransaction() (et
le helper .sendTransaction() sur les chaînes d'instructions) s'en chargent pour vous.
expireBlockhash
expireBlockhash(): LiteSVM
Avance vers un nouveau blockhash. Utile pour tester les scénarios d'expiration de 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
Historique des transactions
Activez l'historique des transactions pour récupérer les transactions après leur envoi :
// 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?