getEpochInfo
Learn getEpochInfo use cases, code examples, request parameters, response structure, and tips.
The getEpochInfo
RPC method returns real-time information about the current epoch on the Solana network. It helps track epoch progression, network state, and can be used to determine how far the network has advanced into the current epoch and when the next epoch is expected to begin.
✅ Common Use Cases
Monitor Epoch Progression Retrieve the current slot index within the epoch and total slots in the epoch to estimate time remaining.
Analyze Network State Access core metrics like epoch number, block height, and transactions processed to evaluate network activity.
Node Synchronization Checks Confirm whether a node is aligned with the network by comparing its epoch info against a trusted source.
🛠Request Parameters
getEpochInfo
optionally accepts a configuration object:
commitment
(string, optional): Defines the ledger confirmation level:finalized
(default) – Highest safety; may lag slightly.confirmed
– Recently voted on by supermajority.processed
– Fastest, but may be incomplete or rollback-prone.
minContextSlot
(number, optional): Ensures the response is evaluated at or beyond a specific slot, useful for timeline-sensitive consistency.
📦 Response Structure
The result
field will return an object containing:
absoluteSlot
u64
Current absolute slot number on the ledger.
blockHeight
u64
Current block height (number of blocks produced since genesis).
epoch
u64
Current epoch number.
slotIndex
u64
Current slot within the epoch.
slotsInEpoch
u64
Total slots assigned to the current epoch.
transactionCount
u64 | null
Total number of transactions processed in this epoch (may be null).
💡 Examples
1. Fetch Epoch Info with Default Commitment
{
"jsonrpc": "2.0",
"id": 1,
"method": "getEpochInfo"
}
2. Fetch Epoch Info Using confirmed
Commitment
{
"jsonrpc": "2.0",
"id": 1,
"method": "getEpochInfo",
"params": [
{
"commitment": "confirmed"
}
]
}
Code Examples
const fetch = require('node-fetch');
async function getEpochInfo(rpcUrl) {
try {
const response = await fetch(rpcUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'getEpochInfo'
}),
});
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';
getEpochInfo(RPC_URL);
Example Response
{
"jsonrpc": "2.0",
"result": {
"absoluteSlot": 355253587,
"blockHeight": 333445451,
"epoch": 822,
"slotIndex": 149587,
"slotsInEpoch": 432000,
"transactionCount": 429927746973
},
"id": 1
}
🧠Developer Tips
Choosing Commitment Levels Use
finalized
for highest confidence. Useprocessed
for low-latency monitoring. For balanced needs,confirmed
is a good compromise.Transaction Count Limitations
transactionCount
may benull
if not tracked by the node or unavailable for the specified commitment level.Dynamic Epoch Lengths
slotsInEpoch
can vary based on network configuration. UsegetEpochSchedule
to explore the full epoch schedule and slot structure.
Last updated