Vue d'ensemble pour développeurs
Pour commencer
Si vous voulez simplement savoir comment publier sur Hashiverse de manière programmatique — par bouton, Python ou ligne de commande — commencez ici. Si vous souhaitez plutôt savoir comment Hashiverse a été construit, poursuivez la lecture.
Hashiverse est un réseau social P2P décentralisé et résistant à la cryptographie post-quantique. Les ambitions décrites dans la section Vision se traduisent directement en décisions techniques qu'il vaut la peine de comprendre avant de plonger dans le code. Cette section couvre ces décisions : pourquoi elles ont été prises, ce qu'elles coûtent, et où elles vivent dans le code source.
Organisation du dépôt
hashiverse/
├── hashiverse-rust/ Workspace Rust (nightly)
│ ├── hashiverse-lib/ Protocole de base — natif + WASM
│ ├── hashiverse-server-lib/ Bibliothèque serveur (infra réutilisable)
│ ├── hashiverse-server/ Binaire serveur (fin emballage)
│ ├── hashiverse-client-wasm/ Wrapper WASM navigateur
│ └── hashiverse-integration-tests/ Tests bout-en-bout
├── hashiverse-client-web/ SPA TypeScript / React 19
└── www/ Ce site (Astro) La conception en deux couches
hashiverse-lib est le protocole. Il compile en code natif (pour le serveur) et en WebAssembly (pour le client navigateur). Toute la cryptographie, la logique DHT, le codage des publications et l'API client vivent ici. Toute plateforme capable d'exécuter du WASM ou du Rust natif peut être un participant à part entière du réseau.
hashiverse-client-web est le client navigateur de référence — une SPA React 19 qui charge le client WASM dans un Web Worker, gardant le thread principal libre. Elle parle au module WASM via une interface de passage de messages ; la logique de protocole qu'elle appelle est identique à celle qui tourne nativement sur le serveur.
Quatre modules dans hashiverse-lib
- transport/ — Traits abstraits (
TransportFactory,TransportServer,TransportServerHandler) avec deux implémentations : en mémoire (pour les tests) et HTTP/TCP (pour la production). On peut changer de transport sans modifier la logique du protocole. - protocol/ — Encodage/décodage des paquets RPC avec proof-of-work et compression, structures des pairs, types de requêtes/réponses, structures de données pour les publications et les bundles.
- client/ — API
HashiverseClient, suivi des pairs, gestion des bundles de publications, fil avec parcours récursif des buckets, et traits enfichablesClientStorage/KeyLockerManager. - tools/ — Types de base (
Hash,Id,Signature), primitives cryptographiques, proof-of-work, abstractionTimeProvider, et configuration du protocole.
Par où commencer
Si vous découvrez la base de code, les meilleurs points d'entrée sont :
-
hashiverse-lib/src/lib.rs— la carte des modules. Quatre modules de premier niveau, chacun à la portée clairement délimitée. -
hashiverse-lib/src/client/mod.rs— l'API client publique. La surface d'interaction avec laquelle un développeur qui bâtit sur le protocole travaille. -
hashiverse-integration-tests/tests/— tests bout-en-bout qui démarrent en mémoire des topologies de serveurs réelles et exercent toute la pile du protocole. Les lire est la manière la plus rapide de comprendre comment les pièces s'assemblent.
Les sections de ce guide développeur couvrent chacune un domaine de conception spécifique. Chacune renvoie aux fichiers source pertinents pour que vous puissiez suivre les idées directement dans le code.