BARU: Helius mengakuisisi Light Protocol
Memperkenalkan filter tokenAccount untuk getTransactionsForAddress
Blog/Pembaruan

Memperkenalkan Filter Akun Token untuk gTFA

Salah Satu PendiriNick Pennie di XNick Pennie di LinkedIn
Bacaan 3 menit

Oktober lalu, kami merilis getTransactionsForAddress, panggilan RPC Solana baru untuk mengkueri data historis yang menggabungkan getSignaturesForAddress dan getTransaction dalam satu metode.

Hari ini, kami dengan senang hati mengumumkan bahwa getTransactionsForAddress (gTFA) kini dapat mengkueri riwayat transfer token dompet hanya dengan satu panggilan RPC. 

Fitur tokenAccounts baru memungkinkan pengguna menyertakan transaksi untuk Akun Token Terkait milik dompet—yang sebelumnya tidak disertakan dalam gTFA dan pendahulunya, getSignaturesForAddress.

Sebelumnya, developer harus mengkueri getTokenAccountsByOwner, lalu getSignaturesForAddress untuk setiap akun token. 

Proses ini lambat dan mahal, serta sering kali memerlukan ratusan panggilan RPC tambahan.

Sekarang, Anda hanya perlu melakukan satu panggilan ke getTransactionsForAddress dengan tokenAccounts.

Masalahnya

Di Solana, dompet Anda sebenarnya tidak menyimpan token secara langsung.

Sebaliknya, dompet Anda memiliki Associated Token Accounts (ATA), dan akun token tersebut menyimpan token Anda. 

Misalnya, saat seseorang mengirimkan USDC kepada Anda, token tersebut masuk ke akun token USDC Anda, bukan ke alamat utama dompet Anda.

Hal ini menimbulkan masalah besar saat mengkueri riwayat transaksi dompet:

Saat Anda memanggil getSignaturesForAddress pada dompet, Anda hanya mendapatkan transaksi yang secara langsung merujuk alamat dompet tersebut.

Transfer token yang berinteraksi dengan akun token Anda—tetapi tidak menyebut dompet Anda—tidak akan muncul.

Solusi Sementara

Sebelum hari ini, developer harus menerapkan solusi sementara yang merepotkan:

  1. Panggil getTokenAccountsByOwner untuk mendapatkan akun token milik dompet
  2. Panggil getSignaturesForAddress untuk dompet itu sendiri
  3. Panggil getSignaturesForAddress untuk setiap akun token
  4. Gabungkan semua hasil
  5. Hapus duplikat (banyak transaksi melibatkan beberapa akun)
  6. Urutkan secara kronologis

Pendekatan ini bermasalah karena beberapa alasan:

1. Performa lambat

Dompet dengan 50 akun token memerlukan lebih dari 51 panggilan RPC hanya untuk menyusun riwayat lengkap. Trader profesional, pengguna berat DeFi, atau trader memecoin rekreasional dapat memiliki ratusan akun token.

2. Paginasi tidak efisien

Ingin mendapatkan 20 transaksi terbaru? Anda tidak bisa sekadar mengambil 20 transaksi dari setiap sumber lalu menggabungkannya—Anda harus mengambil semuanya, menghapus duplikat, mengurutkannya, lalu mengambil 20 transaksi pertama. 

Tidak ada cara untuk melakukan paginasi secara efisien tanpa mengambil data secara berlebihan.

3. Biaya RPC terus bertambah

Setiap panggilan RPC memiliki overhead. Mengalikan overhead tersebut dengan lebih dari 100 panggilan per permintaan pengguna akan cepat menjadi mahal, terutama dalam skala besar.

Solusinya

Dengan filter tokenAccounts baru, Anda bisa mendapatkan riwayat lengkap dompet dalam satu permintaan RPC:

Kode
{
    "jsonrpc": "2.0",
    "id": "helius-example",
    "method": "getTransactionsForAddress",
    "params": [
        "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
        {
            "filters": {
                "tokenAccounts": "all"
            },
            "sortOrder": "asc",
            "limit": 100
        }
    ]
}

Selesai. Satu panggilan. Riwayat lengkap.

Opsi Pemfilteran

Filter tokenAccounts menyediakan tiga opsi: none, balanceChanged, dan all.

none (default)

Saat filter tokenAccounts diatur ke none, transaksi harus merujuk alamat dompet.

balanceChanged (direkomendasikan)

Saat balanceChanged diterapkan, transaksi akan merujuk alamat dompet atau mengubah saldo akun token milik dompet tersebut.

all

Mengatur tokenAccounts ke all mengharuskan transaksi merujuk alamat dompet atau akun token milik dompet tersebut.

Kasus Penggunaan

Fitur baru ini penting untuk:

  • Dompet yang menampilkan riwayat transaksi lengkap
  • Pelacak portofolio yang memerlukan setiap pergerakan token
  • Perangkat lunak pajak yang menghitung keuntungan/kerugian di seluruh token
  • Dasbor analitik yang menampilkan aktivitas pengguna

Mulai Gunakan

Fitur tokenAccounts kini tersedia.

Cukup tambahkan tokenAccounts: balanceChanged (atau all) ke objek filter Anda, dan semuanya siap digunakan!

Belum menggunakan getTransactionsForAddress?

Baca dokumentasi dan SDK kami untuk mempelajari lebih lanjut dan mulai menggunakannya.

Berlangganan Helius

Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan