Langsung ke konten utama
POST
Isi permintaan, skema respons, dan contoh pada halaman ini dihasilkan dari definisi OpenAPI. Pemindaian menelusuri riwayat satu alamat, menyimpan transaksi yang cocok dengan kriteria match Anda, dan hanya menguraikan transaksi tersebut. Gunakan fitur ini sebagai pengganti menelusuri halaman Riwayat Transaksi Terurai dan memfilter di sisi klien. Secara default, setiap item dalam data menggunakan bentuk TransactionResult yang sama seperti yang dikembalikan oleh Uraikan Transaksi. Atur returnShape untuk hanya mendapatkan tanda tangan yang cocok atau jumlahnya saja. Respons juga menyertakan ringkasan scan yang memberi tahu sejauh mana pemindaian berlangsung dan alasan pemindaian berhenti.

Cara Kerja Pemindaian

  1. Pemindaian mengambil riwayat alamat dalam halaman berisi hingga 1.000 transaksi, dalam sortOrder, sesuai batas slot, time, dan tanda tangan yang Anda tetapkan.
  2. Pemindaian menyimpan transaksi yang cocok dengan setiap kriteria yang ditetapkan dalam match.
  3. Pemindaian berhenti saat kondisi pertama berikut terpenuhi: limit kecocokan ditemukan (hanya untuk bentuk default transactions), budget.maxScannedTransactions telah dipindai, akhir riwayat atau rentang tercapai, atau batas waktu permintaan tercapai.
Pemindaian yang berhenti lebih awal tetap merupakan 200. Panggil lagi dengan paginationToken yang dikembalikan selama nilainya tersedia, meskipun data kosong.

Kriteria Kecocokan

match wajib diisi. Atur programs, mints, atau keduanya. Jika Anda mengatur keduanya, transaksi harus cocok dengan keduanya.

Cocokkan berdasarkan Program

programs mencantumkan hingga 20 program, masing-masing paling banyak satu kali. Transaksi cocok jika memiliki instruksi dari salah satu program tersebut, baik tingkat atas maupun internal (CPI), dalam scope program tersebut. Untuk setiap program, Anda dapat mempersempit kecocokan:
  • instructions: nama instruksi dari versi IDL mana pun milik program, sesuai ejaan dalam IDL atau dalam snake_case. Nama yang tidak ditemukan dalam IDL program akan mengembalikan 400.
  • discriminators: prefiks data instruksi, masing-masing sepanjang 1 hingga 8 byte berkode heksadesimal dengan prefiks 0x opsional. Gunakan ini untuk program tanpa IDL.
  • Atur salah satu daftar atau keduanya. Jika keduanya diatur, instruksi cocok jika merupakan salah satu instruksi bernama atau datanya diawali dengan salah satu diskriminator. Hilangkan keduanya untuk mencocokkan instruksi apa pun dari program tersebut.
  • Setiap daftar menerima paling banyak 50 entri per program.
Untuk mengonfirmasi nama instruksi program yang telah didekodekan, gunakan metode Parsed Streams describeProgram.

Cocokkan berdasarkan Mint

mints mencantumkan hingga 20 objek dalam bentuk { "mint": "...", "scope": "address" }, dengan setiap mint paling banyak satu kali. Transaksi cocok jika salah satu saldo token sebelum atau sesudah transaksi berasal dari salah satu mint tersebut, dalam scope mint itu. Saat Anda memindai dompet untuk suatu mint, atur tokenAccounts ke balanceChanged. Secara default, riwayat tidak menyertakan transaksi yang hanya menyentuh akun token milik dompet dan bukan dompet itu sendiri, termasuk banyak transfer token masuk.

Cocokkan SOL Native

SOL native tidak memiliki saldo token, sehingga pemindaian mencocokkannya berdasarkan lamport. Gunakan mint SOL native So11111111111111111111111111111111111111111 (wrapped SOL adalah So11111111111111111111111111111111111111112):
  • Dengan cakupan address, transaksi cocok jika jumlah lamport alamat yang dipindai berubah.
  • Dengan cakupan transaction, transaksi cocok jika jumlah lamport akun mana pun berubah.
Biaya yang dibebankan kepada pembayar biaya tidak dihitung. Setiap akun dibandingkan secara terpisah, sehingga lamport yang keluar dari akun dan kembali dalam transaksi yang sama tidak dihitung. Pencocokan SOL native mendeteksi SOL yang dibayarkan oleh program tanpa instruksi transfer, seperti penjualan Pump.fun. Pencocokan ini juga mendeteksi pergerakan insidental, seperti tip Jito dan sewa yang dibayar untuk atau dikembalikan dari akun.

