paint-brush
Analice casi mil millones de transacciones de Bitcoin en menos de 1 minuto con esta herramientaby@krieker
1,087
1,087

Analice casi mil millones de transacciones de Bitcoin en menos de 1 minuto con esta herramienta

Alina Arsamakova5m2023/05/26
Read on Terminal Reader

En este artículo hablaremos sobre la herramienta secreta de análisis de blockchain que nadie conoce y que permite consultar datos útiles de blockchains a la velocidad de la luz. Daremos consultas de muestra que uno puede hacer para obtener datos útiles de la cadena de bloques y hablaremos sobre la arquitectura de la herramienta que permite realizar análisis a velocidades tan altas.
featured image - Analice casi mil millones de transacciones de Bitcoin en menos de 1 minuto con esta herramienta
Alina Arsamakova HackerNoon profile picture
0-item
1-item
2-item

La imagen principal de este artículo fue generada porAI Image Generator de HackerNoon a través del mensaje "hashes de transacciones de cadena de bloques en una pizarra"



En este artículo hablaremos sobre la herramienta secreta de código abierto que nadie conoce y que permite consultar datos útiles de blockchains a la velocidad de la luz.


Daremos consultas de muestra que uno puede hacer para obtener datos útiles de la cadena de bloques y hablaremos sobre la arquitectura de la herramienta que permite realizar análisis a velocidades tan altas.


Sin embargo, antes de eso, hablemos de por qué necesita analizar las transacciones de la cadena de bloques en primer lugar.


Cada transacción de Bitcoin contiene la

  1. dirección del remitente
  2. Dirección del receptor
  3. Cantidad enviada


pero también


  1. saldo del remitente
  2. cuánto tiempo estuvieron inactivas las monedas en la billetera del remitente
  3. saldo del destinatario


Y a partir de lo anterior, puede extrapolar y obtener información sobre


  • ¿Cuánto tiempo suele conservar el remitente su Bitcoin antes de enviarlo?
  • ¿Cuál es el saldo promedio de todas las billeteras en la cadena de bloques?
  • Tamaño promedio de transacción


y más de 100 análisis diferentes.


Como puede ver, los datos que podemos obtener sobre el mercado de Bitcoin son mucho más completos en comparación con los mercados heredados. Y lo más importante, la persona promedio puede tener acceso a él. Por el contrario, solo los fondos de cobertura y los bancos tienen acceso a datos como este en los mercados heredados.


Por lo tanto, al analizar las transacciones en la cadena de bloques de Bitcoin, se puede comprender mejor el mercado de Bitcoin y tomar mejores decisiones de inversión basadas en estos datos.


Además de las aplicaciones de análisis de blockchain para el comercio y la inversión, existen muchas otras formas en que se utiliza el análisis de blockchain:


  • Desanonimización de direcciones de billetera
  • Identificación de actividades ilícitas
  • Cumplimiento


Entonces, ¿cómo funciona esta herramienta?


La arquitectura de BlockSci

BlockSci tiene como objetivo abordar tres puntos débiles de las herramientas de análisis de blockchain existentes:


  1. bajo rendimiento,
  2. capacidades limitadas
  3. y una interfaz de programación engorrosa.


El bajo rendimiento es el problema que BlockSci resuelve mejor. Por ejemplo, el enfoque de fuerza bruta para analizar transacciones de Bitcoin también funcionaría. Puede ejecutar un nodo de Bitcoin en su computadora/servidor y consultar su propio nodo directamente. Pero este enfoque es tan lento que puede llevar años procesar las mil millones de transacciones de Bitcoin.


Otras herramientas existentes también tienen un bajo rendimiento, especialmente cuando se utilizan bases de datos de gráficos de propósito general, lo que las hace cientos de veces más lentas para consultas secuenciales y sustancialmente más lentas para todas las consultas, incluidas las consultas transversales de gráficos.


Fuente: https://www.usenix.org/system/files/sec20-kalodner.pdf


El diseño de BlockSci se basa predominantemente en el hecho de que en las cadenas de bloques, los bloques del pasado no se pueden modificar, y todos los datos nuevos que aparecen en la cadena de bloques se agregan únicamente.


Esto significa que las propiedades ACID de las bases de datos transaccionales son innecesarias, por lo que una base de datos analítica en memoria es la elección natural. El uso de memoria en lugar de almacenamiento en disco acelera significativamente el procesamiento de datos, que es exactamente lo que necesitamos.


