¿Cómo la plataforma de comercio de criptomonedas a gran escala, al igual que Binance o Bittrex, rastrea la transferencia de tokens y ETH en cada una de sus cuentas a lo largo del tiempo?

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.

Código de muestra

 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?

Respuestas (1)

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.

Tal vez mi pregunta es un poco confusa. En realidad, solo quiero saber cómo esa gran plataforma comercial detecta o acepta acciones de depósitos de su cliente en tiempo real. El código de muestra funciona como un detector de bloques y realiza un seguimiento correcto de cada transacción de depósito según lo esperado. Pero parece que se necesitan muchos gastos generales para seguir monitoreando. ¿Hay alguna alternativa barata? O esos servicios comerciales, Binance, Bittrex solo para construir un servidor poderoso para hacerlo.
Ah, sí, lo siento, malinterpreté tu pregunta. Entonces mi respuesta ya no es tan relevante, pero tampoco tengo una respuesta para tu pregunta real.