Básicamente, quiero poder rastrear el saldo de los contratos inteligentes y las transacciones únicas durante un período de tiempo, como las últimas 24 horas, la última hora, etc.
¿Cuál sería el mejor enfoque para hacer esto? ¿Cómo debo almacenar los datos que obtengo para crear mi API, SQL/NoSQL db?
¡Gracias de antemano!
Puede obtener el saldo de Ether de un contrato inteligente en cualquier bloque utilizando Web3 JSON RPC que se expone a través de bibliotecas Web3 como Web3.js:
web3.eth.getBalance(address [, defaultBlock] [, callback])
Como puede ver, esta llamada de función admite una entrada de "bloque", que se puede usar para obtener el saldo de Ether de la dirección especificada en un bloque determinado.
Los bloques no se crean a intervalos perfectos, pero debería poder aproximarse al bloque que necesita suponiendo que el tiempo de bloque promedio es de ~15 segundos.
Luego puede confirmar que tiene el bloque correcto obteniendo el timestamp
valor del bloque ( web3.eth.getBlock()
) y ajustándolo cuando sea necesario.
Este tipo de lógica está integrada en esta aplicación de JavaScript: ETH Balance Graph ( Código )
Obtener el recuento de transacciones para el contrato es más complicado porque la red no indexa las transacciones entrantes a un contrato.
Mis sugerencias serían rastrear las transacciones que emiten un Evento .
Puede obtener todos los eventos pasados de un contrato usando:
myContract.getPastEvents(event[, options][, callback])
A partir de eso, debería tener una idea bastante clara de la actividad del contrato inteligente a lo largo del tiempo. Especialmente si el contrato es un token ERC20, que debe emitir un Transfer
evento cada vez que se transfieren los tokens y debe emitir el mismo evento cuando se crean los tokens.
Sin embargo, para obtener realmente todas las transacciones internas y externas, debe revisar cada bloque desde que se creó el contrato y buscar esas transacciones (hasta donde yo sé). Esto es lo que hace Etherscan, y no es una tarea trivial.
Demeterca Ionuţ-Alexandru
shawn tabrizi
Demeterca Ionuţ-Alexandru
shawn tabrizi
Demeterca Ionuţ-Alexandru