matchMints milik LaserStream memungkinkan langganan transaksi gRPC mencocokkan mint token dalam saldo token sebelum/sesudah transaksi selain kunci akunnya.
Masukkan mint ke accountInclude, tetapkan matchMints: true, dan Anda akan menerima setiap transaksi yang menyentuh token tersebut: transfer, swap, mint-to, pembakaran, dan penutupan akun.
matchMints hanya tersedia di LaserStream gRPC. Fitur ini belum tersedia di LaserStream WebSocket.Masalahnya: filter akun biasa melewatkan sebagian besar transfer token
Saat memantau token denganaccountInclude: [mint], Anda hanya mencocokkan transaksi jika pubkey mint muncul dalam kunci akun transaksi.
Instruksi SPL Transfer klasik tidak pernah mereferensikan mint. Instruksi tersebut hanya menyebut akun token sumber, akun token tujuan, dan pemilik, sehingga filter akun biasa melewatkan operasi yang paling umum pada token apa pun.
Hanya instruksi yang meneruskan mint secara langsung yang akan cocok, seperti MintTo, Burn, TransferChecked, dan swap yang akun programnya menyertakan mint. Satu-satunya solusi alternatif sebelumnya adalah melakukan streaming semua transaksi dan memeriksa sendiri saldo token setiap transaksi.
Cara kerja matchMints
Tetapkan matchMints: true pada filter transaksi, lalu LaserStream akan membuat kumpulan mint dari preTokenBalances dan postTokenBalances milik transaksi.
Daftar accountInclude, accountExclude, dan accountRequired Anda kemudian dicocokkan dengan keduanya, yaitu kunci akun dan kumpulan mint tersebut. Mint memenuhi syarat jika akun token apa pun untuk mint tersebut muncul di salah satu daftar saldo, terlepas dari apakah saldonya berubah.
Flag ini bersifat opsional, dan filter yang tidak menyertakannya akan berperilaku persis seperti sebelumnya. Karena itu, Anda dapat menambahkannya ke langganan yang sudah ada tanpa mengubah data yang telah diterima langganan tersebut. Mint SPL dan Token-2022 dapat digunakan karena kedua program mengisi saldo token sebelum/sesudah.
Semantik
Logika filter lainnya tidak berubah:
- Predikat dalam satu filter bernama tetap digabungkan dengan AND (
vote,failed,signature, dan daftar akun). - Beberapa filter bernama tetap digabungkan dengan OR.
- Nilai dalam satu daftar menggunakan OR (kecuali
accountRequired, yang mengharuskan semuanya cocok). - Transaksi tanpa saldo token kembali menggunakan pencocokan berdasarkan kunci saja.
matchMintstidak pernah menambahkan transaksi yang tidak memiliki aktivitas token. matchMintssaja tidak membatasi stream. Anda tetap memerlukan setidaknya satu kunci atau mint dalam daftar akun (atau predikat pembatas lainnya) agar filter diterima.
LaserStream mencocokkan mint berdasarkan pubkey yang persis sama. Tidak ada mode “hanya saldo yang berubah” untuk mint, tidak seperti
tokenAccounts: "balanceChanged".Menggunakannya di LaserStream gRPC
TambahkanmatchMints: true ke filter transaksi dalam SubscribeRequest Anda dan masukkan mint ke accountInclude. Contoh ini melakukan streaming setiap transaksi USDC di mainnet:
- TypeScript
- Rust
- Go
Memerlukan
helius-laserstream versi 0.8.5 atau yang lebih baru. Kolom ini juga diterima sebagai match_mints.laserstream-core-proto 11.3.0 atau yang lebih baru, atau .proto yang disertakan dalam repositori SDK).
match_mints adalah kolom 32 dari SubscribeRequestFilterTransactions. Klien yang dihasilkan dari proto Triton upstream secara diam-diam menghapus kolom yang tidak dikenal, sehingga flag tidak berpengaruh sampai Anda membuat ulang klien tersebut.
Lihat referensi Permintaan Berlangganan untuk setiap kolom filter transaksi.
Gabungkan dengan tokenAccounts untuk memantau satu token bagi satu dompet
matchMints dapat digabungkan dengan ekspansi tokenAccounts, sehingga satu filter dapat mencocokkan pemilik dompet dan mint secara bersamaan.
Contoh ini melakukan streaming setiap perubahan pada saldo USDC milik satu dompet:
accountInclude ditambah tokenAccounts menemukan transaksi saat saldo token dompet berubah. accountRequired ditambah matchMints mempersempit hasil tersebut menjadi transaksi yang melibatkan USDC.
Membaca hasil yang cocok
Setelah transaksi cocok melalui mint, cari mint tersebut dimeta.preTokenBalances[].mint dan meta.postTokenBalances[].mint. Untuk transfer biasa, mint umumnya tidak ada dalam kunci akun, jadi jangan mencarinya di sana.
Bandingkan perbedaan preTokenBalances dengan postTokenBalances pada accountIndex yang sama untuk melihat jumlah token yang berpindah dan pemilik asal serta tujuannya.
Panduan Pemantauan Transaksi membahas struktur transaksi secara mendetail.
Batasan dan catatan
- Mint dimasukkan ke daftar
accountInclude,accountExclude, danaccountRequiredyang sama dengan kunci akun, sehingga mint diperhitungkan dalam batas paket per daftar yang sama. Tidak ada batas mint terpisah. - Biaya pencocokan tidak meningkat seiring jumlah mint yang Anda cantumkan. Performa untuk 100 mint dan 100.000 mint sama, dan pelanggan yang tidak menetapkan flag tidak dikenai biaya tambahan.
- Pemutaran ulang historis mengikuti
matchMints, sehingga langganan pemutaran ulang mengembalikan transaksi yang sama seperti yang akan dikembalikan stream langsung. - Jika Anda memasang filter terkompresi (cuckoo) ke langganan transaksi,
matchMintsjuga akan menguji kumpulan mint terhadap filter tersebut, selain kunci akun. matchMintsaktif di semua wilayah LaserStream gRPC, baik mainnet maupun devnet. Saat ini, fitur tersebut belum tersedia di LaserStream WebSocket.- Versi minimum SDK: JavaScript/TypeScript
helius-laserstream0.8.5, Rusthelius-laserstream0.6.4, Gogo/v0.3.0.
Terkait
Token Account (ATA) Filtering
Cocokkan transaksi yang menyentuh akun token milik suatu dompet
Transaction Monitoring
Strategi pemfilteran lengkap dan contoh yang dapat dijalankan melalui gRPC
Subscribe Request Reference
Setiap kolom filter transaksi, termasuk
matchMintsHistorical Replay
Isi ulang aktivitas token hingga 48 jam dengan filter yang sama