Abrufen von Token-Übertragungsdaten von einer Adresse

Ich möchte Token-Übertragungsdaten von einer Adresse über die Rest-API erhalten

Nehmen Sie zum Beispiel diese Adresse: https://etherscan.io/address/0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98#tokentxns

(Etherscan beantwortet keine Supportfragen zu ihrer API, „weil sie kostenlos ist und so präsentiert wird“, und sie scheinen keinen API-Endpunkt zu haben, um dieselben Daten anzuzeigen.)

Dieser Link zeigt alle Token-Übertragungen für diese Adresse.

Ich möchte alle Token-Transfers von X für diese Adresse sehen. X ist ein Token meiner Wahl.

Was ist damit verbunden, diese Daten über die API zu erhalten?

Antworten (1)

Wie wäre es mit der Verwendung der Ereignisprotokoll- API von Etherscan ?

https://api.etherscan.io/api?module=logs&action=getLogs
    &fromBlock=0
    &toBlock=latest
    &address=[Token Contract Address]
    &topic0=0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
    &topic1=[From Address, padded to 32 bytes - optional]
    &topic2=[To Address, padded to 32 bytes - optional]

Oben topic0ist die Signatur einer ERC20- TransferVeranstaltung.

Der folgende Link zeigt Ihnen beispielsweise alle Sendetransaktionen von LLL-Token von meinem Konto (zwei Transaktionen).

Hier wird Ihr X(der Token) durch die Vertragsadresse des Tokens dargestellt, die für die verschiedenen Tokens leicht herauszufinden ist.

Wie immer gibt Ihnen die API maximal 10000 Ergebnisse zurück, daher müssen Sie möglicherweise fromBlockund toBlockentsprechend verwalten.

Dies ist aufschlussreich, warum erhalte ich in Ihrem Beispiel dieselbe API-Antwort, unabhängig davon, ob Thema1 vorhanden ist oder nicht. Ich würde auch gerne die Beträge der Überweisung wissen, ich vermute, dass dies mehrere Anrufe sein werden
"Warum erhalte ich in Ihrem Beispiel dieselbe API-Antwort, unabhängig davon, ob Thema1 vorhanden ist oder nicht?" - weil ich die einzige Person bin, die bisher einen dieser Token gesendet hat. Entschuldigung, schlechtes Beispiel :-) "Ich möchte auch die Beträge der Überweisung wissen" - das ist das dataFeld der JSON-Antwort; kein mehrfacher Anruf erforderlich.
Okay, es ist also eine Hex-Dezimal-Konvertierung im Datenfeld. Woher weiß ich, wo die Dezimalstelle für eine teilbare Vertragseinheit ist?
"Woher weiß ich, wo die Dezimalstelle für eine teilbare Vertragseinheit steht?" - Sie müssen die (konstante) decimals()Funktion für den Token-Vertrag aufrufen. Dadurch wird die Anzahl der für das Token festgelegten Dezimalstellenunterteilungen zurückgegeben, wenn es ERC20-konform ist. In meinem Token ist es 0; Viele Token verwenden 18 wie Ether selbst, so dass 10^18 Token = 1 ganze Einheit. Nur als Präsentationssache wichtig: Token-Transfers etc. wissen nichts davon.
Ja, ich verstehe, ich brauche auch Dezimalzahlen für ein Präsentationsproblem, wie alles andere außerhalb der Kette, lol.
@benjaminion, wie man die Signatur für ein bestimmtes Ereignis erhält und wie man die Daten entschlüsselt: 0x00000000000000000000000000000000000000000000000000000000000032
Können Sie erklären, was ist: Signatur eines ERC20-Transferereignisses.
@EnZo - Die Signatur eines ERC20-Übertragungsereignisses ist keccak256 ("Transfer (Adresse, Adresse, uint256)") = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. Dieses Format ist Teil der Ethereum ABI-Spezifikation (siehe topics[0]).
gibt es das überhaupt mit web3 1.0.0 beta @benjaminion ?
Ich bin mir auch nicht sicher, wie ich den Wert "data" entschlüsseln soll. Auf der bscscan-Website wird ein Array angezeigt. Wie kann die Zeichenfolge in den Daten als Array zurückgegeben werden?