Cakupan Kecocokan

Setiap program dan setiap mint menerima scope: Gunakan cakupan transaction jika alamat yang dipindai ada dalam transaksi, tetapi tidak ada dalam instruksi atau saldo yang Anda cocokkan. Misalnya, alamat hanya membayar biaya, menjalankan transaksi multisig, atau tidak tercantum dalam CPI peristiwa Anchor. Pemindaian mint token untuk transaksi yang juga memiliki USDC memerlukan cakupan transaction pada entri USDC. Kepemilikan akun token berasal dari owner yang dicatat pada setiap saldo token. Transaksi lama yang tidak mencatatnya hanya cocok dengan cakupan address pada address itu sendiri.

Bentuk Hasil

returnShape menentukan isi respons untuk kecocokan: signatures dan count mengabaikan limit dan rawTransaction. Keduanya mengembalikan setiap kecocokan dalam rentang yang dipindai oleh permintaan, sehingga hanya berhenti pada windowEnd, budget, atau deadline. Untuk menghitung seluruh riwayat, terus lakukan pemanggilan dengan paginationToken dan jumlahkan scan.matchedTransactions. Setiap item dalam data dengan returnShape: "signatures" terlihat seperti ini:
Ketiga bentuk memiliki biaya yang sama karena kredit bergantung pada halaman riwayat yang dipindai, bukan pada data yang dikembalikan.

Contoh Permintaan

Pembelian dan Penjualan Pump.fun

Pindai riwayat program Pump.fun untuk instruksi buy dan sell:
Pump.fun juga memiliki varian seperti buy_exact_sol_in, buy_v2, dan sell_v2. Cantumkan setiap nama instruksi yang ingin Anda cocokkan.

Pembelian dan Penjualan Satu Token

Untuk mendapatkan perdagangan Pump.fun dari satu token, pindai alamat mint token tersebut, bukan programnya. Riwayat mint hanya berisi aktivitas token tersebut, dan setiap instruksi pembelian atau penjualan mencantumkan mint sebagai akun, sehingga cocok dengan cakupan default address:
Untuk hanya menyimpan transaksi token yang juga melibatkan akun token USDC, tambahkan USDC dengan cakupan transaction. Dengan cakupan default address, saldo USDC harus dimiliki oleh alamat mint, sehingga tidak ada yang akan cocok:

Perdagangan Dompet pada Dua Program

Cantumkan beberapa program untuk mencocokkan panggilan ke salah satunya. Permintaan ini hanya mengembalikan tanda tangan perdagangan Pump.fun dan PumpSwap milik dompet:

Aktivitas USDC Dompet dalam Rentang Waktu

Pindai riwayat dompet untuk transaksi yang menyentuh USDC selama tahun 2025. tokenAccounts: "balanceChanged" menyertakan transfer yang hanya menyentuh akun token USDC milik dompet:
Untuk hanya mendapatkan jumlah transaksi yang cocok, tambahkan "returnShape": "count".

Pergerakan SOL Dompet

Pindai dompet untuk transaksi yang mengubah saldo SOL-nya, selain biaya yang dibayarkan, selama tahun 2025. Ini mencakup SOL yang dibayarkan oleh program tanpa instruksi transfer:

Paginasi dan Alasan Berhenti

scan.stoppedOn memberi tahu alasan permintaan berakhir: scan.scannedThrough memberikan slot dan waktu blok transaksi terakhir yang dipindai agar Anda dapat melaporkan progres dalam riwayat yang panjang. Pemindaian untuk instruksi yang langka dapat menghabiskan anggaran tanpa menemukan kecocokan. Respons kemudian memiliki array data kosong dan tetap mengembalikan paginationToken, jadi lanjutkan pemindaian:
Perulangan ini terus memindai hingga riwayat habis:
scan-pumpfun-trades.js
Pindai alamat dengan cakupan sesempit mungkin. Setiap transaksi dalam riwayat alamat dihitung terhadap anggaran. Jadi, semakin sedikit transaksi yang tidak terkait pada suatu alamat, semakin banyak kecocokan yang ditemukan oleh setiap permintaan.

Kredit

Setiap pemindaian dikenai biaya 10 kredit ditambah 1 kredit per halaman riwayat yang dipindai. Satu halaman memuat hingga 1.000 transaksi. Karena itu, pemindaian dengan anggaran default 10.000 transaksi dikenai biaya paling banyak 20 kredit. Halaman yang terpotong oleh tenggat tidak dipindai dan tidak dikenai biaya. Setiap respons melaporkan biayanya dalam scan.creditsCharged. Lihat Kredit untuk harga paket.

Kesalahan

