Im Folgenden findest du eine Anleitung, wie du den Ziggurat 3.0 Crawler für Zcash sowie die zugehörigen Programme Crunchy und P2P-Viz unter Ubuntu 22.04 ausführst, um Informationen über das Zcash-Netzwerk zu sammeln und zu visualisieren.
Das unten verlinkte Video folgt demselben Prozess.
Der Zcash Crawler befindet sich in einem Ordner mit dem Namen 'zcash', daher kann es ratsam sein, vor dem Klonen des Crawlers (runziggurat/zcash-Repo) ein neues Verzeichnis zu erstellen.
Führe aus dem Verzeichnis /Home die folgenden Befehle aus:
Code-highlight
mkdir runziggurat
cd runziggurat
git clone https://github.com/runziggurat/zcash.git
cd zcash
Oder öffne die Readme unter
'/runziggurat/zcash/src/tools/crawler/README.md'
Diese Seite enthält Informationen zur spezifischen Nutzung.
Code-highlight
$ cargo run --release --features crawler --bin crawler -- --help
OPTIONS:
-c, --crawl-interval <CRAWL_INTERVAL>
The main crawling loop interval in seconds [default: 5]
-h, --help
Print help information
-r, --rpc-addr <RPC_ADDR>
If present, start an RPC server at the specified address
-s, --seed-addrs <SEED_ADDRS>...
A list of initial standalone IP addresses and/or DNS servers to connect to
-n, --node-listening-port <NODE_LISTENING_PORT>
Default port used for connecting to the nodes [default: 8233]
-V, --version
Print version information
--seed-addrs \ --dns-seed ist das einzige erforderliche Argument und benötigt mindestens eine angegebene Adresse, damit es ausgeführt werden kann.
Der Befehl 'cargo run --release --features crawler --bin crawler -- --help' ist der eigentliche Startbefehl und gibt das gezeigte Hilfemenü aus.
Führe den Befehl aus
Code-highlight
cargo run --release --features crawler --bin crawler -- --help
Dadurch wird das Programm kompiliert und sichergestellt, dass alles ordnungsgemäß funktioniert.
Um den Crawler auszuführen, muss dem Startbefehl ein Flag '--seed-addrs' hinzugefügt werden, das mindestens eine gültige Zcash-Node-IP-Adresse enthält. Der Crawler sollte eine angemessene Zeit lang laufen dürfen, um ein genaues Ergebnis zu erhalten. Einige Beispiel-IP-Adressen von Nodes findest du unter https://mainnet.zcashexplorer.app/nodes.
Um Informationen vom Crawler abzurufen, während er läuft, muss dem Startbefehl das Flag '--rpc-addr' hinzugefügt werden. Dies ist nicht erforderlich, um nur den Crawler selbst auszuführen, andernfalls muss der Crawler jedoch gestoppt werden (ctrl+c oder SIGKILL), um überhaupt irgendwelche Informationen anzeigen zu können.
Der Crawler beginnt, mit dem Netzwerk zu kommunizieren (standardmäßig alle 20 Sekunden) und Netzwerkdaten zu sammeln.
Informationen vom Crawler können angezeigt werden, indem du mit curl die Node abfragst (dafür ist jq zur Anzeige dieser Informationen erforderlich).
Die Crawler-RPC-Adresse ist in diesem Beispiel auf '127.0.0.1:54321' gesetzt.
Dadurch werden die aktuell gesammelten Daten zu '.protocol_version' angezeigt, die im Feld '.result' enthalten sind. Das Feld '.result' ist sehr groß, daher ist es sinnvoll, stattdessen gezielt bestimmte Teile davon abzurufen. Weitere nützliche Datentypen sind '.num_known_nodes', '.num_good_nodes', '.user_agents' usw. Siehe den Abschnitt Metrics hier
Um Crunchy und P2P-Viz auszuführen, muss '.result' in eine .json-Datei umgeleitet werden.
Dadurch wird im aktuellen Verzeichnis eine Datei 'latest.json' erstellt. Diese Datei 'latest.json' wird mit Crunchy verwendet.
An diesem Punkt kann der Crawler mit 'ctrl+c' gestoppt werden, falls keine weiteren Daten benötigt werden. Der Crawler gibt im Terminal einen Bericht mit nützlichen Informationen aus.
Crunchy
Crunchy wird benötigt, um die ausgegebene json-Datei für die Verwendung mit P2P-Viz zu aggregieren.
Um Crunchy zu bauen, navigiere zu deinem Ordner '/runziggurat'
Um das Crunchy-Repo zu klonen, führe die folgenden Befehle aus
Code-highlight
git clone https://github.com/runziggurat/crunchy.git
cd crunchy
Kopiere die Datei 'latest.json' und füge sie in den Ordner 'crunchy/testdata/' ein.
Wähle im Pop-up des Dateiexplorers die Datei 'state.json' aus.
Die Weltkarte des Node-Explorers wird mit den Dateidaten gefüllt. Siehe die Readme hier für weitere Details zu Nutzungsoptionen und Einstellungen.
TIPPS!
Du kannst den Crawler ganz einfach mit dem Befehl 'timeout' auf einen zeitgesteuerten Crawl setzen; dieser sendet nach einer festgelegten Zeit ein bestimmtes Kill-Signal. Führe 'timeout --help' für weitere Informationen aus.
Der folgende Befehl startet den Crawler und stoppt ihn nach 50 Minuten automatisch.
Die Datei 'latest.json' kann direkt in '/testdata' abgerufen und geschrieben werden, sodass du sie nicht manuell kopieren und einfügen musst.
TIPPS!
IP-Adressinformationen können aus der Ausgabe gesammelt und dann verwendet werden, um den Crawler beim Start erneut zu seeden (--seed-addrs). Dadurch verringert sich die Zeit, die für einen vollständigen Crawl benötigt wird!