Skip to main content

Ringkasan

getTransactionsForAddress adalah metode RPC eksklusif Helius yang menampilkan riwayat transaksi suatu alamat dengan pemfilteran lanjutan, pengurutan fleksibel, dan paginasi efisien. Metode ini bukan bagian dari RPC Solana standar. Tidak seperti getSignaturesForAddress, yang hanya menampilkan tanda tangan dan melewati akun token terkait, getTransactionsForAddress dapat menampilkan data transaksi lengkap, termasuk aktivitas associated token account (ATA) milik dompet, dalam satu panggilan. Karena itu, metode ini menjadi cara tercepat untuk mendapatkan riwayat lengkap suatu alamat guna melakukan backfill, pengindeksan, dan analitik. Metode ini menampilkan hingga 1.000 transaksi lengkap per panggilan.

Flexible sorting

Urutkan secara kronologis (terlama lebih dahulu) atau terbalik (terbaru lebih dahulu).

Advanced filtering

Filter berdasarkan rentang waktu, slot, tanda tangan, status, dan transfer token.

Full transaction data

Dapatkan detail transaksi lengkap dalam satu panggilan tanpa memerlukan getTransaction lanjutan.

Token accounts

Sertakan transaksi untuk akun token terkait milik suatu alamat.

Kapan metode ini digunakan

Gunakan getTransactionsForAddress ketika Anda memerlukan:
  • Riwayat token dompet lengkap, termasuk akun token terkait
  • Backfill cepat dalam satu panggilan untuk pengindeks atau pipeline data
  • Analisis dan pelaporan transaksi berdasarkan waktu atau slot
  • Pemfilteran status untuk hanya menyimpan transaksi yang berhasil atau gagal
  • Pemutaran ulang riwayat secara kronologis (urutan dari terlama)
  • Analisis peluncuran token: transaksi mint pertama dan pemegang awal
  • Riwayat pendanaan dompet dan penemuan pihak lawan
  • Laporan kepatuhan dan audit untuk periode waktu tertentu
Untuk riwayat yang telah diuraikan dan hanya mencakup transfer (pembayaran, rekonsiliasi saldo), gunakan getTransfersByAddress.

Dukungan jaringan

Mulai cepat

1

Get your API key

Dapatkan kunci API Anda dari Dasbor Helius.
2

Query with advanced features

Dapatkan semua transaksi yang berhasil untuk suatu dompet di antara dua tanggal, diurutkan secara kronologis:
3

Understand the parameters

Contoh ini menunjukkan fitur-fitur utama:
  • transactionDetails: atur ke 'full' untuk mendapatkan data transaksi lengkap dalam satu panggilan
  • sortOrder: gunakan 'asc' untuk urutan kronologis (terlama lebih dahulu) atau 'desc' untuk yang terbaru lebih dahulu
  • filters.blockTime: atur rentang waktu dengan gte (lebih besar dari atau sama dengan) dan lte (lebih kecil dari atau sama dengan)
  • filters.status: filter agar hanya menyertakan transaksi 'succeeded' atau 'failed'
  • filters.tokenAccounts: sertakan transfer, mint, dan burn untuk akun token terkait

Parameter permintaan

string
wajib
Kunci publik akun berenkode base-58 yang riwayat transaksinya akan dikueri
string
default:"signatures"
Tingkat detail transaksi yang ditampilkan:
  • signatures: Informasi tanda tangan dasar (lebih cepat)
  • full: Data transaksi lengkap (menghilangkan kebutuhan akan panggilan getTransaction, mendukung batas hingga 1.000)
string
default:"desc"
Urutan hasil:
  • desc: Terbaru lebih dahulu (default)
  • asc: Terlama lebih dahulu (kronologis, cocok untuk analisis historis)
number
default:"1000"
Jumlah maksimum transaksi yang ditampilkan:
  • Hingga 1000 saat transactionDetails: "signatures"
  • Hingga 1000 saat transactionDetails: "full"
