
En 2015, cuando las criptomonedas no habían recibido tanta atención del público en general como ahora, se me ocurrió descubrir en detalle qué son blockchain, criptomonedas y Bitcoin en particular.
Los intentos de realizar un análisis detallado del código fuente del proyecto Bitcoin Core no tuvieron éxito, debido a las condiciones iniciales bastante estrictas que establecí para mí para decir "sí, ahora sé qué es y cómo funciona" y una gran cantidad de líneas de fuente código que necesitaba ser entendido para considerar el resultado alcanzado.
Tenía que buscar otras formas. Además, para cuando se tomó esta decisión, la cadena de bloques ya se había cargado completamente en mi computadora local. Y hoy no es tan rápido como lo era entonces.
Y asi. El cliente oficial de Bitcoin Core subió toda la cadena de bloques a una carpeta en la máquina local, estos eran algunos archivos que, como se indica en los documentos oficiales, contenían todo lo que se llama Bitcoin. Lo más interesante para mí fueron los llamados archivos RAW Blockchain Data (blk00000.dat ... blk01234.dat, etc. de la carpeta Bitcoin / blocks), es decir, los archivos de la base de datos blockchain tal como están, en su forma original.
El resto del contenido del catálogo es un índice de una base de datos "en bruto", datos para la contabilidad correcta de salidas no utilizadas, configuraciones y una billetera personal.
Para obtener información, parecía obvio averiguar en qué se almacena la base de datos de origen, sobre la base de la cual el sistema local realiza todos los pasos necesarios adicionales para garantizar el funcionamiento de la cadena de bloques de esta criptomoneda. Parte de la tecnología con respecto a las redes no se ha discutido en este artículo. Intencionalmente, me limité a la parte local y a los archivos que almacenan los bloques.
La especificación del formato de bloques y transacciones está disponible en fuentes abiertas, en forma de descripciones separadas de estas estructuras. Pero no se pudo encontrar nada que pudiera dar una idea completa de cómo interpretar los datos almacenados en los archivos de esta base de datos blockchain muy "en bruto" (RAW Blockchain Database).
La única opción, en mi opinión, era analizar la estructura lineal de los archivos y presentarla en forma de una estructura legible, lo que debería proporcionar una comprensión completa de qué tipo de fruta es Bitcoin.
El resultado es una secuencia de comandos escrita en Python con ~ 300 líneas, que convierte los archivos de datos "en bruto" almacenados localmente blkXXXXX.dat en formato de texto sin formato con una indicación de lo que contiene y cuál es el significado de cada campo de datos. Los archivos de texto resultantes son adecuados para su posterior procesamiento y extracción, por ejemplo, todos los hashes de bloques, hashes de transacciones, direcciones, importes de transacciones, etc. para fines de análisis, y mucho más para qué ...
La conveniencia y la transparencia del uso del analizador está garantizado, en mi opinión, con la máxima visibilidad, debido a la implementación mediante la conversión secuencial de datos de lectura de bytes.
Los analizadores Blockchain existentes en la naturaleza tienen muchas características, pero ninguna funciona directamente con los archivos de la base de datos. Es por eso que no me concentré en la implementación de ningún interés, como obtener una lista de direcciones con saldos o similares, sino que me limité a la implementación más obvia y simple de la conversión directa de archivos del formato interno a una vista de texto universal. Además, muchas cosas, como la formación del conjunto UTXO (un conjunto de resultados no gastados) o la formación de una lista de direcciones con saldos, ya han sido implementadas por mí para varios proyectos.
Una parte integral de este trabajo es ayudar a las partes interesadas a aprender sobre la tecnología blockchain.
Sí, como resultó, el script también es adecuado para la mayoría de las otras criptomonedas, como Dash, Dogecoin, Bitcoin Cash, Litecoin y otras monedas alternativas, aunque para esto necesitas hacer un par de trucos. Este artículo no planeaba revelar estos trucos.
Puede
descargar el analizador blockchain parser
del github .