isBlockhashValid memeriksa apakah blockhash yang diperoleh sebelumnya masih dianggap valid oleh jaringan. Blockhash memiliki masa berlaku terbatas (sekitar 30 detik atau 150 blok). Setelah itu, transaksi yang merujuknya akan ditolak.
Metode ini sangat penting bagi aplikasi yang menyimpan blockhash selama beberapa waktu sebelum mengirimkan transaksi. Dengan metode ini, Anda dapat memastikan transaksi tidak gagal karena blockhash telah kedaluwarsa.
Catatan Versi: Metode ini tersedia di solana-core v1.9 dan versi yang lebih baru. Untuk node yang menjalankan solana-core v1.8 atau versi yang lebih lama, Anda harus menggunakan getFeeCalculatorForBlockhash. Selain memberikan informasi biaya, metode tersebut juga secara implisit menunjukkan validitas blockhash (metode akan menghasilkan kesalahan jika blockhash terlalu lama).
Kasus Penggunaan Umum
- Pengiriman Ulang Transaksi: Sebelum mencoba kembali transaksi yang gagal, periksa apakah blockhash aslinya masih valid. Jika tidak, blockhash baru harus diambil.
- Penandatanganan Transaksi yang Ditunda: Jika transaksi telah disiapkan tetapi baru ditandatangani dan dikirimkan nanti, verifikasi validitas blockhash tepat sebelum pengiriman.
- Pemrosesan Transaksi Optimistis: Tentukan apakah blockhash kemungkinan akan diterima oleh jaringan jika transaksi segera dikirim.
Parameter Permintaan
blockhash(string, wajib): Blockhash yang akan diperiksa, sebagai string yang dikodekan dalam base-58.options(object, opsional): Object konfigurasi opsional yang dapat mencakup:commitment(string, opsional): Menentukan tingkat komitmen untuk kueri (misalnya,"finalized","confirmed","processed"). Jika dihilangkan, komitmen default node akan digunakan.minContextSlot(u64, opsional): Slot minimum tempat permintaan dapat dievaluasi. Ini memastikan node RPC tidak merespons dengan status dari slot yang lebih lama daripadaminContextSlot.
Struktur Respons
Bidangresult dalam respons JSON-RPC adalah object RpcResponse yang berisi:
context(object): Object yang berisi:slot(u64): Slot tempat node RPC mengevaluasi validitas blockhash.
value(boolean):truejika blockhash masih valid, danfalsejika tidak.
Contoh Kode
Tips untuk Developer
- Blockhash Memiliki Masa Berlaku: Blockhash hanya valid untuk waktu terbatas (sekitar 150 slot atau kurang lebih 30 detik). Selalu ambil blockhash baru jika Anda tidak yakin atau jika sudah cukup lama berlalu.
- Penggunaan
minContextSlot: GunakanminContextSlotuntuk mencegah kueri ke node RPC usang yang mungkin memberikan respons “valid” yang sudah tidak berlaku untuk blockhash yang sebenarnya terlalu lama dari perspektif seluruh cluster. - Alternatif untuk Node Lama: Untuk node yang menjalankan Solana versi sebelum 1.9, gunakan
getFeeCalculatorForBlockhash("<YOUR_BLOCKHASH>"). Jika metode ini berhasil mengembalikan respons, blockhash tersebut valid. Jika menghasilkan kesalahan (biasanya karena blockhash tidak ditemukan atau terlalu lama), blockhash tersebut tidak valid. - Konfirmasi Jaringan: Meskipun
isBlockhashValidmengembalikantrue, transaksi baru dianggap final setelah mencapai tingkat komitmen yang diinginkan pada jaringan setelah dikirimkan.
isBlockhashValid secara efektif saat membangun aplikasi Solana.
Metode Terkait
getLatestBlockhash
Dapatkan blockhash baru untuk transaksi baru