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:

Field
Type
Description

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. Use processed for low-latency monitoring. For balanced needs, confirmed is a good compromise.

  • Transaction Count Limitations transactionCount may be null if not tracked by the node or unavailable for the specified commitment level.

  • Dynamic Epoch Lengths slotsInEpoch can vary based on network configuration. Use getEpochSchedule to explore the full epoch schedule and slot structure.

Last updated