Kesalahan tingkat permintaan mengembalikan isi JSON dengan pesan error, seperti {"error": "limit must be between 1 and 100"}. Isi dengan kolom yang tidak dikenal, seperti includeRawTransaction (gunakan rawTransaction), atau dengan mints berupa string biasa, bukan objek { "mint": "..." }, akan mengembalikan {"error": "invalid request payload"}.

Parameter Permintaan

string
wajib
Alamat yang riwayatnya dipindai.
object
wajib
Kriteria yang harus dicocokkan oleh transaksi. Atur programs, mints, atau keduanya. Jika keduanya diatur, transaksi harus cocok dengan keduanya.
array
Program yang akan dicocokkan, paling banyak 20, masing-masing paling banyak satu kali. Transaksi cocok jika memiliki instruksi dari salah satu program tersebut, baik tingkat atas maupun internal (CPI), dalam scope program tersebut.
string
wajib
Alamat program.
array
Nama instruksi dari versi IDL mana pun milik program, sesuai ejaan dalam IDL atau dalam snake_case. Paling banyak 50. Dapat digabungkan dengan discriminators.
array
Prefiks data instruksi, masing-masing sepanjang 1 hingga 8 byte berkode heksadesimal dengan prefiks 0x opsional. Paling banyak 50. Dapat digabungkan dengan instructions.
string
default:"address"
Instruksi program yang dihitung. address hanya menghitung instruksi dengan akun yang merupakan address, akun token yang dimiliki oleh address, atau akun token yang mint-nya adalah address, atau setiap instruksi jika address adalah program tersebut. transaction menghitung instruksi apa pun dari program dalam transaksi.
  • address
  • transaction
array
Mint yang akan dicocokkan, paling banyak 20, masing-masing paling banyak satu kali. Transaksi cocok jika salah satu saldo token sebelum atau sesudah transaksi berasal dari salah satu mint tersebut, dalam scope mint itu.
string
wajib
Alamat mint token. Mint SOL native So11111111111111111111111111111111111111111 mencocokkan perubahan lamport, bukan saldo token, tanpa menghitung biaya.
string
default:"address"
Saldo token mint yang dihitung. address hanya menghitung saldo yang akun tokennya adalah address atau dimiliki olehnya, atau yang mint-nya adalah address. Untuk SOL native, hanya perubahan jumlah lamport milik address yang dihitung. transaction menghitung saldo apa pun dari mint dalam transaksi. Untuk SOL native, perubahan jumlah lamport akun mana pun dihitung.
  • address
  • transaction
string
default:"transactions"
Isi respons untuk kecocokan: transactions (kecocokan terurai dalam data, hingga limit), signatures (signature, slot, transactionIndex, dan blockTime per kecocokan dalam data), atau count (tanpa data; scan.matchedTransactions adalah jumlah kecocokan). signatures dan count mengabaikan limit dan rawTransaction.
  • transactions
  • signatures
  • count
number
default:"100"
Jumlah maksimum kecocokan yang dikembalikan dengan bentuk transactions, dari 1 hingga 100.
object
Batas jumlah riwayat yang dipindai oleh satu permintaan.
number
default:"10000"
Jumlah maksimum transaksi yang dipindai dalam permintaan ini, dari 1 hingga 10.000.
string
Pindai transaksi sebelum tanda tangan ini.
string
Pindai transaksi setelah tanda tangan ini.
string
Kursor yang dikembalikan oleh pemindaian sebelumnya. Bentuknya adalah slot:transactionIndex.
string
default:"desc"
Urutan pemindaian riwayat dan pengembalian kecocokan.
  • asc
  • desc
string
default:"confirmed"
Tingkat komitmen yang digunakan untuk mengambil riwayat. processed tidak didukung.
  • confirmed
  • finalized
string
default:"succeeded"
Hasil eksekusi yang akan disertakan. Pemfilteran dilakukan sebelum pencocokan, sehingga transaksi yang dikecualikan tidak dihitung terhadap anggaran.
  • succeeded
  • failed
  • any
string
default:"none"
Menentukan apakah transaksi yang hanya merujuk pada akun token milik address, bukan address itu sendiri, disertakan: none tidak menyertakannya, balanceChanged menyertakan transaksi yang mengubah saldo akun token, dan all menyertakan semuanya. Gunakan balanceChanged saat Anda memindai dompet berdasarkan mint.
  • none
  • balanceChanged
  • all
number
Slot minimum tempat permintaan dapat dievaluasi.
string
default:"none"
Pengodean transaksi Solana asli yang dikembalikan sebagai rawTransaction pada setiap hasil yang berhasil, dalam bentuk getTransaction. Hanya berlaku untuk bentuk transactions.
  • none
  • json
  • jsonParsed
  • base64
