NEU: Helius übernimmt Light Protocol
Einführung von tokenAccount-Filtern für getTransactionsForAddress
Blog/Updates

Einführung von Token-Account-Filtern für gTFA

MitgründerNick Pennie auf XNick Pennie auf LinkedIn
3 Min. Lesezeit

Letzten Oktober haben wir getTransactionsForAddress veröffentlicht, einen neuen Solana-RPC-Aufruf zum Abfragen historischer Daten, der getSignaturesForAddress und getTransaction in einer Methode vereint.

Heute freuen wir uns, bekannt zu geben, dass getTransactionsForAddress (gTFA) jetzt den Verlauf der Token-Transfers einer Wallet mit einem einzigen RPC-Aufruf abfragen kann. 

Mit der neuen tokenAccounts-Funktion kannst du Transaktionen für die zugehörigen Token-Accounts einer Wallet einschließen. Bisher wurden sie von gTFA und seinem Vorgänger getSignaturesForAddress ausgelassen.

Bisher mussten Entwickler zuerst getTokenAccountsByOwner und dann für jeden Token-Account getSignaturesForAddress abfragen. 

Das war langsam und teuer und erforderte oft Hunderte zusätzliche RPC-Aufrufe.

Jetzt genügt ein einziger Aufruf von getTransactionsForAddress mit tokenAccounts.

Das Problem

Auf Solana enthält deine Wallet die Token nicht direkt.

Stattdessen besitzt deine Wallet Associated Token Accounts (ATAs), in denen deine Token liegen. 

Wenn dir beispielsweise jemand USDC sendet, landet es in deinem USDC-Token-Account statt an deiner primären Wallet-Adresse.

Das verursacht große Probleme beim Abfragen des Transaktionsverlaufs einer Wallet:

Wenn du getSignaturesForAddress für eine Wallet aufrufst, erhältst du nur Transaktionen, die direkt auf diese Wallet-Adresse verweisen.

Token-Transfers, die mit deinen Token-Accounts interagieren, aber deine Wallet nicht erwähnen, erscheinen einfach nicht.

Die bisherige Lösung

Bisher mussten Entwickler eine umständliche Behelfslösung implementieren:

  1. getTokenAccountsByOwner aufrufen, um die Token-Accounts einer Wallet abzurufen
  2. getSignaturesForAddress für die Wallet selbst aufrufen
  3. getSignaturesForAddress für jeden einzelnen Token-Account aufrufen
  4. Alle Ergebnisse zusammenführen
  5. Duplikate entfernen, da viele Transaktionen mehrere Accounts betreffen
  6. Chronologisch sortieren

Dieser Ansatz ist aus mehreren Gründen problematisch:

1. Langsame Performance

Eine Wallet mit 50 Token-Accounts erfordert mindestens 51 RPC-Aufrufe, nur um einen vollständigen Verlauf zu erstellen. Professionelle Trader, intensive DeFi-Nutzer oder Memecoin-Hobbytrader können Hunderte Token-Accounts haben.

2. Ineffiziente Paginierung

Du möchtest die 20 neuesten Transaktionen abrufen? Du kannst nicht einfach 20 aus jeder Quelle abrufen und zusammenführen. Du musst alles abrufen, Duplikate entfernen, sortieren und erst dann die ersten 20 Transaktionen auswählen. 

Ohne zu viele Daten abzurufen, ist keine effiziente Paginierung möglich.

3. RPC-Kosten summieren sich

Jeder RPC-Aufruf verursacht Overhead. Wenn dieser Overhead pro Nutzeranfrage mit mehr als 100 Aufrufen multipliziert wird, steigen die Kosten schnell, besonders bei großer Skalierung.

Die Lösung

Mit dem neuen tokenAccounts-Filter kannst du den vollständigen Verlauf einer Wallet mit einer einzigen RPC-Anfrage abrufen:

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

Das ist alles. Ein Aufruf. Der vollständige Verlauf.

Filteroptionen

Der tokenAccounts-Filter bietet drei Optionen: none, balanceChanged und all.

none (Standard)

Wenn der tokenAccounts-Filter auf none gesetzt ist, müssen Transaktionen auf die Wallet-Adresse verweisen.

balanceChanged (empfohlen)

Wenn balanceChanged angewendet wird, verweisen Transaktionen auf die Wallet-Adresse oder ändern das Guthaben eines Token-Accounts, der der Wallet gehört.

all

Wenn du tokenAccounts auf all setzt, müssen Transaktionen auf die Adresse der Wallet oder eines Token-Accounts verweisen, der der Wallet gehört.

Anwendungsfälle

Diese neue Funktion ist unverzichtbar für:

  • Wallets, die den vollständigen Transaktionsverlauf anzeigen
  • Portfolio-Tracker, die jede Token-Bewegung erfassen müssen
  • Steuersoftware, die Gewinne und Verluste über alle Token hinweg berechnet
  • Analyse-Dashboards, die Nutzeraktivitäten anzeigen

Jetzt loslegen

Die tokenAccounts-Funktion ist ab sofort verfügbar.

Füge einfach tokenAccounts: balanceChanged (oder all) zu deinem Filterobjekt hinzu und schon kann es losgehen!

Du verwendest getTransactionsForAddress noch nicht?

Sieh dir unsere Dokumentation und SDKs an, um mehr zu erfahren und loszulegen.

Helius abonnieren

Bleib bei der Solana-Entwicklung auf dem Laufenden und erhalte Updates, wenn wir neue Beiträge veröffentlichen