Obtener datos de transferencia de tokens desde una dirección

Me gustaría obtener datos de transferencia de tokens de una dirección a través de Rest API

Por ejemplo, tome esta dirección: https://etherscan.io/address/0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98#tokentxns

(Etherscan no responde preguntas de soporte sobre su API "porque es gratis y se presenta tal cual", y no parece tener un punto final de API para mostrar los mismos datos).

Ese enlace muestra todas las transferencias de tokens para esa dirección.

Me gustaría ver todas las transferencias de tokens de X para esa dirección. X es un token de mi elección.

¿Qué implica obtener esos datos a través de API?

Respuestas (1)

¿Qué tal usar la API de registro de eventos de 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]

En lo anterior topic0se encuentra la firma de un Transferevento ERC20.

Por ejemplo, el siguiente enlace le muestra todas las transacciones de envío de tokens LLL desde mi cuenta (dos transacciones).

Aquí, su X(el token) está representado por la dirección del contrato del token, que es bastante fácil de averiguar para los distintos tokens.

Como siempre, la API le devolverá un máximo de 10000 resultados, por lo que es posible que deba administrar fromBlocky en toBlockconsecuencia.

esto es esclarecedor, ¿por qué obtengo la misma respuesta de API, ya sea que topic1 esté allí o no, en su ejemplo? También me gustaría saber los montos de la transferencia, supongo que serán varias llamadas.
"¿Por qué obtengo la misma respuesta de la API, ya sea que el tema 1 esté allí o no, en su ejemplo?" - porque soy la única persona que ha enviado alguno de estos tokens. Lo siento, mal ejemplo :-) "También me gustaría saber los montos de la transferencia": este es el datacampo de la respuesta JSON; no se necesita una llamada múltiple.
Bien, entonces es una conversión hexadecimal a decimal en el campo de datos. ¿Cómo sé dónde está el decimal para una unidad de contrato divisible?
"¿Cómo sé dónde está el decimal para una unidad de contrato divisible?" - Debe llamar a la función (constante) decimals()en el contrato de token. Esto devolverá la cantidad de divisiones de lugares decimales establecidas para el token, si es compatible con ERC20. En mi ficha es 0; muchos tokens usan 18 como el propio Ether, de modo que 10 ^ 18 tokens = 1 unidad completa. Solo es importante como un problema de presentación: las transferencias de tokens, etc. no saben nada sobre esto.
sí, entiendo, también necesito decimales para un problema de presentación, como cualquier otra cosa fuera de la cadena jajaja.
@benjaminion cómo obtener la firma para un evento específico y cómo decodificar los datos: 0x0000000000000000000000000000000000000000000000000000000000000032
¿Podría explicar qué es: la firma de un evento de transferencia ERC20?
@EnZo: la firma de un evento de transferencia ERC20 es keccak256 ("Transfer (dirección, dirección, uint256)") = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. Este formato es parte de la especificación Ethereum ABI (ver topics[0]).
¿Hay alguna forma de que esto se pueda hacer con web3 1.0.0 beta @benjaminion?
Tampoco estoy seguro de cómo decodificar el valor de "datos". En el sitio web de bscscan muestra una matriz. ¿Cómo se puede devolver la cadena en los datos como una matriz?