paint-brush
Analysieren Sie mit diesem Tool fast 1 Milliarde Bitcoin-Transaktionen in weniger als 1 Minutevon@krieker
1,050 Lesungen
1,050 Lesungen

Analysieren Sie mit diesem Tool fast 1 Milliarde Bitcoin-Transaktionen in weniger als 1 Minute

von Alina Arsamakova5m2023/05/26
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

In diesem Artikel werden wir über das geheime Blockchain-Analysetool sprechen, das niemand kennt und das es ermöglicht, nützliche Daten von Blockchains blitzschnell abzufragen. Wir werden Beispielabfragen vorstellen, die man durchführen kann, um nützliche Daten aus der Blockchain zu erhalten, und wir werden über die Architektur des Tools sprechen, die eine Analyse mit solch hohen Geschwindigkeiten ermöglicht.
featured image - Analysieren Sie mit diesem Tool fast 1 Milliarde Bitcoin-Transaktionen in weniger als 1 Minute
Alina Arsamakova HackerNoon profile picture
0-item
1-item
2-item

Das Leitbild für diesen Artikel wurde vomAI Image Generator von HackerNoon über die Eingabeaufforderung „Blockchain-Transaktions-Hashes auf einem Whiteboard“ generiert.



In diesem Artikel werden wir über das geheime Open-Source-Tool sprechen, das niemand kennt und das es Ihnen ermöglicht, nützliche Daten von Blockchains blitzschnell abzufragen.


Wir werden Beispielabfragen vorstellen, die man durchführen kann, um nützliche Daten aus der Blockchain zu erhalten, und wir werden über die Architektur des Tools sprechen, die es ermöglicht, Analysen mit solch hohen Geschwindigkeiten durchzuführen.


Lassen Sie uns jedoch vorher darüber sprechen, warum Sie Transaktionen aus der Blockchain überhaupt analysieren müssen.


Jede Bitcoin-Transaktion enthält die

  1. Absenderadresse
  2. Empfängeradresse
  3. Betrag gesendet


aber auch


  1. Guthaben des Absenders
  2. wie lange die Münzen im Portemonnaie des Absenders schlummerten
  3. Saldo des Empfängers


Und aus dem oben Gesagten können Sie extrapolieren und Informationen darüber erhalten


  • Wie lange behalten Absender normalerweise ihre Bitcoins, bevor sie sie versenden?
  • Wie hoch ist der durchschnittliche Kontostand aller Wallets auf der Blockchain?
  • Durchschnittliche Transaktionsgröße


und über 100 verschiedene andere Analysen.


Wie Sie sehen, sind die Daten, die wir über den Bitcoin-Markt erhalten können, im Vergleich zu den alten Märkten viel umfassender. Und was am wichtigsten ist: Der Durchschnittsbürger kann darauf zugreifen. Im Gegensatz dazu haben in den alten Märkten nur Hedgefonds und Banken Zugriff auf solche Daten.


Daher kann man durch die Analyse von Transaktionen auf der Bitcoin-Blockchain den Bitcoin-Markt besser verstehen und auf der Grundlage dieser Daten bessere Investitionsentscheidungen treffen.


Abgesehen von den Anwendungen der Blockchain-Analyse beim Handel und Investieren gibt es mehrere andere Möglichkeiten, wie die Blockchain-Analyse eingesetzt werden kann:


  • Deanonymisierung von Wallet-Adressen
  • Identifizierung illegaler Aktivitäten
  • Einhaltung


Wie funktioniert dieses Tool?


BlockSci-Architektur

BlockSci zielt darauf ab, drei Schwachstellen bestehender Blockchain-Analysetools anzugehen:


  1. schwache Leistung,
  2. begrenzte Möglichkeiten
  3. und eine umständliche Programmierschnittstelle.


Schlechte Leistung ist das Problem, das BlockSci am besten löst. Beispielsweise würde auch der Brute-Force-Ansatz zur Analyse von Bitcoin-Transaktionen funktionieren. Sie können einen Bitcoin-Knoten auf Ihrem Computer/Server ausführen und Ihren eigenen Knoten direkt abfragen. Dieser Ansatz ist jedoch so langsam, dass es Jahre dauern kann, alle 1 Milliarde Bitcoin-Transaktionen zu verarbeiten.


Andere vorhandene Tools leiden ebenfalls unter schlechter Leistung, insbesondere bei der Verwendung von allgemeinen Diagrammdatenbanken, wodurch sie bei sequentiellen Abfragen um ein Hundertfaches langsamer und bei allen Abfragen, einschließlich Graph-Traversal-Abfragen, erheblich langsamer werden.


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


Das Design von BlockSci basiert hauptsächlich auf der Tatsache, dass in Blockchains alte Blöcke nicht geändert werden können und alle neuen Daten, die auf der Blockchain erscheinen, nur angehängt werden können.


Dies bedeutet, dass die ACID-Eigenschaften von Transaktionsdatenbanken nicht erforderlich sind, sodass eine In-Memory-Analysedatenbank die natürliche Wahl ist. Durch die Verwendung von Arbeitsspeicher anstelle von Festplattenspeicher wird die Datenverarbeitung erheblich beschleunigt, was genau das ist, was wir brauchen.


