getBlock
Learn getBlock use cases, code examples, request parameters, response structure, and tips. Ask ChatGPT
The getBlock
RPC method allows you to retrieve detailed information about a confirmed block in the Solana ledger. This is essential for block explorers, transaction history analysis, and understanding the state of the chain at a specific point in time.
Common Use Cases
Inspecting Block Contents View all transactions included in a specific block.
Retrieving Block Hashes Get the blockhash for a given slot, its parent’s blockhash, and its parent slot.
Checking Block Height and Time Find out a block’s height (its sequence number) and its estimated production time.
Analyzing Transaction Details With appropriate parameters, retrieve full transaction data, including metadata like fees, status, pre/post balances, and inner instructions.
Fetching Rewards Optionally include reward information for the block.
Parameters
slot
(number, required): The slot number of the block to query (u64).config
(object, optional): Configuration options include:commitment
(string): Commitment level.processed
is not supported. Defaults tofinalized
.encoding
(string): How transaction data is returned. Defaults tojson
iftransactionDetails
isfull
oraccounts
, otherwisebase64
. Options:json
(deprecated)jsonParsed
(recommended for parsed keys and Lookup Table support)base58
base64
base64+zstd
transactionDetails
(string): Level of transaction detail to return. Defaults tofull
.full
accounts
signatures
none
rewards
(boolean): Include rewards array iftrue
. Defaults tofalse
.maxSupportedTransactionVersion
(number): Maximum transaction version to return. Set to0
to include versioned transactions using Address Lookup Tables.
Response
If the block is found and confirmed, the result
will include:
blockhash
(string): The base-58 encoded blockhash.previousBlockhash
(string): The base-58 encoded blockhash of the previous block.parentSlot
(number): The slot number of the parent block.transactions
(array): List of transactions included in the block. Each entry contains:meta
: Transaction metadata (e.g., fee, logs, balances).transaction
: The raw transaction data, including signatures and message content.
rewards
(array, optional): Present ifrewards: true
was requested. Includes reward info (e.g.,pubkey
,lamports
,postBalance
,rewardType
, andcommission
).blockTime
(number | null): Estimated Unix timestamp of block production.blockHeight
(number | null): Sequence number from genesis slot.
If the block is not found or unconfirmed, result
will be null
.
Example: Fetching Block Information
Here’s how to retrieve block info for a sample slot (e.g., 355184627
) on Devnet. Replace it with a current confirmed slot number for accurate results.
Also, replace X-API-KEY
with your actual CoinVera API key.
const fetch = require('node-fetch');
async function getBlock(rpcUrl) {
try {
const response = await fetch(rpcUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'getBlock',
"params": [
355184627,
{
"encoding": "jsonParsed",
"transactionDetails": "full",
"rewards": true,
"maxSupportedTransactionVersion": 0
}
]
}),
});
const data = await response.json();
// Print the exact full response
console.log('Full RPC Response:');
console.log(JSON.stringify(data, null, 2));
return data;
} catch (error) {
console.error('Error getting health:', error.message);
return null;
}
}
// Example usage
const RPC_URL = 'https://rpc.coinvera.io/?x-api-key=your-coinvera-x-api-key';
getBlock(RPC_URL);
Example Response
{
"jsonrpc": "2.0",
"result": {
"blockHeight": 428,
"blockTime": null,
"blockhash": "3Eq21vXNB5s86c62bVuUfTeaMif1N2kUqRPBmGRJhyTA",
"parentSlot": 429,
"previousBlockhash": "mfcyqEXB3DnHXki6KjjmZck6YjmZLvpAByy2fj4nh6B",
"transactions": [
{
"meta": {
"err": null,
"fee": 5000,
"innerInstructions": [],
"logMessages": [],
"postBalances": [499998932500, 26858640, 1, 1, 1],
"postTokenBalances": [],
"preBalances": [499998937500, 26858640, 1, 1, 1],
"preTokenBalances": [],
"rewards": null,
"status": {
"Ok": null
}
},
"transaction": {
"message": {
"accountKeys": [
"3UVYmECPPMZSCqWKfENfuoTv51fTDTWicX9xmBD2euKe",
"AjozzgE83A3x1sHNUR64hfH7zaEBWeMaFuAN9kQgujrc",
"SysvarS1otHashes111111111111111111111111111",
"SysvarC1ock11111111111111111111111111111111",
"Vote111111111111111111111111111111111111111"
],
"header": {
"numReadonlySignedAccounts": 0,
"numReadonlyUnsignedAccounts": 3,
"numRequiredSignatures": 1
},
"instructions": [
{
"accounts": [1, 2, 3, 0],
"data": "37u9WtQpcm6ULa3WRQHmj49EPs4if7o9f1jSRVZpm2dvihR9C8jY4NqEwXUbLwx15HBSNcP1",
"programIdIndex": 4
}
],
"recentBlockhash": "mfcyqEXB3DnHXki6KjjmZck6YjmZLvpAByy2fj4nh6B"
},
"signatures": [
"2nBhEBYYvfaAe16UMNqRHre4YNSskvuYgx3M6E4JP1oDYvZEJHvoPzyUidNgNX5r9sTyN1J9UxtbCXy2rqYcuyuv"
]
}
}
]
},
"id": 1
}
Developer Tips
Slot vs. Block Height The
getBlock
method accepts a slot number, not a block height. While slots are generally sequential, some may be skipped by the validator leader. To get the actual block sequence number, refer to theblockHeight
field in the response.maxSupportedTransactionVersion
Is Crucial To retrieve blocks containing versioned transactions (now standard and using Address Lookup Tables), you must specify:"maxSupportedTransactionVersion": 0
Omitting this may lead to errors when querying modern blocks.Choosing
transactionDetails
Level:full
: For comprehensive analysis—returns the most complete data including metadata.signatures
: Best for listing only transaction signatures in a block.accounts
: A good middle ground—lists involved accounts without full instructions.none
: Use when you only need high-level block metadata likeblockhash
orrewards
.
Use
jsonParsed
for Encoding When requesting transaction details,jsonParsed
is the recommended format. It provides a structured, human-readable JSON output and supports address resolution from Lookup Tables. Avoid usingjson
(deprecated), as it lacks modern feature support.Block Unavailability Handling A
null
response can mean:The slot was skipped.
The block hasn’t reached the requested commitment level.
The RPC node (e.g., CoinVera) has pruned the block due to ledger limits—common with older historical data.
Include Rewards When Needed To retrieve block reward distribution info (e.g., for validators and stakers), set:
"rewards": true
This increases response size but is essential for full reward visibility.
Last updated