Metode RPC getTransaction memungkinkan Anda mengambil informasi mendetail tentang transaksi yang telah dikonfirmasi dengan memberikan tanda tangannya. Informasi ini mencakup slot transaksi, waktu blok, metadata (seperti biaya, status, dan perubahan saldo), serta struktur transaksi itu sendiri.
Hindari Pengelompokan untuk Performa yang Lebih BaikMengelompokkan metode arsip akan meningkatkan latensi secara signifikan. Pengelompokan yang berisi lebih dari 100 permintaan tidak diizinkan.
Kasus Penggunaan Umum
- Verifikasi Transaksi: Mengonfirmasi bahwa transaksi telah diproses dan memeriksa hasilnya (berhasil atau gagal).
- Tampilan Riwayat Transaksi: Menampilkan detail transaksi sebelumnya kepada pengguna di dompet atau penjelajah.
- Audit dan Analisis: Memeriksa detail transaksi, termasuk instruksi yang dijalankan, biaya yang dibayarkan, dan akun yang terlibat.
- Men-debug Transaksi yang Gagal: Memeriksa bidang
logMessages dan err dalam metadata untuk memahami penyebab kegagalan transaksi.
- Pengindeksan Data: Mengekstrak informasi tertentu dari transaksi untuk penyimpanan dan analisis off-chain.
Parameter Permintaan
-
transactionSignature (string, wajib): Tanda tangan transaksi berkode base-58 yang ingin Anda kueri.
-
options (objek, opsional): Objek konfigurasi opsional yang dapat mencakup:
commitment (string, opsional): Menentukan tingkat komitmen (misalnya, "finalized", "confirmed"). Jika tidak diberikan, komitmen default node akan digunakan (biasanya "finalized").
encoding (string, opsional): Pengodean untuk data transaction. Nilai yang umum:
"json": Mengembalikan data transaksi dalam format JSON terstruktur (tetapi instruksi mungkin masih dikodekan dalam base64).
"jsonParsed": Mengembalikan data transaksi dengan instruksi khusus program yang diuraikan menjadi struktur JSON yang dapat dibaca manusia jika memungkinkan. Pengodean ini sering kali paling berguna untuk analisis.
"base58": Mengembalikan data transaksi sebagai string berkode base-58.
"base64": Mengembalikan data transaksi sebagai string berkode base-64.
- Nilai default-nya adalah
"json" jika tidak ditentukan oleh Helius, tetapi nilai default Solana mungkin berbeda. Sebaiknya tentukan nilai ini.
maxSupportedTransactionVersion (angka, opsional): Versi transaksi maksimum yang harus diproses oleh endpoint RPC.
- Atur ke
1 untuk menyertakan transaksi lama, v0, dan v1.
- Jika dihilangkan atau diatur lebih rendah daripada versi transaksi, permintaan akan gagal dengan kesalahan JSON-RPC
-32015 (Transaction version (1) is not supported by the requesting client). Selalu atur nilai ini ke 1. Lihat Dukungan transaksi v1.
Struktur Respons
Metode ini mengembalikan null jika transaksi tidak ditemukan (misalnya, belum diproses atau tanda tangannya salah) atau belum dikonfirmasi pada tingkat komitmen yang ditentukan. Jika tidak, metode ini mengembalikan objek dengan bidang berikut:
slot (u64): Nomor slot tempat transaksi disertakan dalam sebuah blok.
blockTime (i64 | null): Perkiraan stempel waktu Unix (detik sejak epoch) saat blok yang berisi transaksi dibuat. Dapat berupa null jika tidak tersedia.
meta (objek | null): Objek yang berisi metadata tentang eksekusi transaksi. Dapat berupa null jika transaksi gagal sebelum diproses atau jika metadata tidak tersedia.
err (objek | null): Objek kesalahan jika transaksi gagal; jika tidak, nilainya null.
fee (u64): Biaya dalam lamport yang dibayarkan untuk transaksi.
preBalances (array u64): Saldo lamport akun yang terlibat sebelum transaksi diproses.
postBalances (array u64): Saldo lamport akun yang terlibat setelah transaksi diproses.
preTokenBalances (array objek | null): Saldo token dari akun token yang terlibat sebelum transaksi.
postTokenBalances (array objek | null): Saldo token dari akun token yang terlibat setelah transaksi.
innerInstructions (array objek | null): Array instruksi yang dijalankan sebagai bagian dari CPI (Pemanggilan Lintas Program) dalam transaksi ini.
logMessages (array string | null): Array pesan log yang dikeluarkan oleh instruksi transaksi dan instruksi internal apa pun.
loadedAddresses (objek, opsional): Menentukan akun yang dimuat dari tabel pencarian alamat untuk transaksi ini. Berisi array kunci publik writable dan readonly.
returnData (objek, opsional): Data yang dikembalikan oleh transaksi melalui sol_set_return_data dan sol_get_return_data. Berisi programId (string) dan data (array: [string, encoding]).
computeUnitsConsumed (u64, opsional): Jumlah unit komputasi yang digunakan oleh transaksi ini.
transaction (objek | array): Struktur transaksi itu sendiri. Formatnya bergantung pada parameter encoding:
- Jika
encoding adalah "jsonParsed" atau "json": Objek dengan message (berisi accountKeys, instructions, recentBlockhash, dan sebagainya) dan signatures (array string).
- Jika
encoding adalah "base58", "base64": Array [encoded_string, encoding_format_string].
version (“legacy” | angka | undefined): Versi transaksi. Dapat berupa "legacy" untuk transaksi lama atau angka (0 atau 1) untuk transaksi berversi. undefined jika maxSupportedTransactionVersion tidak diatur dan transaksi memiliki versi. Transaksi v1 juga membawa objek transactionConfig dalam message dengan anggaran komputasi (computeUnitLimit, heapSize, loadedAccountsDataSizeLimit, priorityFee), yang menggantikan instruksi program ComputeBudget. priorityFee miliknya adalah total biaya dalam lamport, bukan mikro-lamport per unit komputasi.
Contoh Respons (pengodean jsonParsed):
Contoh Kode
Tips untuk Developer
- Finalitas Transaksi: Pastikan Anda melakukan kueri dengan tingkat
commitment yang sesuai. Meminta transaksi yang belum mencapai komitmen yang ditentukan akan menghasilkan null.
- Volume Data: Objek respons dapat berukuran sangat besar, terutama untuk transaksi kompleks dengan banyak instruksi atau pencatatan log yang mendetail. Perhatikan hal ini saat memproses data.
jsonParsed vs. json: Meskipun jsonParsed sangat praktis, dukungan penguraian bergantung pada kemampuan node RPC untuk program tertentu. Jika sebuah program tidak dikenali, instruksinya mungkin kembali menggunakan format yang kurang terurai meskipun menggunakan jsonParsed.
- Transaksi Berversi: Selalu atur
maxSupportedTransactionVersion: 1 dalam opsi permintaan Anda untuk memastikan aplikasi dapat menangani transaksi lama maupun berversi. Jika tidak, Anda mungkin kehilangan data atau mengalami kesalahan untuk format transaksi yang lebih baru.
- Perbedaan Penyedia RPC: Meskipun API intinya bersifat standar, beberapa penyedia RPC mungkin menawarkan penguraian yang lebih canggih atau bidang tambahan. Helius, misalnya, menyediakan penguraian transaksi yang lengkap.
Panduan ini memberikan gambaran menyeluruh tentang metode RPC getTransaction, sehingga Anda dapat mengambil dan memahami data transaksi Solana secara mendetail.