getSignatureStatuses memungkinkan Anda mengambil status pemrosesan dan konfirmasi dari daftar tanda tangan transaksi. Metode ini berguna untuk menentukan apakah transaksi telah diproses, dikonfirmasi, atau difinalisasi oleh jaringan.
Kecuali jika opsi searchTransactionHistory diaktifkan, metode ini terutama mengueri cache status terbaru pada node RPC. Untuk transaksi lama, mengaktifkan searchTransactionHistory sangat penting.
Kasus Penggunaan Umum
- Mengonfirmasi Finalitas Transaksi: Memverifikasi apakah transaksi yang dikirimkan telah mencapai tingkat konfirmasi yang diinginkan (misalnya,
confirmedataufinalized). - Pencarian Status secara Batch: Memeriksa status beberapa transaksi sekaligus secara efisien, misalnya setelah pengiriman batch.
- Memperbarui UI berdasarkan Status Transaksi: Menampilkan status transaksi secara real-time kepada pengguna.
- Pemeriksaan Kesalahan: Mengidentifikasi apakah ada transaksi dalam daftar yang gagal beserta penyebabnya.
Parameter Permintaan
signatures(arraydaristring): (Wajib) Array tanda tangan transaksi yang dienkode dengan base-58. Anda dapat mengueri hingga 256 tanda tangan dalam satu permintaan.options(object, opsional): Objek konfigurasi opsional dengan bidang berikut:searchTransactionHistory(boolean, opsional): Jikatrue, node RPC akan mencari tanda tangan dalam seluruh riwayat transaksinya. Jikafalse(nilai default), node hanya mencari dalam cache status terbaru. Untuk transaksi lama atau yang mungkin tidak tercatat, atur opsi ini ketrue.
Struktur Respons
Bidangresult dari respons JSON-RPC berisi objek dengan dua bidang:
context(object): Objek yang berisi:slot(u64): Slot tempat node RPC memproses permintaan ini.
value(arraydariobject|null): Array objek status yang urutannya sesuai dengan urutan tanda tangan dalam permintaan. Setiap elemen dapat berupa:- Sebuah objek dengan bidang berikut jika tanda tangan ditemukan:
slot(u64): Slot tempat transaksi diproses.confirmations(number|null): Jumlah blok yang telah dikonfirmasi sejak transaksi diproses. Bernilainulljika transaksi telah difinalisasi (karena finalitas menyiratkan bahwa transaksi tidak akan dibatalkan, sehingga jumlah konfirmasi tertentu tidak lagi terlalu relevan).err(object|null): Objek kesalahan jika transaksi gagal (misalnya,{"InstructionError":[0,{"Custom":1}]}), ataunulljika transaksi berhasil.status(object): Objek yang menunjukkan status eksekusi transaksi. Biasanya{"Ok":null}untuk transaksi yang berhasil atau objek yang merinci kesalahan untuk transaksi yang gagal.confirmationStatus(string|null): Status konfirmasi klaster untuk transaksi tersebut (misalnya,processed,confirmed,finalized). Dapat bernilainulljika status tidak tersedia dalam cache dansearchTransactionHistorybernilai false.
null: Jika tanda tangan tidak ditemukan dalam cache status dansearchTransactionHistorybernilaifalse(atau jika tanda tangan tersebut memang tidak ada meskipun pencarian riwayat dilakukan).
- Sebuah objek dengan bidang berikut jika tanda tangan ditemukan:
Contoh
1. Mendapatkan Status untuk Daftar Tanda Tangan (Cache Terbaru)
Contoh ini mengambil status untuk dua tanda tangan dengan mengandalkan cache terbaru node.2. Mendapatkan Status dengan Pencarian Riwayat Transaksi
Contoh ini mengambil status tanda tangan dan secara eksplisit meminta node untuk mencari dalam riwayat transaksinya.Kiat untuk Pengembang
searchTransactionHistory: Sangat penting untuk keandalan. Jika bernilaifalse(default), metode ini hanya memeriksa cache terbaru yang terbatas. Jika transaksi sudah lama atau mungkin tidak tercatat dan tidak ada dalam cache ini, metode akan mengembalikannulluntuk status tanda tangan tersebut. Selalu atur ketruejika Anda perlu mengonfirmasi status transaksi yang mungkin sudah tidak terlalu baru.- Batas Tanda Tangan: Anda dapat mengueri maksimal 256 tanda tangan per panggilan.
- Status
null: Nilainulldalam arrayvalueuntuk tanda tangan tertentu berarti statusnya tidak ditemukan. Hal ini dapat terjadi karena tanda tangan tidak ada dalam cache terbaru (jikasearchTransactionHistorybernilai false), transaksi tidak pernah tercatat, atau transaksi terlalu lama untuk riwayat node meskipun menggunakansearchTransactionHistory: true. confirmations: null: Ini biasanya berarti transaksi telah mencapai statusfinalized. Pada tahap ini, konsep jumlah konfirmasi tertentu menjadi kurang relevan karena blok dianggap tidak dapat dibatalkan.- Penanganan Kesalahan: Periksa bidang
errdalam setiap objek status untuk mengetahui apakah transaksi gagal. Bidangstatusjuga akan memberikan detail (misalnya,{"Err":...}).
getSignatureStatuses merupakan cara yang efisien untuk memantau status beberapa transaksi Solana. Ingatlah untuk menggunakan searchTransactionHistory: true agar pemeriksaan status lebih andal.