Skip to main content

simulateTransaction RPC Method

Simulate sending a transaction.

Updated on
Apr 30, 2025

Parameters

transaction
string

The transaction as an encoded string. The transaction must have a valid blockhash, but is not required to be signed. Legacy and version 0 transactions are capped at 1,232 bytes decoded, version 1 at 4,096.

object
object

The configuration object with the following fields:

commitment
string

(default: finalized) The level of commitment required for the query. The options include:

finalized
string

The node will query the most recent block confirmed by the supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized

confirmed
string

The node will query the most recent block that has been voted on by the supermajority of the cluster

processed
string

The node will query its most recent block. Note that the block may not be complete

sigVerify
boolean

(default: false) If true, the transaction signatures will be verified (conflicts with replaceRecentBlockhash)

replaceRecentBlockhash
boolean

(default: false) If true, the transaction recent blockhash will be replaced with the most recent blockhash (conflicts with sigVerify)

encoding
string

(Default: base58) The encoding of the supplied transaction. It can be base58 (slow, deprecated) or base64. base58 is capped at 1,232 bytes decoded whatever the version, so a version 1 transaction over 1,232 bytes must be sent as base64

minContextSlot
integer

The minimum slot at which the request can be evaluated

innerInstructions
boolean

(default: false) If true the response will include inner instructions. These inner instructions will be jsonParsed where possible, otherwise json.

accounts
object

The accounts configuration object containing the following fields:

addresses
string

An array of accounts to return, as base-58 encoded strings

encoding
string

(Default: base58 for input) The encoding format for account data. It can be one of base58 (slow), base64, base64+zstd or jsonParsed

Returns

result

Null if the account doesn't exist otherwise RpcResponse JSON object with the following fields:

context

An object that contains metadata about the current state of the Solana network at the time the request was processed

apiVersion

The version number

slot

The current slot in the Solana cluster during which the transactions are processed and new blocks are added to the blockchain

value
object

The transaction simulation result

err

Error code if the transaction failed or null if the transaction succeeds

logs

An array of log messages the transaction instructions output during execution, null if simulation failed before the transaction was able to execute (for example due to an invalid blockhash or signature verification failure)

accounts

An array of accounts with the same length as the accounts.addresses array in the request

null

If the account doesn't exist or if err is not null

object

otherwise, a JSON object containing:

lamports

The number of lamports assigned to this account as u64 (64-bit unsigned integer)

owner

The base-58 encoded Pubkey of the program this account has been assigned to

data

The data associated with the account, either as encoded binary data or JSON format {'program': 'state'}, depending on encoding parameter

executable

A boolean indicating if the account contains a program (and is strictly read-only)

rentEpoch

The epoch at which this account will next owe rent, as u64 (64-bit unsigned integer)

unitsConsumed

The number of compute budget units consumed during the processing of this transaction

loadedAccountsDataSize
integer

The total number of bytes loaded across all accounts used during the simulation

returnData

The most-recent return data generated by an instruction in the transaction, with the following fields:

programId
string

The program that generated the return data, as base-58 encoded Pubkey

data

The return data itself, as base-64 encoded binary data

innerInstructions

The value is a list of inner instructions.

Request
Response
1
{
2
"jsonrpc": "2.0",
3
"result": {
4
"context": {
5
"apiVersion": "4.2.2",
6
"slot": 450061909
7
},
8
"value": {
9
"accounts": null,
10
"err": null,
11
"fee": 5000,
12
"innerInstructions": null,
13
"loadedAccountsDataSize": 149,
14
"loadedAddresses": {
15
"readonly": [],
16
"writable": []
17
},
18
"logs": [
19
"Program 11111111111111111111111111111111 invoke [1]",
20
"Program 11111111111111111111111111111111 success"
21
],
22
"postBalances": [
23
46143205380,
24
1
25
],
26
"postTokenBalances": [],
27
"preBalances": [
28
46143210380,
29
1
30
],
31
"preTokenBalances": [],
32
"replacementBlockhash": {
33
"blockhash": "CXoxiHvfwQ9mJzJJzDBobCrVSQ7YzMHu9Pd9YxhWNu91",
34
"lastValidBlockHeight": 428102161
35
},
36
"returnData": null,
37
"unitsConsumed": 150
38
}
39
},
40
"id": 1
41
}
1
{
2
"jsonrpc": "2.0",
3
"result": {
4
"context": {
5
"apiVersion": "4.2.2",
6
"slot": 450061909
7
},
8
"value": {
9
"accounts": null,
10
"err": null,
11
"fee": 5000,
12
"innerInstructions": null,
13
"loadedAccountsDataSize": 149,
14
"loadedAddresses": {
15
"readonly": [],
16
"writable": []
17
},
18
"logs": [
19
"Program 11111111111111111111111111111111 invoke [1]",
20
"Program 11111111111111111111111111111111 success"
21
],
22
"postBalances": [
23
46143205380,
24
1
25
],
26
"postTokenBalances": [],
27
"preBalances": [
28
46143210380,
29
1
30
],
31
"preTokenBalances": [],
32
"replacementBlockhash": {
33
"blockhash": "CXoxiHvfwQ9mJzJJzDBobCrVSQ7YzMHu9Pd9YxhWNu91",
34
"lastValidBlockHeight": 428102161
35
},
36
"returnData": null,
37
"unitsConsumed": 150
38
}
39
},
40
"id": 1
41
}
Don't have an account yet?
Create your Quicknode endpoint in seconds and start building
Get started for free