string
Token paginasi dari respons sebelumnya (format: "slot:position")
string
default:"finalized"
Tingkat komitmen: finalized atau confirmed. Komitmen processed tidak didukung.
object
Opsi pemfilteran lanjutan untuk mempersempit hasil.
object
Filter berdasarkan nomor slot menggunakan operator perbandingan: gte, gt, lte, ltContoh: { "slot": { "gte": 1000, "lte": 2000 } }
object
Filter berdasarkan stempel waktu Unix menggunakan operator perbandingan: gte, gt, lte, lt, eqContoh: { "blockTime": { "gte": 1640995200, "lte": 1641081600 } }
object
Filter berdasarkan tanda tangan transaksi menggunakan operator perbandingan: gte, gt, lte, ltContoh: { "signature": { "lt": "SIGNATURE_STRING" } }
string
Filter berdasarkan status keberhasilan/kegagalan transaksi:
  • succeeded: Hanya transaksi yang berhasil
  • failed: Hanya transaksi yang gagal
  • any: Transaksi yang berhasil dan gagal (default)
Contoh: { "status": "succeeded" }
string
default:"none"
Filter transaksi untuk akun token terkait:
  • none: Hanya tampilkan transaksi yang merujuk alamat yang diberikan (default)
  • balanceChanged: Tampilkan transaksi yang merujuk alamat yang diberikan atau mengubah saldo akun token milik alamat tersebut (direkomendasikan)
  • all: Tampilkan transaksi yang merujuk alamat yang diberikan atau akun token apa pun milik alamat tersebut
