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

Wo man anfängt

Wenn du neu in der Codebasis bist, sind die besten Einstiegspunkte:

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.