Entwickler-Überblick
Erste Schritte
Wenn du einfach wissen möchtest, wie du programmatisch in Hashiverse posten kannst — per Schaltfläche, Python oder Kommandozeile — fang hier an. Wenn du stattdessen wissen möchtest, wie Hashiverse aufgebaut ist, lies weiter.
Hashiverse ist ein dezentrales, post-quanten-resistentes P2P-Social-Network. Die Ambitionen, die im Abschnitt Idee beschrieben sind, übersetzen sich direkt in technische Entscheidungen, die es lohnt zu verstehen, bevor man in den Code eintaucht. Dieser Abschnitt behandelt diese Entscheidungen: warum sie getroffen wurden, was sie kosten und wo sie im Quellcode leben.
Aufbau des Repositorys
hashiverse/
├── hashiverse-rust/ Rust-Workspace (nightly)
│ ├── hashiverse-lib/ Kernprotokoll — nativ + WASM
│ ├── hashiverse-server-lib/ Serverbibliothek (wiederverwendbare Infra)
│ ├── hashiverse-server/ Serverbinary (dünner Wrapper)
│ ├── hashiverse-client-wasm/ Browser-WASM-Wrapper
│ └── hashiverse-integration-tests/ Ende-zu-Ende-Tests
├── hashiverse-client-web/ TypeScript-/React-19-SPA
└── www/ Diese Seite (Astro) Das Zwei-Schicht-Design
hashiverse-lib ist das Protokoll. Es kompiliert sowohl zu nativem Code (für den Server) als auch zu WebAssembly (für den Browser-Client). Sämtliche Kryptografie, DHT-Logik, Beitragskodierung und Client-API leben hier. Jede Plattform, die WASM oder natives Rust ausführen kann, kann ein vollwertiger Teilnehmer im Netzwerk sein.
hashiverse-client-web ist der Referenz-Browser-Client — eine React-19-SPA, die den WASM-Client in einem Web Worker lädt und so den Hauptthread frei hält. Sie spricht über eine Message-Passing-Schnittstelle mit dem WASM-Modul; die Protokolllogik, die sie aufruft, ist identisch mit der, die nativ auf dem Server läuft.
Vier Module in hashiverse-lib
- transport/ — Abstrakte Traits (
TransportFactory,TransportServer,TransportServerHandler) mit zwei Implementierungen: in-memory (für Tests) und HTTP/TCP (für die Produktion). Transports können getauscht werden, ohne die Protokolllogik zu berühren. - protocol/ — RPC-Paket-Kodierung/-Dekodierung mit Proof-of-Work und Kompression, Peer-Strukturen, Request-/Response-Typen, Beitrags- und Bundle-Datenstrukturen.
- client/ —
HashiverseClient-API, Peer-Tracker, Verwaltung der Beitragsbundles, Timeline mit rekursivem Bucket-Durchlauf und einsteckbare TraitsClientStorage/KeyLockerManager. - tools/ — Kerntypen (
Hash,Id,Signature), kryptografische Primitiven, Proof-of-Work,TimeProvider-Abstraktion und Protokollkonfiguration.
Wo man anfängt
Wenn du neu in der Codebasis bist, sind die besten Einstiegspunkte:
-
hashiverse-lib/src/lib.rs— die Modulkarte. Vier Module der obersten Ebene, jedes klar abgegrenzt. -
hashiverse-lib/src/client/mod.rs— die öffentliche Client-API. Die Schnittstelle, mit der ein Entwickler interagiert, der auf dem Protokoll aufbaut. -
hashiverse-integration-tests/tests/— Ende-zu-Ende-Tests, die im Speicher echte Servertopologien hochfahren und den vollen Protokollstack durchlaufen. Sie zu lesen ist der schnellste Weg zu verstehen, wie die Teile zusammenpassen.
Die Abschnitte in diesem Entwicklerleitfaden behandeln jeweils einen bestimmten Designbereich. Jeder verweist auf die relevanten Quelldateien, sodass du den Ideen direkt in den Code folgen kannst.