getEpochSchedule

Returns the epoch schedule information from the cluster's genesis configuration. This includes the number of slots per epoch, the leader schedule slot offset, and whether epochs start short and grow. This data is static for a given cluster and is useful for calculating epoch boundaries, predicting when epochs will change, and understanding the timing of stake activation and reward distribution.

Parameters

This method does not accept any parameters.

Response

Returns an object:

FieldTypeDescription
slotsPerEpochu64Maximum number of slots in each epoch
leaderScheduleSlotOffsetu64Number of slots before beginning of an epoch to calculate a leader schedule for that epoch
warmupboolWhether epochs start short and grow
firstNormalEpochu64First normal-length epoch (after warmup)
firstNormalSlotu64First slot of firstNormalEpoch

Code Examples

cURL

1curl http://[IP_ADDRESS]:[PORT] -X POST -H "Content-Type: application/json" -d '{
2  "jsonrpc": "2.0",
3  "id": 1,
4  "method": "getEpochSchedule",
5  "params": []
6}'

TypeScript

1const response = await fetch("http://[IP_ADDRESS]:[PORT]", {
2  method: "POST",
3  headers: { "Content-Type": "application/json" },
4  body: JSON.stringify({
5    jsonrpc: "2.0",
6    id: 1,
7    method: "getEpochSchedule",
8    params: []
9  }),
10});
11const { result } = await response.json();
12console.log("Slots per epoch:", result.slotsPerEpoch);

Python

1import requests
2
3response = requests.post("http://[IP_ADDRESS]:[PORT]", json={
4    "jsonrpc": "2.0",
5    "id": 1,
6    "method": "getEpochSchedule",
7    "params": []
8})
9result = response.json()["result"]
10print(f"Slots per epoch: {result['slotsPerEpoch']}")

Rust

1use reqwest::Client;
2use serde_json::json;
3
4#[tokio::main]
5async fn main() -> Result<(), Box<dyn std::error::Error>> {
6    let client = Client::new();
7    let res = client.post("http://[IP_ADDRESS]:[PORT]")
8        .json(&json!({
9            "jsonrpc": "2.0",
10            "id": 1,
11            "method": "getEpochSchedule",
12            "params": []
13        }))
14        .send().await?
15        .text().await?;
16    println!("{}", res);
17    Ok(())
18}

Example Response

1{
2  "jsonrpc": "2.0",
3  "result": {
4    "slotsPerEpoch": 432000,
5    "leaderScheduleSlotOffset": 432000,
6    "warmup": false,
7    "firstNormalEpoch": 0,
8    "firstNormalSlot": 0
9  },
10  "id": 1
11}