> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Cara Menggunakan getLatestBlockhash

> Pelajari kasus penggunaan getLatestBlockhash, contoh kode, parameter permintaan, struktur respons, dan kiat.

Metode RPC [`getLatestBlockhash`](https://www.helius.dev/docs/api-reference/rpc/http/getlatestblockhash) sangat penting untuk menyiapkan dan mengirim transaksi di jaringan Solana. Metode ini mengambil blockhash terbaru yang diproses oleh node, beserta ketinggian blok terakhir tempat blockhash ini akan tetap valid. Untuk detail selengkapnya tentang cara menggunakan blockhash secara efektif dan memastikan [transaksi Anda berhasil masuk](https://www.helius.dev/blog/how-to-land-transactions-on-solana), lihat panduan lengkap kami.

Setiap transaksi di Solana harus merujuk pada blockhash terbaru. Mekanisme ini membantu mencegah jenis serangan tertentu, seperti pemutaran ulang transaksi pada chain hasil fork.

**Catatan Versi:** Metode ini tersedia di `solana-core` v1.9 atau yang lebih baru. Untuk node yang menjalankan `solana-core` v1.8 atau yang lebih lama, gunakan metode `getRecentBlockhash` sebagai gantinya.

## Kasus Penggunaan Umum

* **Pembuatan Transaksi:** Dapatkan blockhash terbaru untuk disertakan dalam transaksi baru sebelum menandatangani dan mengirimnya.
* **Pengelolaan Masa Berlaku Transaksi:** Gunakan `lastValidBlockHeight` untuk mengetahui berapa lama transaksi yang merujuk pada blockhash yang diambil diperkirakan akan tetap valid.
* **Pemeriksaan Praeksekusi:** Meskipun `simulateTransaction` dapat melakukannya secara implisit, aplikasi dapat mengambil blockhash untuk menyiapkan transaksi secara manual guna simulasi.

## Parameter Permintaan

Metode ini dapat menerima objek konfigurasi opsional dengan parameter berikut:

* **`commitment`** (string, opsional): Menentukan [tingkat komitmen](https://www.helius.dev/blog/solana-commitment-levels) untuk kueri. Jika dihilangkan, komitmen default node akan digunakan. Untuk transaksi, `confirmed` atau `finalized` umumnya digunakan untuk memastikan blockhash berasal dari bagian chain yang cukup stabil.
* **`minContextSlot`** (integer, opsional): Slot minimum tempat permintaan dapat dievaluasi. Ini memastikan kueri dilakukan terhadap status ledger yang telah memproses setidaknya hingga slot ini.

## Struktur Respons

Bidang `result` dalam respons JSON-RPC akan berupa objek `RpcResponse`. Bidang `value` dalam objek ini berisi:

* **`blockhash`** (string): String berenkode base-58 yang merepresentasikan blockhash terbaru.
* **`lastValidBlockHeight`** (u64): Ketinggian blok tempat `blockhash` akan kedaluwarsa. Transaksi yang merujuk pada `blockhash` ini valid hingga jaringan mencapai `lastValidBlockHeight` ini.

Respons juga menyertakan objek `context` dengan `slot` tempat informasi tersebut diambil.

## Contoh

### 1. Mendapatkan Blockhash Terbaru dengan Komitmen Default

Contoh ini mengambil blockhash terbaru menggunakan komitmen default node.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getLatestBlockhash"
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchLatestBlockhash() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
      console.log('Latest Blockhash Info:');
      console.log(`  Blockhash: ${blockhash}`);
      console.log(`  Last Valid Block Height: ${lastValidBlockHeight}`);
      // This blockhash can now be used in a transaction
    } catch (error) {
      console.error('Error fetching latest blockhash:', error);
    }
  }

  fetchLatestBlockhash();
  ```
</CodeGroup>

### 2. Mendapatkan Blockhash Terbaru dengan Komitmen 'confirmed'

Contoh ini secara eksplisit meminta blockhash terbaru dengan komitmen `confirmed`.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getLatestBlockhash",
      "params": [{ "commitment": "confirmed" }]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchConfirmedBlockhash() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');
      console.log('Confirmed Blockhash Info:');
      console.log(`  Blockhash: ${blockhash}`);
      console.log(`  Last Valid Block Height: ${lastValidBlockHeight}`);
    } catch (error) {
      console.error('Error fetching confirmed blockhash:', error);
    }
  }

  fetchConfirmedBlockhash();
  ```
</CodeGroup>

## Kiat untuk Developer

* **Validitas Blockhash:** Blockhash berlaku untuk waktu terbatas, sekitar 2 menit (meskipun durasi ini dapat bervariasi). Transaksi harus dikonfirmasi oleh jaringan sebelum `lastValidBlockHeight` terlewati. Selalu ambil blockhash baru jika waktu yang cukup lama telah berlalu sejak blockhash terakhir diperoleh.
* **Memilih Komitmen:** Untuk transaksi penting, penggunaan komitmen `finalized` memberikan jaminan terkuat bahwa blockhash berasal dari fork chain utama, tetapi blockhash tersebut mungkin sedikit lebih lama. `confirmed` menawarkan keseimbangan yang baik. Pelajari lebih lanjut tentang [tingkat komitmen](https://www.helius.dev/blog/solana-commitment-levels) untuk informasi mendetail.
* **Biaya Transaksi:** Jangan lupa untuk menghitung dan menyertakan biaya transaksi yang sesuai. Blockhash itu sendiri tidak menentukan biaya.
* **Logika Percobaan Ulang:** Jika transaksi kedaluwarsa karena `lastValidBlockHeight` telah terlewati, Anda harus menandatanganinya kembali dengan blockhash baru yang lebih mutakhir, lalu mengirimkannya ulang.

Panduan ini menyediakan langkah-langkah untuk menggunakan `getLatestBlockhash` secara efektif, yang merupakan komponen utama untuk berinteraksi dengan jaringan Solana melalui transaksi.

## Metode Terkait

<CardGroup cols={2}>
  <Card title="simulateTransaction" href="/docs/id/api-reference/rpc/http/simulatetransaction">
    Simulasikan transaksi sebelum mengirimnya
  </Card>

  <Card title="isBlockhashValid" href="/docs/id/api-reference/rpc/http/isblockhashvalid">
    Periksa apakah blockhash masih valid
  </Card>
</CardGroup>
