Langsung ke konten utama

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 permintaan POST 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 limit menjadi 100, bukan 10.
  • Nilai bawaan commitment menjadi confirmed, bukan finalized; processed tidak didukung.
  • sortOrder mempertahankan nilai asc/desc yang sama, dengan desc sebagai nilai bawaan.
Untuk paginasi, sebaiknya gunakan 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 before-signature dengan paginationToken:
Perulangan berakhir saat 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 menggunakan finalized. Teruskan commitment: "finalized" secara eksplisit jika pipeline Anda bergantung pada finalitas. processed tidak didukung.
  • Kesalahan per item. Tanda tangan yang tidak dapat diuraikan tidak lagi menyebabkan permintaan gagal — tanda tangan tersebut dikembalikan sebagai item dengan parserStatus: "ERROR" dan parserError. Tangani kesalahan tersebut per item, bukan per permintaan.
  • Cakupan ringkasan. summary adalah null untuk transaksi yang tidak memiliki tindakan tingkat transaksi yang dikenali. API lama mengembalikan type: "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.
Prompt ini mandiri — agen tidak memerlukan akses ke halaman ini. Untuk dokumentasi yang siap digunakan agen, pencarian MCP, dan keterampilan, lihat Helius untuk agen AI.

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.