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
| # | Type | Required | Description |
|---|---|---|---|
| 1 | object | No | Configuration object |
Configuration object fields:
| Field | Type | Description |
|---|---|---|
commitment | string | Commitment level: processed, confirmed, or finalized |
minContextSlot | number | Minimum slot at which the request can be evaluated |
Response
Returns an RpcResponse object:
| Field | Type | Description |
|---|---|---|
context.slot | u64 | The slot at which the value was read |
value.blockhash | string | Base-58 encoded blockhash |
value.lastValidBlockHeight | u64 | Last 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}