Mengapa perlu bermigrasi?
Enhanced Transactions API adalah produk lama dalam mode pemeliharaan: produk ini masih berfungsi, tetapi tidak lagi menerima jenis parser atau pengembangan fitur baru. Penerusnya adalah Parsed Events, yang mendekode instruksi melalui katalog IDL yang juga mendukung Parsed Streams. Perbedaannya terletak pada cara transaksi didekode. Enhanced Transactions mengklasifikasikan transaksi ke dalam salah satu daftar tetap jenis peristiwa (TRANSFER, SWAP, NFT_SALE, …) dan menampilkan ringkasan siap pakai untuk jenis yang dikenalnya. Parsed Events mendekode setiap instruksi berdasarkan IDL milik program itu sendiri — lebih dari 3.600 program — menjadi argumen dan akun bernama, lalu menyusun ringkasan di atasnya:
Parsed Events tersedia secara umum di semua paket, termasuk Free, dengan biaya 10 kredit per permintaan. Enhanced Transactions tetap berfungsi dalam mode pemeliharaan sehingga Anda dapat bermigrasi sesuai kebutuhan.
Pemetaan titik akhir
Kedua metode Parsed Events merupakan permintaanPOST ke https://mainnet.helius-rpc.com, yang diautentikasi dengan parameter kueri api-key yang sudah Anda gunakan:
Titik akhir riwayat memindahkan semua masukan dari parameter string kueri ke isi JSON. Isi permintaan menolak bidang yang tidak dikenal sehingga kesalahan ketik langsung menghasilkan kegagalan, bukan diabaikan secara diam-diam.
Sebelum dan sesudah
Tugas yang sama — mengambil riwayat terurai untuk dompet — di kedua API:Pemetaan parameter
Parse Transactions
POST /v0/transactions → POST /v1/parsed-events/transactions
Opsi baru tanpa padanan lama:
rawTransaction mengembalikan transaksi Solana asli bersama hasil yang diurai, yang dikodekan sebagai json, jsonParsed, atau base64.
Riwayat Transaksi
GET /v0/addresses/{address}/transactions → POST /v1/parsed-events/transaction-history. Setiap parameter kueri menjadi bidang isi JSON:
Tiga nilai bawaan berubah dalam proses ini:
- Nilai bawaan
limitmenjadi 100, bukan 10. - Nilai bawaan
commitmentmenjadiconfirmed, bukanfinalized;processedtidak didukung. sortOrdermempertahankan nilaiasc/descyang sama, dengandescsebagai nilai bawaan.
paginationToken dari respons sebelumnya, bukan beforeSignature — lihat Sederhanakan paginasi di bawah.
Parameter lama type tidak memiliki padanan langsung dalam Peristiwa Terurai. Untuk memfilter di sisi server, gunakan endpoint pemindaian (POST /v1/parsed-events/scan), yang hanya mengembalikan transaksi yang memanggil program atau instruksi dalam match.programs, atau mengakses mint token dalam match.mints. Jika tidak, lakukan pemfilteran di sisi klien pada parsed.summary.type (swap, transfer, add_liquidity, …), atau pada instruksi yang telah didekode, yang lebih presisi daripada jenis tetap lama. Untuk feed real-time khusus jenis, Aliran Terurai melakukan pemfilteran di sisi server pada tingkat instruksi.
Pemetaan bidang respons
Enhanced Transactions menampilkan array datar berisi transaksi yang diperkaya. Parsed Events membungkus setiap hasil dalam sebuah amplop —{ signature, parserStatus, parsed } — dan respons riwayat membungkus array dalam objek halaman dengan paginationToken. Bidang yang diurai dipetakan sebagai berikut:
Perubahan terbesar adalah bidang baru tanpa padanan lama:
parsed.instructions[] memuat setiap instruksi tingkat atas dan internal dalam urutan eksekusi, dengan decoded.args dan decoded.accounts yang dinamai berdasarkan IDL program. Jika Enhanced Transactions memberi Anda satu ringkasan peristiwa per transaksi, Parsed Events memberi Anda ringkasan serta daftar lengkap instruksi yang telah didekode. Lihat Respons Terurai untuk setiap bidang.
Langkah-langkah migrasi
1
Swap the endpoints
Arahkan panggilan Parse Transactions ke
POST /v1/parsed-events/transactions dan panggilan riwayat ke POST /v1/parsed-events/transaction-history. Host yang sama, parameter kueri api-key yang sama. Permintaan riwayat berubah dari GET dengan parameter kueri menjadi POST dengan isi JSON — pindahkan setiap parameter sesuai pemetaan di atas.2
Update the response handling
Buka amplop baru: periksa
parserStatus === "OK", lalu baca bidang dari parsed, bukan dari tingkat teratas. Ubah nama timestamp menjadi blockTime, baca description dan type dari summary (dengan menangani null), lalu bagi rawTokenAmount dengan 10^decimals di tempat kode lama membaca tokenAmount.3
Replace type filtering
Jika kode lama meneruskan
type=..., filter item yang ditampilkan di sisi klien berdasarkan parsed.summary.type atau parsed.instructions[] — misalnya, “instruksi dengan programId adalah Jupiter dan instructionName adalah route” menggantikan type=SWAP dengan sesuatu yang benar-benar dapat Anda verifikasi. Jika filter jenis digunakan untuk menyediakan umpan waktu nyata, pindahkan konsumennya ke Parsed Streams, yang melakukan filter di sisi server pada tingkat instruksi.4
Simplify pagination
Ganti perulangan kursor Perulangan berakhir saat
before-signature dengan paginationToken:paginationToken tidak ada. Galat pencarian runtime lama (“Gagal menemukan peristiwa dalam periode pencarian”) beserta penanganan tanda tangan kelanjutannya sepenuhnya hilang — hapus kode tersebut.5
Verify against the old output
Untuk alamat sampel, ambil halaman yang sama dari kedua API dan bandingkan kumpulan tanda tangan, biaya, serta jumlah transfer. Kemudian lakukan deployment dan hapus jalur kode lama. Enhanced Transactions tetap berfungsi selama Anda bermigrasi — tidak ada penghentian paksa.
Perbedaan perilaku yang perlu ditinjau
- Default commitment. Riwayat secara default menggunakan
confirmed, sedangkan endpoint lama secara default menggunakanfinalized. Teruskancommitment: "finalized"secara eksplisit jika pipeline Anda bergantung pada finalitas.processedtidak didukung. - Kesalahan per item. Tanda tangan yang tidak dapat diuraikan tidak lagi menyebabkan permintaan gagal — tanda tangan tersebut dikembalikan sebagai item dengan
parserStatus: "ERROR"danparserError. Tangani kesalahan tersebut per item, bukan per permintaan. - Cakupan ringkasan.
summaryadalahnulluntuk transaksi yang tidak memiliki tindakan tingkat transaksi yang dikenali. API lama mengembalikantype: "UNKNOWN"dalam kasus tersebut; API baru tetap memberikan setiap instruksi yang telah didekode agar dapat Anda gunakan. - Akses dan biaya. Parsed Events tersedia di semua paket dan dikenai biaya 10 kredit per permintaan, turun dari 100 kredit untuk Enhanced Transactions.
Biarkan agen AI melakukan migrasi
Jika Anda menggunakan Claude Code, Cursor, atau agen pemrograman lainnya, tempelkan prompt di bawah ke sesi agen repositori Anda. Agen tersebut akan menemukan lokasi pemanggilan Enhanced Transactions dan menulis ulang pemanggilan itu.Langkah berikutnya
Parsed Events Quickstart
Urai transaksi pertama Anda, ambil riwayat alamat, dan telusuri hasil halaman demi halaman.
Parsed Response
Referensi bidang untuk transaksi, transfer, dan instruksi yang telah diurai.
Parsed Streams
Pendekodean yang sama secara waktu nyata melalui WebSocket, dengan filter di sisi server.
getTransactionsForAddress
Riwayat transaksi mentah dengan dukungan akun token dan filter di sisi server.