Analyseur de blockchain avec 300 lignes en Python

image

En 2015, alors que les crypto-monnaies n'avaient pas reçu autant d'attention du grand public qu'aujourd'hui, j'ai pensé à savoir en détail ce qu'est la blockchain, les crypto-monnaies et le Bitcoin en particulier.

Les tentatives pour effectuer une analyse détaillée du code source du projet Bitcoin Core n'ont pas été particulièrement réussies, en raison des conditions initiales plutôt strictes que je me suis fixées pour dire «oui, maintenant je sais ce que c'est et comment cela fonctionne» et un grand nombre de lignes de source code qui devait être compris afin de considérer le résultat obtenu.

J'ai dû chercher d'autres moyens. De plus, au moment où cette décision a été prise, la blockchain était déjà entièrement chargée sur mon ordinateur local. Et aujourd'hui, ce n'est pas aussi rapide qu'auparavant.

Et ainsi. Le client officiel Bitcoin Core a téléchargé toute la chaîne de blocs dans un dossier sur la machine locale, il s'agissait de fichiers qui, comme indiqué dans les documents officiels, contenaient tout ce qui s'appelle Bitcoin. Les plus intéressants pour moi étaient les soi-disant fichiers RAW Blockchain Data (blk00000.dat ... blk01234.dat, etc. du dossier Bitcoin / blocks), à savoir les fichiers de base de données blockchain tels qu'ils sont, dans leur forme d'origine.

Le reste du contenu du catalogue est un index d'une base de données "brute", des données pour la comptabilisation correcte des sorties non dépensées, des paramètres et un portefeuille personnel.

Afin de mieux comprendre, il semblait évident de comprendre dans quoi la base de données source est stockée, sur la base de laquelle le système local effectue toutes les autres étapes nécessaires pour assurer le fonctionnement de la blockchain de cette crypto-monnaie. Une partie de la technologie concernant la mise en réseau n'a pas été discutée dans cet article. Intentionnellement, je me suis limité à la partie locale et aux fichiers qui stockent les blocs.

La spécification du format des blocs et des transactions est disponible en open source, sous forme de descriptions distinctes de ces structures. Mais rien n'a pu être trouvé qui pourrait donner une idée complète de la façon d'interpréter les données stockées dans les fichiers de cette base de données blockchain très "brute" (RAW Blockchain Database).

La seule option, à mon avis, était d'analyser la structure linéaire des fichiers et de la présenter sous la forme d'une structure lisible, ce qui devrait donner une compréhension complète de ce type de fruit Bitcoin.

Le résultat est un script écrit en Python avec environ 300 lignes, qui convertit les fichiers de données "bruts" stockés localement blkXXXXX.dat au format texte brut avec une indication de ce qui y est contenu et de la signification de chaque champ de données. Les fichiers texte résultants peuvent être traités et extraits à partir d'eux, par exemple, tous les hachages de bloc, les hachages de transaction, les adresses, les montants de transaction, etc. à des fins d'analyse, et bien plus encore dans quel but ...

La commodité et la transparence de l'utilisation de l'analyseur sont assurées, à mon avis, avec une visibilité maximale, grâce à la mise en œuvre grâce à la conversion séquentielle des données de lecture d'octets.

Les analyseurs de chaînes de blocs existant dans la nature ont de nombreuses fonctionnalités, mais aucun ne fonctionne directement avec les fichiers de la base de données elle-même. C'est pourquoi je ne me suis pas concentré sur la mise en œuvre d'intérêts, tels que l'obtention d'une liste d'adresses avec des soldes ou similaires, mais je me suis limité à la mise en œuvre la plus évidente et la plus simple de la conversion directe de fichiers du format interne en une vue texte universelle. De plus, beaucoup de goodies, comme la formation de l'ensemble UTXO (un ensemble de sorties non dépensées) ou la formation d'une liste d'adresses avec des soldes, ont déjà été mis en œuvre par moi pour un certain nombre de projets.

Une partie intégrante de ce travail consiste à aider les parties prenantes à en apprendre davantage sur la technologie de la chaîne de blocs.

Oui, il s'est avéré que le script convient également à la plupart des autres crypto-monnaies, telles que Dash, Dogecoin, Bitcoin Cash, Litecoin et autres altcoins, mais pour cela, vous devez faire quelques astuces. Cet article ne prévoyait pas de révéler ces astuces.

Vous pouvez télécharger l' analyseur syntaxique de la blockchain depuis le github .

Source: https://habr.com/ru/post/fr482978/


All Articles