¿Cómo obtener transacciones históricas en Polygon?
Autor: Isaac Lau
Las soluciones de escalado Layer 2 de Ethereum, como Polygon, les han permitido a los desarrolladores aprovechar costos de transacción bajos y tiempos de confirmación mucho más rápidos. Sin embargo, esto introduce un nuevo desafío para los devs: cómo procesar y almacenar grandes volúmenes de datos de blockchain. Tradicionalmente, los desarrolladores tenían que levantar, administrar e indexar sus propios nodos para construir bases de datos. Esto dejaba a los desarrolladores limitados a una solución costosa y lenta que, en última instancia, restringe el conjunto de funciones de sus apps, sin importar si están desplegadas en soluciones Layer 1 o Layer 2.
Si bien incorporar consultas históricas en apps ha sido tradicionalmente complicado y consume mucho tiempo, Alchemy Transfers API en Polygon les permite a los desarrolladores obtener detalles de transacciones de Polygon, desde el mismo inicio, en una sola solicitud.
En este tutorial, veremos un ejemplo de cómo, con solo unas pocas líneas de código, tu dApp de Polygon puede integrar transacciones históricas.
Vista previa del código 👀
Antes de adentrarnos en Alchemy Transfers API en Polygon, aclaremos los 3 tipos de transferencias que vemos on-chain (nota: la Polygon Transfers API solo admite transferencias de tokens)
Tipos de transferencias:
1. Transferencias externas de MATIC
Son transacciones de Polygon de primer nivel que ocurren con una dirección "from" que es una dirección externa (creada por un usuario). Las direcciones externas tienen claves privadas y son accedidas por usuarios.
Las transferencias externas actualmente no son compatibles con Alchemy Transfers API en Polygon
2. Transferencias de tokens
Event logs para transferencias de ERC20 (tokens fungibles), ERC721 (NFTs) y ERC1155 (tokens híbridos fungibles y no fungibles).
3. Transferencias internas de eth
Son transferencias que ocurren cuando la fromAddress es una dirección interna (de contrato inteligente). (ej.: un contrato inteligente que llama a otro contrato inteligente, o un contrato inteligente que llama a otra dirección externa).
Las transferencias internas actualmente no son compatibles con Alchemy Transfers API en Polygon
Para más información sobre los parámetros de la API y las respuestas JSON, lee Alchemy Transfers API.
Cómo entender Alchemy Transfers API en Polygon
En este ejemplo, estamos intentando consultar y encontrar la transferencia de esta transacción. Podemos ver en Polyscan que se transfirieron ~12,000 USDT desde 0x5350e1068f0e138ff306990b16fa4910d970c692 hacia 0x9d2b758e3ffd2569c6956676fae7f8b71a53ffb5.

