getLatestBlockhash

Returns the latest blockhash and the last block height at which it will be valid. Every Solana transaction requires a recent blockhash to prevent replay attacks and ensure timeliness. This is one of the most frequently called methods in any Solana application, as it must be invoked before constructing and sending any transaction. The lastValidBlockHeight tells you when the blockhash expires.

Parameters

#TypeRequiredDescription
1objectNoConfiguration object

Configuration object fields:

FieldTypeDescription
commitmentstringCommitment level: processed, confirmed, or finalized
minContextSlotnumberMinimum slot at which the request can be evaluated

Response

Returns an RpcResponse object:

FieldTypeDescription
context.slotu64The slot at which the value was read
value.blockhashstringBase-58 encoded blockhash
value.lastValidBlockHeightu64Last block height at which the blockhash will be valid

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": "getLatestBlockhash",
5  "params": [
6    { "commitment": "finalized" }
7  ]
8}'

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: "getLatestBlockhash",
8    params: [
9      { commitment: "finalized" }
10    ]
11  }),
12});
13const { result } = await response.json();
14console.log("Blockhash:", result.value.blockhash);

Python

1import requests
2
3response = requests.post("http://[IP_ADDRESS]:[PORT]", json={
4    "jsonrpc": "2.0",
5    "id": 1,
6    "method": "getLatestBlockhash",
7    "params": [
8        {"commitment": "finalized"}
9    ]
10})
11result = response.json()["result"]
12print(f"Blockhash: {result['value']['blockhash']}")

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": "getLatestBlockhash",
12            "params": [
13                {"commitment": "finalized"}
14            ]
15        }))
16        .send().await?
17        .text().await?;
18    println!("{}", res);
19    Ok(())
20}

Example Response

1{
2  "jsonrpc": "2.0",
3  "result": {
4    "context": { "slot": 166974442 },
5    "value": {
6      "blockhash": "GJxqhuxcgfn5Tcj6y3f8X4FeCDd2RQ6SnEMo1AAxrPRZ",
7      "lastValidBlockHeight": 150676181
8    }
9  },
10  "id": 1
11}