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.
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
logMessagesdanerrdalam 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 datatransaction. 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
1untuk 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 ke1. Lihat Dukungan transaksi v1.
- Atur ke
Struktur Respons
Metode ini mengembalikannull 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 berupanulljika tidak tersedia.meta(objek | null): Objek yang berisi metadata tentang eksekusi transaksi. Dapat berupanulljika transaksi gagal sebelum diproses atau jika metadata tidak tersedia.err(objek | null): Objek kesalahan jika transaksi gagal; jika tidak, nilainyanull.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 publikwritabledanreadonly.returnData(objek, opsional): Data yang dikembalikan oleh transaksi melaluisol_set_return_datadansol_get_return_data. BerisiprogramId(string) dandata(array:[string, encoding]).computeUnitsConsumed(u64, opsional): Jumlah unit komputasi yang digunakan oleh transaksi ini.
transaction(objek | array): Struktur transaksi itu sendiri. Formatnya bergantung pada parameterencoding:- Jika
encodingadalah"jsonParsed"atau"json": Objek denganmessage(berisiaccountKeys,instructions,recentBlockhash, dan sebagainya) dansignatures(array string). - Jika
encodingadalah"base58","base64": Array[encoded_string, encoding_format_string].
- Jika
version(“legacy” | angka | undefined): Versi transaksi. Dapat berupa"legacy"untuk transaksi lama atau angka (0atau1) untuk transaksi berversi.undefinedjikamaxSupportedTransactionVersiontidak diatur dan transaksi memiliki versi. Transaksi v1 juga membawa objektransactionConfigdalammessagedengan anggaran komputasi (computeUnitLimit,heapSize,loadedAccountsDataSizeLimit,priorityFee), yang menggantikan instruksi program ComputeBudget.priorityFeemiliknya adalah total biaya dalam lamport, bukan mikro-lamport per unit komputasi.
jsonParsed):
Contoh Kode
Tips untuk Developer
- Finalitas Transaksi: Pastikan Anda melakukan kueri dengan tingkat
commitmentyang sesuai. Meminta transaksi yang belum mencapai komitmen yang ditentukan akan menghasilkannull. - 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.
jsonParsedvs.json: MeskipunjsonParsedsangat 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 menggunakanjsonParsed.- Transaksi Berversi: Selalu atur
maxSupportedTransactionVersion: 1dalam 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.
getTransaction, sehingga Anda dapat mengambil dan memahami data transaksi Solana secara mendetail.