Escribí un código simple con web3js para rastrear la transacción de una dirección/cuenta en tiempo real. Funciona, pero creo que tiene un rendimiento deficiente o podría consumir demasiados recursos de la CPU.
let filter = web3.eth.filter("latest");
filter.watch(function(error, result) {
if (!error) {
//tracking start in 12 blocks earlier .
var earlierNumber = web3.eth.getBlock(result).number - 12;
var confirmedBlock = web3.eth.getBlock(earlierNumber ) ;
if (confirmedBlock.transactions.length > 0) {
confirmedBlock.transactions.forEach(function(tx) {
if ( tx.to == address ) {
var depositAmount = web3.fromWei(tx.value.toNumber(),
"ether" )
console.log("address: " +address+ " deposit amount: "+depositAmount+ " ETH." ) ;
}
})
}
}
})
¿Cómo podrían esas plataformas comerciales o de intercambio a gran escala rastrear con precisión una gran cantidad de transacciones de cuentas? Encuentro muchos buenos proyectos como MetaMask-token-tracker , en Git. ¿Qué tal? ¿O alguna fuente abierta para recomendar?
Los intercambios no realizan transacciones entre cuentas de blockchain. Además, las transacciones ni siquiera son visibles en la cadena de bloques. Si compra la moneda A con la moneda B, el intercambio simplemente baraja los números dentro de sus propias bases de datos y no se publica nada en la cadena de bloques. Esto tiene mucho sentido desde el punto de vista de los recursos: cambiar algunos valores de la base de datos es mucho más económico y rápido que publicar transacciones en una cadena de bloques.
En teoría, los saldos de tokens ERC20 se rastrean solo dentro del contrato de tokens. Pero cuando intercambia tokens en un intercambio, también se trata de mezclar números en sus bases de datos y, de acuerdo con la cadena de bloques, los tokens nunca se mueven a ninguna parte.
Las transacciones correctas se publican solo cuando retira/deposita activos del intercambio. De lo contrario, todo lo que posee el intercambio (monedas y tokens) solo se almacena en sus propias billeteras.
kimmy
Lauri Peltonen