De hecho, BlockSci carga toda la cadena de bloques en la memoria para realizar cálculos y evita el enfoque de procesamiento distribuido. Esto está motivado por el hecho de que los datos de la cadena de bloques tienen una estructura gráfica y, por lo tanto, son difíciles de particionar de manera efectiva.


La conjetura de su diseñador fue que el uso de una base de datos transaccional distribuida tradicional para el análisis de blockchain tiene un COSTO infinito (Configuración que supera a un solo subproceso), en el sentido de que ningún nivel de paralelismo puede superar una implementación optimizada de un solo subproceso.


También aplica varias técnicas, como convertir punteros hash en punteros reales y deduplicar datos de direcciones, para aumentar aún más la velocidad y disminuir el tamaño de los datos.


Para importar datos del nodo, BlockSci utiliza su propio importador de alto rendimiento que lee directamente los datos sin procesar en el disco y NO desde la interfaz JSON-RPC integrada. Incluso entonces, normalmente lleva 24 horas importar e indexar todos los datos del nodo. Sin embargo, una vez que se analizan los datos, los análisis reales son rápidos.


La forma en que se almacenan las cadenas de bloques en los discos no es fácil de analizar. Están hechos para hacer otras cosas, como verificar transacciones y encontrar datos en una gran red. También están hechos para ahorrar espacio en la memoria manteniendo bloques en un formato básico en el disco. Pero necesitamos cambiar los datos para que quepan en la memoria, por lo que BlockSci tiene un analizador que puede manejar este paso. Se aseguró de que este analizador esté bien optimizado.


Otra forma en que la herramienta alcanza velocidades tan altas es la "optimización del filtro de floración". El filtro bloom es una estructura de datos probabilísticos que permite probar la pertenencia a un conjunto. En el contexto de la cadena de bloques , almacena todas las direcciones vistas y garantiza la corrección de las búsquedas de direcciones existentes al tiempo que minimiza la cantidad de consultas a la base de datos para las inexistentes. Esto se logra en base al hecho de que alrededor del 88% de las entradas gastan salidas creadas en los últimos 4000 bloques y que solo el 8,6% de las direcciones de Bitcoin se usan más de una vez.


La última optimización más importante que permite que BlockSci logre altas velocidades de análisis es la estructura de diseño de datos que brinda altas velocidades de análisis y no afecta demasiado la memoria.


El diseño de datos de BlockSci divide los datos disponibles en tres categorías y los combina en un esquema híbrido. El gráfico de transacciones principal es necesario para la mayoría de los análisis y siempre se carga en la memoria, almacenado en un formato basado en filas. Los scripts y los datos adicionales necesarios solo para un subconjunto de análisis se almacenan en un formato híbrido (parcialmente basado en columnas, parcialmente basado en filas) y se cargan a pedido. Los índices para buscar transacciones o direcciones individuales por hash se almacenan en una base de datos separada en el disco.


Además, utiliza codificaciones de tamaño fijo para los campos de datos siempre que sea posible, optimiza el diseño de la memoria para la localidad de referencia, vincula las salidas con las entradas para un recorrido eficiente y comparte el mapeo y el paralelismo de la memoria.



Por último, aquí está la consulta que encuentra todas las transacciones con una tarifa> 0.1 Bitcoins en menos de un minuto.


 chain.blocks.txes.where(lambda tx: tx.fee > 10**7).to_list()


Resumen

BlockSci es una herramienta de análisis de cadenas de bloques que permite realizar consultas ultrarrápidas de datos útiles de cadenas de bloques. Al analizar las transacciones de Bitcoin, uno puede comprender mejor el mercado y tomar mejores decisiones de inversión.


La arquitectura de BlockSci se basa en el hecho de que los datos de la cadena de bloques tienen una estructura gráfica y son difíciles de particionar de manera efectiva, por lo que carga toda la cadena de bloques en la memoria para realizar los cálculos. Aplica varias técnicas para aumentar la velocidad, incluida la conversión de punteros hash en punteros reales, la deduplicación de datos de direcciones y el uso de la optimización del filtro Bloom. La estructura de diseño de datos brinda altas velocidades de análisis y no afecta demasiado la memoria.