Tatsächlich lädt BlockSci die gesamte Blockchain in den Speicher, um Berechnungen durchzuführen, und vermeidet den verteilten Verarbeitungsansatz. Dies liegt daran, dass Blockchain-Daten graphisch strukturiert sind und daher schwer effektiv zu partitionieren sind.


Die Vermutung des Entwicklers war, dass die Verwendung einer herkömmlichen, verteilten Transaktionsdatenbank für die Blockchain-Analyse unendliche KOSTEN (Konfiguration, die einen einzelnen Thread übertrifft) verursacht, in dem Sinne, dass kein Grad an Parallelität eine optimierte Single-Thread-Implementierung übertreffen kann.


Außerdem werden mehrere Techniken angewendet, wie etwa die Umwandlung von Hash-Zeigern in tatsächliche Zeiger und die Deduplizierung von Adressdaten, um die Geschwindigkeit noch weiter zu erhöhen und die Datengröße zu verringern.


Um Daten vom Knoten zu importieren, verwendet BlockSci seinen eigenen Hochleistungs-Importer, der die Rohdaten direkt auf der Festplatte und NICHT von der integrierten JSON-RPC-Schnittstelle liest. Selbst dann dauert es in der Regel 24 Stunden, alle Daten vom Knoten zu importieren und zu indizieren. Sobald die Daten jedoch analysiert sind, erfolgt die eigentliche Analyse schnell.


Die Art und Weise, wie Blockchains auf Festplatten gespeichert werden, ist nicht einfach zu analysieren. Sie dienen dazu, andere Aufgaben zu erledigen, beispielsweise Transaktionen zu überprüfen und Daten in einem großen Netzwerk zu finden. Sie dienen außerdem dazu, Speicherplatz zu sparen, indem Blöcke in einem Grundformat auf der Festplatte gespeichert werden. Aber wir müssen die Daten ändern, damit sie in den Speicher passen, daher verfügt BlockSci über einen Parser, der diesen Schritt bewältigen kann. Es wurde sichergestellt, dass dieser Parser gut optimiert ist.


Eine weitere Möglichkeit, wie das Tool solch hohe Geschwindigkeiten erreicht, ist die „Bloom-Filter-Optimierung“. Der Bloom-Filter ist eine probabilistische Datenstruktur, die das Testen der Zugehörigkeit zu einer Menge ermöglicht. Im Kontext der Blockchain speichert es alle gesehenen Adressen und gewährleistet die Korrektheit der Suche nach vorhandenen Adressen, während gleichzeitig die Anzahl der Datenbankabfragen für nicht vorhandene Adressen minimiert wird. Dies wird dadurch erreicht, dass etwa 88 % der Eingaben in den letzten 4000 Blöcken erstellt wurden und dass nur 8,6 % der Bitcoin-Adressen mehr als einmal verwendet werden.


Die letzte wichtigste Optimierung, die es BlockSci ermöglicht, hohe Analysegeschwindigkeiten zu erreichen, ist die Datenlayoutstruktur, die sowohl hohe Analysegeschwindigkeiten ermöglicht als auch den Speicher nicht zu sehr beansprucht.


Das Datenlayout von BlockSci unterteilt die verfügbaren Daten in drei Kategorien und kombiniert sie in einem Hybridschema. Das Kerntransaktionsdiagramm ist für die meisten Analysen erforderlich und wird immer in den Speicher geladen und in einem zeilenbasierten Format gespeichert. Skripte und zusätzliche Daten, die nur für einen Teil der Analysen erforderlich sind, werden in einem Hybridformat (teils spaltenbasiert, teils zeilenbasiert) gespeichert und bei Bedarf geladen. Indizes zum Nachschlagen einzelner Transaktionen oder Adressen per Hash werden in einer separaten Datenbank auf der Festplatte gespeichert.


Darüber hinaus verwendet es nach Möglichkeit Kodierungen fester Größe für Datenfelder, optimiert das Speicherlayout für die Referenzlokalität, verknüpft Ausgaben mit Eingaben für eine effiziente Durchquerung und teilt Speicherzuordnung und -parallelität.



Abschließend finden Sie hier die Abfrage, die alle Transaktionen mit einer Gebühr von mehr als 0,1 Bitcoins in weniger als einer Minute findet.


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


Zusammenfassung

BlockSci ist ein Blockchain-Analysetool, das eine blitzschnelle Abfrage nützlicher Daten aus Blockchains ermöglicht. Durch die Analyse von Bitcoin-Transaktionen kann man den Markt besser verstehen und bessere Investitionsentscheidungen treffen.


Die Architektur von BlockSci basiert auf der Tatsache, dass Blockchain-Daten grafisch strukturiert und schwer effektiv zu partitionieren sind, sodass die gesamte Blockchain in den Speicher geladen wird, um Berechnungen durchzuführen. Zur Steigerung der Geschwindigkeit werden verschiedene Techniken angewendet, darunter die Konvertierung von Hash-Zeigern in tatsächliche Zeiger, die Deduplizierung von Adressdaten und die Verwendung der Bloom-Filter-Optimierung. Die Datenlayoutstruktur sorgt für hohe Analysegeschwindigkeiten und beansprucht den Speicher nicht zu sehr.