(Si quieres saltar directo al código, haz un fork del script inicial [https://github.com/pileofscraps/historical_transactions_polygon_scripts] y sigue los pasos)
Para usar la Transfers API y rastrear la transferencia de USDT, necesitamos algunos datos clave que nos ayuden a acotar nuestra búsqueda. Formateamos esta información de la solicitud en un objeto JSON de la siguiente manera:
- From Block y To Block
Podemos reducir el tiempo que tarda la API en devolver nuestra respuesta JSON limitando los números de bloque de inicio y fin en los que intentamos buscar.
Nuestra transacción ocurre en el bloque 23876472, así que ajustamos nuestra búsqueda a un pequeño margen alrededor de este número de bloque.
El objeto JSON nos permite usar un string hexadecimal o ingresar directamente el número de bloque. En este caso, usamos hexadecimales, así que ingresamos 0x16C5376 para unfromBlock de 23876470 y 0x16C537A para un toBlock
2. Direcciones To y from
Las direcciones To y From representan hacia dónde se envió la transacción y de dónde se originó, respectivamente.
En nuestro ejemplo, la dirección To es 0x9d2b758e3ffd2569c6956676fae7f8b71a53ffb5 y la dirección From es 0x5350e1068f0e138ff306990b16fa4910d970c692.
3. Dirección de contrato
La dirección de contrato es la dirección que denota el contrato específico ERC20, ERC721 o ERC1155 que buscamos. En nuestro ejemplo, el contrato ERC20 para USDT en Polygon es 0xc2132d05d31c914a87c6611c10748aeb04b58e8f.
Reuniendo esta información, ahora podemos usar la herramienta Composer de Alchemy para obtener resultados que incluyan nuestra transacción objetivo.
¡Visita este Alchemy Composer Example!

Cómo probar Alchemy Transfers API en Polygon con Python
Ahora, para probar la Alchemy Transfers API consultamos la misma transferencia; esta vez, sin embargo, ¡usamos código! Si quieres seguir los pasos, haz un fork del script inicial.
1. Declaraciones de import:
Para probar Alchemy Transfers API, comenzamos con algunas declaraciones de import para importar los módulos que usaremos más adelante.
Si no tienes instalados alguno de estos módulos en tu entorno de Python, asegúrate de ejecutar los siguientes comandos pip en tu entorno de Python.
2. Insertar la clave de Alchemy para acceder a la API:
Si todavía no tienes una, primero deberás crear una cuenta en Alchemy. ¡La versión gratuita funciona bien para empezar!
Reemplaza el string "ALCHEMY KEY" con tu propia clave privada de API.

3. Configurar Web3.py para manejar contratos ERC20
Como estamos trabajando con USDT, un contrato ERC20, necesitamos un fragmento de código adicional respecto de lo que normalmente llamaríamos en Web3 para interactuar correctamente con nuestro contrato. Nota que incluimos el ABI de ERC20 en este fragmento de código para poder leer correctamente el contrato de USDT.
(La Contract Application Binary Interface (ABI) es la forma estándar de interactuar con contratos en el ecosistema de Ethereum, y usamos el ABI de ERC20 para interactuar con contratos ERC20 como el contrato de USDT)
(Por motivos de legibilidad, el ABI completo de ERC20 no se incluye en el fragmento de código anterior. Para encontrar el ABI completo, visita este Github Gist)
4. Configurar variables.
Como se describió anteriormente, configuramos nuestras variables para que apunten a las direcciones y números de bloque correctos. Además, usamos el método w3.eth.contract para poder leer datos a través del contrato de USDT.
5. Consultar mediante Alchemy Transfers API
Aquí, hacemos un POST de una solicitud a Alchemy Transfers API. Incorporado en nuestra solicitud está el método específico alchemy_getAssetTransfers que llamamos, junto con todos los parámetros anteriores [From Block y To Block, To y From Addresses, y Contract Address]
Nota que también procesamos el resultado JSON y lo parseamos para obtener el valor exacto de USDT que se transfirió en la transacción que devuelve nuestra consulta.
6. ¡Convertir unidades para mayor legibilidad!
Después de recibir y parsear el valor de USDT desde la respuesta JSON, convertimos el string hexadecimal a formato decimal y hacemos una conversión de unidades.
Resultado final en la línea de comandos:

¡Felicitaciones! Ahora has consultado con éxito Alchemy Transfers API en Polygon. Como próximo proyecto, ¡intenta consultar otros tipos de transferencias de tokens!
Con Alchemy Transfers API, puedes incorporar consultas históricas en apps de Polygon para mostrar actividad histórica de billeteras y transferencias de tokens, lo que te permite desarrollar interfaces más amigables para el usuario y crear análisis on-chain más detallados. Aprovecha las tarifas bajas de Layer 2 y mantén informados a tus usuarios sobre su gran cantidad de actividad de transacciones on-chain, tanto en el presente como en el pasado.
Boletín de Alchemy
Entérate primero de los lanzamientos
Suscríbete a nuestro boletín
Recibe las últimas actualizaciones de productos y recursos de Alchemy
Al ingresar tu correo electrónico, aceptas recibir nuestras comunicaciones de marketing y actualizaciones de productos. Reconoces que Alchemy procesa la información que recibimos de acuerdo con nuestro Aviso de Privacidad. Puedes cancelar tu suscripción en cualquier momento.
Artículos relacionados

Glamsterdam: la guía completa para desarrolladores de Ethereum
Glamsterdam ya está en Sepolia. La guía completa sobre lo que significa para los desarrolladores y cómo Alchemy se preparó para la actualización de la red.

Por qué los equipos de trading eligen Alchemy para RPC de baja latencia
Los equipos de trading eligen Alchemy por lecturas y escrituras de baja latencia cuando el mercado se mueve, y un registro confiable cuando el dinero se liquida, incluso en el volumen pico.

¿Con qué proveedor de RPC deberías construir en Tokio?
Comparamos cinco de los proveedores de RPC que sirven Tokio en cinco cadenas. Así se comparan, y dónde importan las diferencias para los equipos sensibles a la latencia.