object
Batas perbandingan slot. Setiap batas bersifat opsional.
number
Cocokkan nilai yang lebih besar dari nilai ini.
number
Cocokkan nilai yang lebih besar dari atau sama dengan nilai ini.
number
Cocokkan nilai yang lebih kecil dari nilai ini.
number
Cocokkan nilai yang lebih kecil dari atau sama dengan nilai ini.
object
Batas perbandingan waktu blok dalam detik Unix. Setiap batas bersifat opsional.
number
Cocokkan nilai yang lebih besar dari nilai ini.
number
Cocokkan nilai yang lebih besar dari atau sama dengan nilai ini.
number
Cocokkan nilai yang lebih kecil dari nilai ini.
number
Cocokkan nilai yang lebih kecil dari atau sama dengan nilai ini.

Otorisasi

api-key
string
query
wajib

Body

application/json

Isi permintaan untuk memindai riwayat suatu alamat guna menemukan transaksi yang cocok.

address
string
wajib

Alamat yang riwayatnya dipindai.

match
object
wajib

Kriteria yang harus dicocokkan oleh transaksi. Tetapkan programs, mints, atau keduanya. Jika keduanya ditetapkan, transaksi harus cocok dengan keduanya.

returnShape
enum<string>
default:transactions

Data yang dibawa respons untuk kecocokan: transactions (kecocokan yang telah diuraikan dalam data, hingga limit), signatures (signature, slot, transactionIndex, dan blockTime untuk setiap kecocokan dalam data), atau count (tanpa data; scan.matchedTransactions adalah jumlah kecocokan). signatures dan count mengabaikan limit dan rawTransaction.

Opsi yang tersedia:
transactions,
signatures,
count
limit
integer
default:100

Jumlah maksimum kecocokan yang dikembalikan dengan bentuk transactions, dari 1 hingga 100.

Rentang yang diperlukan: 1 <= x <= 100
budget
object

Batas jumlah riwayat yang dipindai oleh satu permintaan.

beforeSignature
string

Pindai transaksi sebelum tanda tangan ini.

afterSignature
string

Pindai transaksi setelah tanda tangan ini.

paginationToken
string

Kursor yang dikembalikan oleh pemindaian sebelumnya. Bentuknya adalah slot:transactionIndex.

sortOrder
enum<string>
default:desc

Urutan pemindaian riwayat dan pengembalian kecocokan.

Opsi yang tersedia:
asc,
desc
commitment
enum<string>
default:confirmed

Tingkat komitmen yang digunakan untuk mengambil riwayat. processed tidak didukung.

Opsi yang tersedia:
confirmed,
finalized
status
enum<string>
default:succeeded

Hasil eksekusi yang akan disertakan. Pemfilteran dilakukan sebelum pencocokan sehingga transaksi yang dikecualikan tidak dihitung dalam anggaran.

Opsi yang tersedia:
succeeded,
failed,
any
tokenAccounts
enum<string>
default:none

Menentukan apakah transaksi yang hanya mereferensikan akun token milik address, bukan address itu sendiri, harus disertakan: none mengecualikannya, balanceChanged menyertakan transaksi yang mengubah saldo akun token, dan all menyertakan semuanya. Gunakan balanceChanged saat Anda memindai dompet berdasarkan mint.

Opsi yang tersedia:
none,
balanceChanged,
all
minContextSlot
integer

Slot minimum tempat permintaan dapat dievaluasi.

rawTransaction
enum<string>
default:none

Pengodean transaksi Solana asli yang dikembalikan sebagai rawTransaction pada setiap hasil yang berhasil, dalam bentuk getTransaction. Hanya berlaku untuk bentuk transactions.

Opsi yang tersedia:
none,
json,
jsonParsed,
base64
slot
object

Batas perbandingan slot. Setiap batas bersifat opsional.

time
object

Batas perbandingan waktu blok dalam detik Unix. Setiap batas bersifat opsional.

Respons

Kecocokan dalam returnShape yang diminta dan ringkasan pemindaian. Hasil parsial tetap mengembalikan 200; lanjutkan dengan paginationToken selama token tersebut masih dikembalikan.

Kecocokan dalam returnShape yang diminta dan ringkasan pemindaian.

data
object

Hasil pengurai untuk setiap tanda tangan.

paginationToken
string

Kursor tempat pemindaian berikutnya dilanjutkan. Tidak ada jika pemindaian telah mencapai akhir riwayat atau jendela.

scan
object

Seberapa jauh pemindaian berlangsung dan alasan pemindaian berhenti.