Tracing und Transaktionsgraphen · Lektion 1 von 6
Transaktionsgraphen und Graphmetriken
13 Min. Lesezeit
Fast jede Frage zur Nachverfolgung, von „Wohin sind die gestohlenen Gelder geflossen?“ bis zu „Hat diese Einzahlung Berührungspunkte mit einem sanktionierten Dienst?“, ist eine Frage zu einem Graphen. Was Sie als Knoten und Kanten wählen, bestimmt im Hintergrund, welche Antworten möglich sind. Sobald der Graph vorliegt, benötigen Sie Verfahren, um das Wesentliche zu finden, ohne Tausende von Kanten manuell zu prüfen. Diese Lektion zeigt, wie Sie einen belastbaren Graphen erstellen, welche Metriken und wiederkehrenden Formen Analysten zu seiner Auswertung verwenden und warum keine davon für sich allein einen Beweis darstellt.
Drei Graphen aus denselben Daten
Dieselben Blockdaten lassen sich auf drei Arten modellieren, zwischen denen Analysten ständig wechseln.
| Graph | Knoten | Kanten | Besonders geeignet für |
|---|---|---|---|
| Transaktionsgraph | Transaktionen (und bei UTXO-Blockchains die von ihnen erzeugten Outputs) | Ein Output, der von einer Transaktion erzeugt und von einer anderen ausgegeben wird | Exakte, verlustfreie UTXO-Nachverfolgung |
| Adressgraph | Adressen | Von einer Adresse an eine andere gesendeter Wert | Blockchains mit Kontenmodell, schnelle Übersichten |
| Entitätsgraph | Cluster oder gekennzeichnete Dienste | Aggregierte Flüsse zwischen Entitäten | Berichterstattung, Exposition, Gegenparteianalyse |
Der Transaktionsgraph liegt den Rohdaten am nächsten. Bei Bitcoin bleibt jeder Output entweder unausgegeben oder wird von genau einem späteren Input verbraucht. Die Ausgabebeziehungen bilden daher einen präzisen gerichteten azyklischen Graphen: Geld kann nicht rückwärts durch die Zeit fließen, und nichts wird durch Schlussfolgerungen ergänzt. Der Adressgraph macht jede Adresse zu einem Knoten. Für Blockchains mit Kontenmodell ist dies naheliegend, da ein Transfer tatsächlich von einem Konto zu einem anderen erfolgt. Bei UTXO-Blockchains führt dies jedoch zu Mehrdeutigkeiten, wie das folgende Beispiel zeigt. Der Entitätsgraph ersetzt Adressen durch Cluster („Hot Wallets der Börse X“). Die meisten Berichte zeigen diesen Graphen, doch jeder Knoten hängt von der Clusterbildung und Zuordnung ab, die jeweils eigene Fehlerquoten aufweisen (Lektion 4.1). Halten Sie daher hinter jeder Entitätskante die darunterliegenden Ebenen aufklappbar vor.
Viele visuelle Nachverfolgungswerkzeuge zeichnen einen hybriden bipartiten Graphen mit zwei Arten von Knoten: Adressen und Transaktionen. Kanten verlaufen von einer Adresse zu einer Transaktion (ein Input) und von einer Transaktion zu einer Adresse (ein Output). So bleibt die Exaktheit des Transaktionsgraphen erhalten, während zugleich sichtbar wird, wer was hält.
Kanten: Richtung, Gewicht und Zeit
Eine nützliche Kante enthält mehr als „A hat B bezahlt“. Speichern Sie mindestens:
- Richtung: Quelle und Ziel. Die Vorwärtsverfolgung folgt ausgehenden Kanten, die Rückwärtsverfolgung eingehenden.
- Gewicht: den Betrag in nativen Einheiten nach Dezimalumrechnung, optional mit seinem damaligen Wert in einer Referenzwährung unter Angabe der Kursquelle.
- Zeit: Blockhöhe und Blockzeitstempel in UTC. Die Blockhöhe ordnet Ereignisse zuverlässig; Zeitstempel sind Näherungswerte (Lektion 2.1).
- Identität: Transaktionshash plus Output-Index (UTXO) oder Log-Index beziehungsweise Trace-Position (Kontenmodell), damit die Kante eindeutig ist und anhand eines Nodes überprüft werden kann.
- Vermögenswert: nativer Coin oder Token-Vertragsadresse. Addieren Sie niemals Kanten unterschiedlicher Vermögenswerte.
Zwei Adressen können durch viele Kanten zu unterschiedlichen Zeitpunkten verbunden sein (ein Multigraph). Sie zu einer einzigen Kante „insgesamt gesendet“ zusammenzufassen, eignet sich für eine Grafik, zerstört aber die zeitliche Reihenfolge, von der die Nachverfolgung abhängt: Gelder, die erst nach einer Zahlung eingegangen sind, können diese nicht finanziert haben.
Von einer UTXO-Transaktion zu Kanten
Betrachten Sie eine dekodierte Bitcoin-Transaktion 4f3a…c21e in Block 871.204, angereichert um Adresse und Wert jedes ausgegebenen Outputs (rohe Inputs verweisen nur auf einen Outpoint, daher liefert ein Indexer oder eine zweite Abfrage diese Felder):
| Seite | Referenz | Adresse | Wert (BTC) |
|---|---|---|---|
| Input | 9b1e…04aa:1 | bc1q…7k3f | 0,60000000 |
| Input | c07d…e912:0 | bc1q…m2pz | 0,50000000 |
| Output 0 | 4f3a…c21e:0 | bc1q…x9td | 0,80000000 |
| Output 1 | 4f3a…c21e:1 | bc1q…h4wa | 0,29000000 |
Die Inputs ergeben insgesamt 1,10 BTC und die Outputs 1,09 BTC; die Gebühr beträgt somit 0,01 BTC.
Im Transaktionsgraphen ist dies ein Knoten mit zwei eingehenden Kanten (den Outpoints) und zwei ausgehenden Kanten (den Outputs); eine Annahme ist nicht erforderlich. Im Adressgraphen gibt Bitcoin nicht an, welcher Input welchen Output bezahlt hat, da die Inputs zusammengeführt werden. Die Verknüpfung aller möglichen Paare ergibt vier Kanten (2 Inputs × 2 Outputs), deren Gewichte Sie festlegen müssen. Üblich ist die proportionale Zuordnung: Der erste Input lieferte 0,60 ÷ 1,10 = 54,55 % des Werts. Ihm werden daher 54,55 % jedes Outputs zugerechnet, dem zweiten 45,45 %.
| Kante | Berechnung | Gewicht (BTC) |
|---|---|---|
| bc1q…7k3f → bc1q…x9td | 0,80 × 0,5455 | 0,4364 |
| bc1q…7k3f → bc1q…h4wa | 0,29 × 0,5455 | 0,1582 |
| bc1q…m2pz → bc1q…x9td | 0,80 × 0,4545 | 0,3636 |
| bc1q…m2pz → bc1q…h4wa | 0,29 × 0,4545 | 0,1318 |
Die Gewichte ergeben zusammen 1,09 BTC; die Gebühr verlässt den Graphen (manche Analysten ergänzen einen Senkenknoten „Gebühr“, damit der Wert erhalten bleibt). Eine Transaktion mit 50 Inputs und 50 Outputs würde 2.500 solcher Kanten erzeugen. Deshalb überfrachten Konsolidierungen und Sammelauszahlungen Adressgraphen. Ob bc1q…h4wa eine Zahlung oder Wechselgeld ist, stellt eine separate Schlussfolgerung dar (Lektion 4.2), und die proportionale Gewichtung ist nur eine mögliche Zuordnungsregel (Lektion 3.3).
Von Daten des Kontenmodells zu Kanten
Bei Blockchains nach dem Ethereum-Modell stammen Kanten aus drei Quellen. Ein Graph, der nur auf einer davon basiert, übersieht Geldflüsse:
- Transaktionen auf oberster Ebene mit einem
valueungleich null: vom Unterzeichner an dieto-Adresse. - Interne Transfers nativer Coins, die Verträge während der Ausführung vornehmen und die nur in Traces erscheinen (
call-Frames mit Wert). - Token-Transfers, dekodiert aus Logs: Ein ERC-20-Ereignis
Transfer(address,address,uint256)hat das topic00xddf252ad…b3ef, den Absender und Empfänger in den Topics 1 und 2 sowie den Rohbetrag im Datenfeld.
Schließen Sie rückgängig gemachte Transaktionen (Receipt status = 0) und rückgängig gemachte Trace-Frames aus: Sie haben nichts bewegt, obwohl der Absender dennoch Gas bezahlt hat. Behandeln Sie Verträge als gekennzeichnete Knoten, denn ein DEX-Router oder Token-Vertrag ist ein Mechanismus und keine Gegenpartei. Ein Swap erzeugt üblicherweise zwei Kanten in unterschiedlichen Vermögenswerten: Nutzer → Pool und Pool → Nutzer (Lektion 5.2).
Die meisten Graphanalysen beginnen als flache Kantenliste in einem Data Warehouse. Sie wird aus dem generischen Schema von Lektion 2.7 erstellt und als Tabelle edges gespeichert, die von den Abfragen in diesem und dem nächsten Modul wiederverwendet wird:
-- Kantenliste (als edges gespeichert): natives ETH aus Traces plus ERC-20-Transfers
SELECT block_number, block_timestamp, transaction_hash,
from_address AS src, to_address AS dst,
'ETH' AS asset, value / 1e18 AS amount -- wei zu ETH
FROM traces
WHERE value > 0
AND (call_type IS NULL OR call_type = 'call') -- kein delegatecall oder staticcall
AND status = 1 AND tx_status = 1 -- nur erfolgreiche Frames
AND block_number BETWEEN 21000000 AND 21050000
UNION ALL
SELECT tt.block_number, tt.block_timestamp, tt.transaction_hash,
tt.from_address, tt.to_address,
tt.token_address, tt.amount_raw / POWER(10, tk.decimals)
FROM token_transfers AS tt
JOIN tokens AS tk ON tk.token_address = tt.token_address -- Dezimalstellen je Token
WHERE tt.block_number BETWEEN 21000000 AND 21050000;
Der Trace-Teil umfasst sowohl Aufrufe auf oberster Ebene als auch interne Aufrufe und benötigt daher die Tabelle transactions nicht. UNION ALL behält identisch aussehende Zeilen bei, bei denen es sich um tatsächliche, separate Transfers handelt. Der gemeinsame Blockbereich hält das Ergebnis begrenzt und reproduzierbar. Der Inner Join entfernt stillschweigend Token, die in tokens fehlen; vergleichen Sie die Zeilenanzahlen (Lektion 2.9 behandelt die Trace-Filter, Lektion 2.8 die Joins).
Praktische Entscheidungen vor der Nachverfolgung
- Begrenzen Sie den Graphen. Legen Sie vor der Abfrage einen Startpunkt, ein Zeitfenster und ein Hop-Limit fest. Eine unbegrenzte Erweiterung erreicht innerhalb weniger Hops jede Börse und verliert damit ihren Beweiswert.
- Markieren Sie Superknoten. Hot Wallets von Börsen, Bridges und beliebte Verträge haben Millionen von Kanten; kennzeichnen Sie sie als Haltepunkte.
- Passen Sie die Speicherung an die Fragestellung an. SQL-Kantenlisten eignen sich für Aggregation und Filterung; Graphdatenbanken und Bibliotheken wie NetworkX oder igraph für Pfadsuche und Zentralität. Viele Teams exportieren daher einen begrenzten Teilgraphen in ein Graphwerkzeug.
- Halten Sie die Herkunft jeder Kante fest: txid, Index, Blockhöhe und die Abfrage, die sie erzeugt hat, damit ein anderer Analyst denselben Graphen rekonstruieren kann.
Grad und Wertfluss
Die einfachsten Metriken sind Anzahlen und Summen je Knoten, berechnet über ein festes Zeitfenster und für einen einzigen Vermögenswert:
- Eingangsgrad: Anzahl unterschiedlicher Gegenparteien, die an den Knoten gesendet haben. Ausgangsgrad: Anzahl der Gegenparteien, an die er gesendet hat.
- Gewichteter Grad: insgesamt empfangener und gesendeter Wert.
- Durchleitungsquote: ausgehender Wert ÷ eingehender Wert im Zeitfenster. Eine Quote nahe 1 bei kurzer Haltedauer kennzeichnet einen Zwischenknoten, der Empfangenes weiterleitet, statt es zu behalten.
- Aktivitätszeitraum und Haltedauer: erste und letzte Aktivität sowie die Zeit zwischen Empfang und Versand.
Schon damit lassen sich viele Rollen unterscheiden. Eine persönliche Wallet hat einen niedrigen Grad und hält Gelder wochenlang. Eine Einzahlungsadresse einer Börse weist einige Zuflüsse von verschiedenen Absendern und Abflüsse an ein einziges Ziel auf, die Sweep-Wallet. Eine Hot Wallet hat Grade im Bereich von Zehntausenden. Ein Zwischenknoten zur Geldwäsche hat häufig einen Eingangsgrad von 1, einen Ausgangsgrad von 2 bis 20, eine Durchleitungsquote nahe 1 und eine Haltedauer von Minuten. Die folgende Abfrage erstellt ein Profil der Kanten nativer Coins für einen Monat.
WITH io AS ( -- eine Zeile je Seite jeder Kante
SELECT dst AS address, src AS peer, amount AS amt_in, 0 AS amt_out, block_timestamp AS ts
FROM edges WHERE asset = 'ETH'
UNION ALL
SELECT src, dst, 0, amount, block_timestamp
FROM edges WHERE asset = 'ETH'
)
SELECT address,
COUNT(DISTINCT CASE WHEN amt_in > 0 THEN peer END) AS in_degree,
COUNT(DISTINCT CASE WHEN amt_out > 0 THEN peer END) AS out_degree,
SUM(amt_in) AS value_in, SUM(amt_out) AS value_out,
SUM(amt_out) / NULLIF(SUM(amt_in), 0) AS pass_through,
MIN(ts) AS first_seen, MAX(ts) AS last_seen
FROM io
WHERE ts >= TIMESTAMP '2026-03-01' AND ts < TIMESTAMP '2026-04-01'
GROUP BY address
HAVING COUNT(DISTINCT CASE WHEN amt_out > 0 THEN peer END) >= 20;
Die CTE wandelt jede Kante in eine Empfängerzeile und eine Absenderzeile um, sodass ein einziges GROUP BY beide Richtungen liefert. NULLIF verhindert eine Division durch null, und HAVING behält Knoten mit starkem Fan-out bei. Das Zeitfenster erfasst nur Aktivitäten innerhalb seiner Grenzen: Eine im Februar finanzierte Adresse zeigt im März eine Durchleitungsquote weit über 1.
Zentralität
Zentralität misst, wie wichtig ein Knoten für die Struktur des Graphen ist, nicht nur, wie aktiv er ist.
| Metrik | Was sie misst | Typische Verwendung |
|---|---|---|
| Gradzentralität | Anzahl direkter Verbindungen | Auffinden von Knotenpunkten und Diensten |
| Betweenness-Zentralität | Wie häufig der Knoten auf kürzesten Pfaden zwischen anderen Knoten liegt | Auffinden von Vermittlern und Engpässen zwischen ansonsten getrennten Gruppen |
| PageRank | Von wichtigen Nachbarn übernommene Bedeutung | Rangordnung von Knoten in großen Flussgraphen |
In einem Untersuchungsteilgraphen ist eine Adresse mit hoher Betweenness, aber mäßigem Grad häufig der interessanteste Knoten: die Sammeladresse, zu der jeder Verteilungspfad zurückführt, oder die einzige Verbindung zwischen einem Diebstahlcluster und den für die Auszahlung genutzten Börsen. Berechnen Sie die Zentralität auf einem begrenzten Teilgraphen mit Diensten als Endpunkten. Auf der gesamten Blockchain dominieren Börsen und beliebte Verträge jede Rangliste. Graphbibliotheken berechnen diese Metriken; reines SQL bewältigt den Grad, nicht aber die Betweenness.
Muster: Fan-out, Fan-in und Peel Chains
Fan-out bedeutet, dass ein Knoten innerhalb kurzer Zeit an viele andere sendet; Fan-in bedeutet, dass viele an einen senden. Beides ist normal (gebündelte Auszahlungen, Sweeps, Mining-Auszahlungen, Airdrops). Entscheidend ist, wer die Beteiligten sind und was anschließend geschieht:
- Verteilung: Eine Diebstahladresse verteilt Gelder auf Dutzende neuer Adressen ohne vorherige Historie, jeweils mit ähnlichem Wert. Ähnliche Beträge und neue Empfänger unterscheiden dies von einer geschäftlichen Auszahlung.
- Sammlung: Viele Betrugsopfer zahlen an eine Adresse (Fan-in), die den Gesamtbetrag weiterleitet.
- Konsolidierung: Bei UTXO-Blockchains liefert eine Fan-in-Transaktion, die viele Outputs gemeinsam ausgibt, zugleich Hinweise für die Clusterbildung (Lektion 4.1).
Eine Peel Chain, beschrieben in der Studie „A Fistful of Bitcoins“ von Meiklejohn und Kollegen aus dem Jahr 2013, beginnt mit einem großen Betrag an einer Adresse. Jede Transaktion spaltet eine kleine Zahlung ab und sendet den großen Restbetrag an eine neue Adresse, die den Vorgang wiederholt. Bei einer Gebühr von 0,01 BTC je Schritt:
| Schritt | Input | Abgespaltener Betrag | Restbetrag (Wechselgeld) |
|---|---|---|---|
| T1 | 50,00 | 1,20 → Einzahlung bei einer Börse | 48,79 |
| T2 | 48,79 | 0,80 → Einzahlung bei einer Börse | 47,98 |
| T3 | 47,98 | 2,50 → OTC-Broker | 45,47 |
| T4 | 45,47 | 0,95 → Einzahlung bei einer Börse | 44,51 |
Anzeichen: ein Input und zwei Outputs je Transaktion; ein deutlich größerer Output, der kurz darauf in einer Transaktion derselben Struktur ausgegeben wird; derselbe Skripttyp und dieselben Wallet-Fingerabdrücke; Hops im Abstand von Minuten oder Blöcken. Eine Studie von Gong, Chow, Yiu und Ting aus dem Jahr 2023 („Analyzing the Peeling Chain Patterns on the Bitcoin Blockchain“) stellte fest, dass etwa 71 % der Transaktionen in den identifizierten Ketten weniger als 1 % des Inputs abspalteten und etwa 79 % der Ketten innerhalb eines Tages erstellt wurden. Der Restbetrag trägt den Großteil des Werts. Daher verfolgt der Analyst ihn weiter und protokolliert jede Abspaltung als Auszahlungspunkt. Die Form ist nicht an sich rechtswidrig: Eine Wallet, die Rechnungen aus einem großen Guthaben bezahlt, oder eine Hot Wallet, die Auszahlungen einzeln abwickelt, sieht genauso aus.
Verschleierung, Zyklen und Motive
Verschleierung, die Geldwäschephase, in der Gelder von ihrem Ursprung entfernt werden, zeigt sich auf der Blockchain als lange Ketten kurzlebiger neuer Adressen, schnelle automatisierte Hops, Aufteilungen und erneute Zusammenführungen, Tauschvorgänge zwischen Vermögenswerten und Wechsel zwischen Blockchains. Kein einzelner Hop ist verdächtig; die Kombination ist es. Round-Tripping bezeichnet Wert, der zu seinem Knoten oder zu einem anderen Knoten derselben Partei zurückkehrt: ein Zyklus. Kurze Zyklen können das Handelsvolumen eines Tokens oder NFT künstlich erhöhen (Wash-Trading), eine Zahlungshistorie vortäuschen oder Gelder durch einen Dienst zirkulieren lassen. Die Zyklenerkennung funktioniert am besten auf einem Entitätsgraphen, da eine Partei, die Gelder an eine andere eigene Adresse zurücksendet, erst nach der Clusterbildung einen Zyklus bildet.
Ein Motiv ist eine kleine Teilgraphenform, die häufiger wiederkehrt, als nach dem Zufall zu erwarten wäre. Ein weit verbreiteter synthetischer Datensatz zum Trainieren von Modellen zur Geldwäschebekämpfung (Altman und Kollegen, NeurIPS 2023) erzeugt acht davon: Fan-out, Fan-in, Gather-Scatter, Scatter-Gather, Zyklus, bipartit, Stack und zufällig. Bei Scatter-Gather teilt eine Quelle Gelder auf Zwischenknoten auf, die alle an ein einziges Ziel weiterleiten. Dadurch kommen Hops hinzu, ohne dass sich die Eigentumsverhältnisse ändern. Bei Gather-Scatter laufen viele Quellen an einem Knoten zusammen, der den Gesamtbetrag verteilt, was typisch für eine Sammeladresse eines Betrugs ist. Ein Stack besteht aus zwei vollständig miteinander verbundenen Ebenen von Zwischenknoten. Die Suche nach Motiven erfolgt über Musterabfragen in Graphdatenbanken oder zeitlich eingeschränkte Self-Joins auf der Kantenliste. Das Zeitfenster ist der entscheidende Parameter: Scatter-Gather innerhalb einer Stunde ist ein starkes Signal; über ein Jahr hinweg ist es alltäglicher Geschäftsverkehr.
Signale, keine Schlussfolgerungen
Kanten sind aufgezeichnete Tatsachen; Rollen, Muster und Motive sind Interpretationen, für die es harmlose Erklärungen gibt. Behandeln Sie jedes davon als Anlass für eine genauere Prüfung, kombinieren Sie unabhängige Signale, bevor Sie eine Schlussfolgerung ziehen, und dokumentieren Sie die verwendeten Schwellenwerte (Gradgrenzen, Zeitfenster, Betragstoleranzen), damit ein anderer Analyst sie reproduzieren und hinterfragen kann.
Prüfungsschwerpunkt: der Unterschied zwischen Transaktions-, Adress- und Entitätsgraphen und ihre jeweiligen Einsatzgebiete; warum der UTXO-Ausgabegraph exakt ist, während der Adressgraph eine Zuordnungsannahme benötigt; Berechnung proportionaler Kantengewichte für eine Transaktion mit mehreren Inputs und Outputs; die erforderlichen Attribute jeder Kante und warum parallele Kanten ihre Zeitstempel behalten; die drei Quellen von Kanten im Kontenmodell und warum rückgängig gemachte Vorgänge ausgeschlossen werden; Begrenzung eines Graphen und Behandlung von Superknoten als Haltepunkte; Grad, Durchleitungsquote und Haltedauer als Rollenindikatoren; Betweenness auf einem begrenzten Teilgraphen; Fan-in, Fan-out, Peel Chains (und warum der Restbetrag verfolgt wird), Zyklen und Scatter-Gather-Motive als Signale, die eine Bestätigung und dokumentierte Schwellenwerte erfordern.
Übungsfragen
Prüfen Sie Ihr Verständnis. Diese Fragen zählen nicht für die Prüfung.
Melden Sie sich an, um Ihren Fortschritt zu speichern und später weiterzumachen. Kostenlos. Anmelden