Skip to main content
Metode RPC 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.
Hindari Pemrosesan Batch untuk Performa yang Lebih BaikPemrosesan metode arsip secara batch meningkatkan latensi secara signifikan. Batch yang berisi lebih dari 10 permintaan tidak diizinkan.

Kasus Penggunaan Umum

  • Mengonfirmasi Finalitas Transaksi: Memverifikasi apakah transaksi yang dikirimkan telah mencapai tingkat konfirmasi yang diinginkan (misalnya, confirmed atau finalized).
  • 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

  1. signatures (array dari string): (Wajib) Array tanda tangan transaksi yang dienkode dengan base-58. Anda dapat mengueri hingga 256 tanda tangan dalam satu permintaan.
  2. options (object, opsional): Objek konfigurasi opsional dengan bidang berikut:
    • searchTransactionHistory (boolean, opsional): Jika true, node RPC akan mencari tanda tangan dalam seluruh riwayat transaksinya. Jika false (nilai default), node hanya mencari dalam cache status terbaru. Untuk transaksi lama atau yang mungkin tidak tercatat, atur opsi ini ke true.

Struktur Respons

Bidang result dari respons JSON-RPC berisi objek dengan dua bidang:
  • context (object): Objek yang berisi:
    • slot (u64): Slot tempat node RPC memproses permintaan ini.
  • value (array dari object | 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. Bernilai null jika 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}]}), atau null jika 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 bernilai null jika status tidak tersedia dalam cache dan searchTransactionHistory bernilai false.
    • null: Jika tanda tangan tidak ditemukan dalam cache status dan searchTransactionHistory bernilai false (atau jika tanda tangan tersebut memang tidak ada meskipun pencarian riwayat dilakukan).

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 bernilai false (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 mengembalikan null untuk status tanda tangan tersebut. Selalu atur ke true jika 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: Nilai null dalam array value untuk tanda tangan tertentu berarti statusnya tidak ditemukan. Hal ini dapat terjadi karena tanda tangan tidak ada dalam cache terbaru (jika searchTransactionHistory bernilai false), transaksi tidak pernah tercatat, atau transaksi terlalu lama untuk riwayat node meskipun menggunakan searchTransactionHistory: true.
  • confirmations: null: Ini biasanya berarti transaksi telah mencapai status finalized. Pada tahap ini, konsep jumlah konfirmasi tertentu menjadi kurang relevan karena blok dianggap tidak dapat dibatalkan.
  • Penanganan Kesalahan: Periksa bidang err dalam setiap objek status untuk mengetahui apakah transaksi gagal. Bidang status juga akan memberikan detail (misalnya, {"Err":...}).
Menggunakan getSignatureStatuses merupakan cara yang efisien untuk memantau status beberapa transaksi Solana. Ingatlah untuk menggunakan searchTransactionHistory: true agar pemeriksaan status lebih andal.