Contoh: { "tokenAccounts": "balanceChanged" }
object
Filter agar hanya menyertakan transaksi ketika alamat yang dikueri berpartisipasi dalam transfer token yang cocok dengan pihak lawan, arah, mint, atau rentang jumlah mentah. Semua bidang bersifat opsional dan digabungkan dengan semantik AND.Contoh: { "tokenTransfer": { "direction": "in", "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } }
string
Alamat pihak lawan. Mencocokkan transfer yang sisi lainnya merupakan alamat ini.
string
default:"any"
Filter berdasarkan arah transfer relatif terhadap alamat yang dikueri:
  • in: Transfer yang diterima alamat yang dikueri
  • out: Transfer yang dikirim alamat yang dikueri
  • any: Transfer masuk dan keluar
string
Mint token yang digunakan sebagai filter.
object
Perbandingan jumlah menggunakan jumlah mentah on-chain, bukan jumlah UI atau jumlah yang telah disesuaikan dengan desimal. Mendukung gt, gte, lt, dan lte.
string
Format enkode untuk data transaksi (hanya berlaku saat transactionDetails: "full"). Sama seperti API getTransaction. Opsi: json, jsonParsed, base64, base58
number
Atur versi transaksi maksimum yang akan ditampilkan. Jika dihilangkan, hanya transaksi lama yang akan ditampilkan. Atur ke 1 untuk menyertakan transaksi lama, v0, dan v1.
number
Slot minimum tempat permintaan dapat dievaluasi

Pengukuran penggunaan

Respons yang berhasil diukur berdasarkan data yang ditampilkan:

Respons

Struktur respons bergantung pada transactionDetails. Mode tanda tangan menampilkan catatan tanda tangan yang ringan; mode lengkap menampilkan objek transaksi dan metadata lengkap.

Bidang respons

Bidang transactionIndex bersifat eksklusif untuk getTransactionsForAddress. Endpoint serupa lainnya seperti getSignaturesForAddress, getTransaction, dan getTransactions tidak menyertakan bidang ini. Dalam mode lengkap, meta adalah objek metadata transaksi lengkap — strukturnya identik dengan yang ditampilkan oleh getTransaction. Objek ini mencakup preTokenBalances dan postTokenBalances, sehingga Anda dapat menghitung perubahan saldo token (misalnya, untuk mendeteksi swap) langsung dari respons tanpa panggilan lanjutan.

Filter

Anda dapat menggunakan operator perbandingan untuk slot, blockTime, dan signature, serta filter khusus status, tokenAccounts, dan tokenTransfer. Menggabungkan beberapa filter akan mempersempit hasil ke irisannya.

Operator perbandingan

Operator ini bekerja seperti kueri basis data agar Anda dapat mengontrol rentang data secara presisi.

Filter enum

Contoh filter gabungan:

Akun token terkait

Di Solana, dompet tidak menyimpan token secara langsung. Sebaliknya, dompet memiliki akun token, dan akun token tersebut menyimpan token. Ketika seseorang mengirim USDC kepada Anda, token itu masuk ke akun token USDC Anda, bukan ke alamat dompet utama Anda. Metode ini unik karena dapat mengkueri riwayat token lengkap, termasuk associated token account (ATA) milik dompet. Metode RPC native seperti getSignaturesForAddress tidak menyertakan ATA. Filter tokenAccounts mengontrol perilaku ini:
  • none (default): Hanya menampilkan transaksi yang secara langsung merujuk alamat dompet. Gunakan ini jika Anda hanya membutuhkan interaksi dompet langsung.
  • balanceChanged (direkomendasikan): Menampilkan transaksi yang merujuk alamat dompet atau mengubah saldo akun token milik dompet. Opsi ini menyaring spam dan operasi yang tidak terkait, seperti pengumpulan biaya atau delegasi, sehingga Anda mendapatkan tampilan aktivitas dompet penting yang bersih.
  • all: Menampilkan semua transaksi yang merujuk alamat dompet atau akun token apa pun milik dompet.
Filter tokenAccounts tidak mendukung transaksi sebelum Desember 2022. Filter ini bergantung pada metadata transfer token yang diperkenalkan ke Solana pada slot 111,491,819. Untuk mencakup aktivitas sebelumnya, lihat solusi alternatif akun token historis.

Filter transfer token

Filter tokenTransfer mempersempit hasil ke transaksi ketika alamat yang dikueri berpartisipasi dalam transfer token yang cocok dengan kriteria tertentu: pihak lawan, mint, arah, atau rentang jumlah tertentu. Gunakan filter ini untuk menjawab pertanyaan seperti:
  • Kapan dompet ini menerima USDC dari pihak lawan tertentu?
  • Tampilkan setiap transfer keluar di atas 1.000 token.
  • Kapan dompet ini pernah berinteraksi dengan mint tertentu ini?
Filter ini merupakan bidang opsional di dalam objek filters pada konfigurasi permintaan:
Semua bidang di dalam tokenTransfer bersifat opsional. Menggabungkan beberapa bidang diperlakukan sebagai AND. Operator rentang jumlah: Anda dapat menggabungkan operator jumlah, seperti { "gte": 1000000, "lte": 5000000 } untuk rentang tertutup. tokenTransfer dapat digabungkan dengan filter tingkat teratas lainnya (slot, blockTime, status, dan tokenAccounts); hasil akhirnya adalah irisan.

Contoh

Analitik berbasis waktu

Buat laporan transaksi bulanan:
Proses untuk analitik:

Pembuatan mint token

Temukan transaksi pembuatan mint untuk token tertentu:
Untuk pembuatan pool likuiditas, kueri alamat pool:
Ini menemukan momen yang tepat ketika mint token atau pool likuiditas dibuat, termasuk alamat pembuat dan parameter awal.

Transaksi pendanaan

Temukan pihak yang mendanai alamat tertentu:
Kemudian analisis data transaksi untuk menemukan transfer SOL:
Beberapa transaksi pertama sering kali mengungkapkan sumber pendanaan dan dapat membantu mengidentifikasi alamat terkait atau pola pendanaan.

Transfer token

Filter berdasarkan tokenTransfer untuk mengisolasi pergerakan token tertentu. Aliran masuk USDC ke suatu alamat:
Transfer keluar dalam jumlah besar ke pihak lawan tertentu:
Digabungkan dengan rentang slot dan status:

Paginasi

Jika jumlah transaksi melebihi batas Anda, gunakan paginationToken dari respons untuk mengambil halaman berikutnya. Token ini berupa string sederhana dalam format "slot:position" yang memberi tahu API tempat untuk melanjutkan. Gunakan token paginasi dari setiap respons untuk mengambil halaman berikutnya:

Beberapa alamat

Anda tidak dapat mengkueri beberapa alamat dalam satu permintaan. Setiap kueri alamat dihitung sebagai permintaan API terpisah dan diukur sesuai ketentuan. Untuk mengambil transaksi bagi beberapa alamat, kueri setiap alamat dalam rentang waktu atau slot yang sama, lalu gabungkan dan urutkan:
Untuk pemindaian riwayat yang lebih besar, lakukan iterasi melalui rentang waktu atau slot (misalnya, 1000 slot sekaligus) dan ulangi pola ini.

Praktik terbaik

Performa. Gunakan transactionDetails: "signatures" saat Anda tidak memerlukan data transaksi lengkap. Gunakan ukuran halaman yang wajar untuk waktu respons yang lebih baik, dan filter berdasarkan rentang waktu atau slot tertentu untuk kueri yang lebih terarah. Pemfilteran. Mulai dengan filter yang luas, lalu persempit secara bertahap. Gunakan filter berbasis waktu untuk alur kerja analitik dan pelaporan, serta gabungkan beberapa filter untuk kueri presisi yang menargetkan jenis transaksi atau periode waktu tertentu. Paginasi. Simpan token paginasi saat Anda perlu melanjutkan kueri besar nanti. Pantau kedalaman paginasi untuk perencanaan performa, dan gunakan urutan menaik saat Anda perlu memutar ulang peristiwa historis secara kronologis. Penanganan kesalahan. Tangani batas laju dengan baik menggunakan backoff eksponensial. Validasi alamat sebelum membuat permintaan, dan simpan hasil dalam cache jika sesuai untuk mengurangi penggunaan API.

Batasan dan kasus khusus

Sejumlah kecil alamat diarahkan ke arsip lama, dibatasi pada fallback pemindaian slot, atau menampilkan hasil kosong. Penemuan akun token sebelum slot 111,491,819 juga memerlukan solusi alternatif. Perluas bagian di bawah untuk melihat detail lengkap.
Diarahkan ke arsip lama. Permintaan untuk alamat-alamat ini diarahkan ke sistem arsip lama kami.Fallback pemindaian slot. Permintaan untuk alamat-alamat ini diteruskan ke sistem arsip baru kami dan dapat dikueri melalui pendekatan pemindaian per slot (maksimum 100 slot). Namun, data ini tidak diindeks.Menampilkan hasil kosong (is_reserved_address). Permintaan diteruskan ke sistem arsip baru kami, tetapi datanya tidak diindeks dan kueri menampilkan hasil kosong.
Untuk alamat dengan aktivitas akun token sebelum slot 111,491,819, filter tokenAccounts tidak dapat menentukan kepemilikan karena bidang owner dalam metadata saldo token belum tersedia. Untuk mendapatkan hasil lengkap, Anda dapat menemukan akun token tersebut secara manual dengan menguraikan instruksi transaksi awal, lalu mengkueri getTransactionsForAddress secara paralel untuk masing-masing akun.

Apa perbedaannya dengan getSignaturesForAddress?

Jika Anda sudah memahami metode standar getSignaturesForAddress, getTransactionsForAddress menyederhanakan alur kerja beberapa langkah menjadi satu panggilan serta menambahkan dukungan pemfilteran, pengurutan, dan akun token. Untuk konversi kode yang ada secara bertahap, lihat panduan migrasi.

Dapatkan transaksi lengkap dalam satu panggilan

Dengan getSignaturesForAddress, Anda memerlukan dua langkah:
Dengan getTransactionsForAddress, Anda hanya memerlukan satu panggilan:

Dapatkan riwayat token dalam satu panggilan

Dengan getSignaturesForAddress, Anda harus memanggil getTokenAccountsByOwner terlebih dahulu, lalu mengkueri setiap akun token:
Dengan getTransactionsForAddress, Anda hanya perlu mengatur filters.tokenAccounts:

Kemampuan tambahan

Chronological sorting

Urutkan transaksi dari yang terlama hingga terbaru dengan sortOrder: 'asc'.

Time-based filtering

Filter berdasarkan rentang waktu menggunakan filter blockTime.

Status filtering

Dapatkan hanya transaksi yang berhasil atau gagal dengan filter status.

Simpler pagination

Gunakan paginationToken sebagai pengganti tanda tangan before/until yang membingungkan.

Langkah berikutnya

Indexing guide

Gunakan getTransactionsForAddress untuk melakukan backfill dan menyinkronkan indeks Solana.

getTransfersByAddress

Riwayat yang telah diuraikan dan hanya mencakup transfer untuk pembayaran dan rekonsiliasi.

API reference

Skema permintaan dan respons lengkap untuk getTransactionsForAddress.

Historical data overview

Bandingkan semua metode data historis Solana.