# Analyse Architecturale Approfondie - 4NK Environment **Date** : 2025-01-27 **Version** : 2.0 **Contexte** : Analyse approfondie de l'architecture 4NK et du projet LeCoffre ## 📋 Vue d'ensemble DĂ©taillĂ©e Cette analyse approfondie prĂ©sente l'architecture complĂšte de l'environnement 4NK, incluant tous les modules, leurs dĂ©pendances, configurations, et le systĂšme de dĂ©ploiement par phases. ## đŸ—ïž Architecture GĂ©nĂ©rale DĂ©taillĂ©e ### Structure des Submodules ``` 4NK_env/ # Environnement centralisĂ© ├── 4NK_modules/ # 13 modules 4NK (SDK, services) │ ├── sdk_relay/ # Relais WebSocket central (Rust) │ ├── sdk_storage/ # Stockage temporaire (Rust) │ ├── sdk_signer/ # Service de signature (TypeScript) │ ├── sdk_client/ # Client SDK (Rust/WASM) │ ├── sdk_common/ # Composants communs (Rust) │ ├── sdk-signer-client/ # Client signeur (TypeScript) │ ├── ihm_client/ # Interface utilisateur (Vite/React) │ ├── 4NK_vault/ # API sĂ©curisĂ©e configurations (Python) │ ├── 4NK_certificator/ # Ancrage cryptographique (Rust) │ ├── 4NK_miner/ # Service de minage (Rust) │ ├── 4NK_web_status/ # Service de statut (Python) │ ├── blindbit-oracle/ # Oracle Bitcoin (Rust) │ ├── rust-silentpayments/ # Silent Payments (Rust) │ └── doc_api/ # Documentation API ├── projects/lecoffre/ # Projet LeCoffre (notaires) │ ├── lecoffre_node/ # Docker de contrĂŽle │ ├── lecoffre-front/ # Frontend Next.js │ └── lecoffre-back-mini/ # Backend centralisĂ© ├── IA_agents/ # Agents IA et documentation ├── docs/ # Documentation centralisĂ©e ├── scripts/ # Scripts de gestion centralisĂ©s └── confs/ # Configurations dĂ©ployĂ©es (4NK_vault) ``` ## 🔧 Modules 4NK - Analyse Approfondie ### 1. **sdk_relay** - Service de Relais WebSocket Central **RĂŽle** : Relais central pour les communications WebSocket et la synchronisation mesh - **Technologie** : Rust (tokio, async-trait, futures-util) - **Ports** : 8090 (WebSocket), 8091 (HTTP health) - **DĂ©pendances** : - `sdk_common` (git: https://git.4nkweb.com/4nk/sdk_common.git) - `bitcoincore-rpc` (0.18) - Interface Bitcoin Core - `tokio-tungstenite` (0.21.0) - WebSocket - `zeromq` (0.4.1) - ZMQ Bitcoin Core - **FonctionnalitĂ©s** : - Serveur WebSocket configurable - Synchronisation mesh entre relais - Gestion des processus et membres - Interface avec Bitcoin Core (RPC + ZMQ) - IntĂ©gration Blindbit pour Silent Payments - Cache de dĂ©duplication - Gestion d'Ă©tat locale dans `~/` - **Architecture** : Rust avec gestion d'Ă©tat locale - **Configuration** : Fichier de configuration via `--config` - **Healthcheck** : `/health` sur port 8091 ### 2. **sdk_storage** - Service de Stockage Temporaire SĂ©curisĂ© **RĂŽle** : Stockage temporaire avec TTL et chiffrement - **Technologie** : Rust (tide, async-std) - **Port** : 8081 (mappĂ© depuis 8080) - **API** : - `POST /store` : Stockage avec clĂ©/valeur/TTL - `GET /retrieve/:key` : RĂ©cupĂ©ration des donnĂ©es - **FonctionnalitĂ©s** : - Stockage temporaire avec expiration - ClĂ©s hexadĂ©cimales 64 caractĂšres - Valeurs hexadĂ©cimales - TTL optionnel (permanent si non spĂ©cifiĂ©) - Chiffrement des donnĂ©es - **Architecture** : Rust avec async-std - **Healthcheck** : `/health` sur port 8080 ### 3. **sdk_signer** - Service de Signature TypeScript **RĂŽle** : Service de signature pour l'Ă©cosystĂšme 4NK - **Technologie** : TypeScript avec support WASM - **FonctionnalitĂ©s** : - Gestion des processus et signatures - Communication sĂ©curisĂ©e - CompatibilitĂ© WASM (stub temporaire) - Interface avec le rĂ©seau de relais - Validation des permissions - **Architecture** : TypeScript avec support WASM - **État** : Compatible avec stub sdk_client - **DĂ©pendances** : Node.js 18+, npm/yarn ### 4. **sdk_client** - Client SDK Rust/WASM **RĂŽle** : Client SDK pour l'interaction avec l'Ă©cosystĂšme 4NK - **Technologie** : Rust avec interface WebAssembly - **FonctionnalitĂ©s** : - Interface avec les services 4NK - Gestion des connexions WebSocket - Support des processus et transactions - Compilation WASM pour le web - **Architecture** : Rust avec interface WASM - **Usage** : ImportĂ© par sdk_signer et autres clients ### 5. **sdk_common** - BibliothĂšque Commune **RĂŽle** : Composants communs partagĂ©s entre tous les modules - **Technologie** : Rust - **FonctionnalitĂ©s** : - Types et structures communes - Utilitaires partagĂ©s - Protocoles de communication - Support Blindbit (feature: "blindbit-backend") - Support parallĂšle (feature: "parallel") - **Usage** : ImportĂ© par tous les autres modules - **Features** : parallel, blindbit-backend ### 6. **sdk-signer-client** - Client Signeur **RĂŽle** : Client pour l'interaction avec le service de signature - **Technologie** : TypeScript - **FonctionnalitĂ©s** : - Interface avec sdk_signer - Gestion des signatures - Communication sĂ©curisĂ©e - **Architecture** : TypeScript client ### 7. **ihm_client** - Interface Homme-Machine **RĂŽle** : Interface utilisateur pour la gestion des clĂ©s et processus - **Technologie** : Vite + React - **Port** : 3003 - **FonctionnalitĂ©s** : - Interface de gestion des clĂ©s Bitcoin - Gestion des processus - Interface utilisateur web - Variables d'environnement Vite - **DĂ©pendances** : sdk_relay, sdk_storage - **Variables** : VITE_JWT_SECRET_KEY, VITE_API_BASE_URL, VITE_WS_URL, VITE_STORAGE_URL, VITE_SIGNER_URL, VITE_BOOTSTRAPURL ### 8. **4NK_vault** - SystĂšme de Gestion des Configurations **RĂŽle** : API sĂ©curisĂ©e pour la gestion centralisĂ©e des configurations - **Technologie** : Python Flask - **Port** : 6666 (HTTPS) - **SĂ©curitĂ©** : - Authentification par clĂ©s utilisateur - Chiffrement quantique rĂ©sistant (ChaCha20-Poly1305) - Rotation automatique des clĂ©s (toutes les heures) - Isolation par environnement (dev, prod) - **FonctionnalitĂ©s** : - RĂ©solution des variables d'environnement - Synchronisation vers `confs/` dans le docker de contrĂŽle - Protection des secrets - ClĂ©s individuelles par utilisateur/environnement - **Endpoints** : - `GET /health` - ContrĂŽle de santĂ© - `GET /info` - Informations API - `GET /routes` - Routes disponibles - `GET //` - Fichier chiffrĂ© - **DĂ©ploiement** : Synchronise les configurations vers `confs/` ### 9. **4NK_certificator** - Service d'Ancrage Cryptographique **RĂŽle** : Ancrage pĂ©riodique sur Bitcoin mainnet des empreintes des Ă©changes - **Technologie** : Rust - **FonctionnalitĂ©s** : - Surveillance des messages du relay 4NK - DĂ©tection des paiements Bitcoin - Enregistrement pĂ©riodique sur blockchain - MĂ©triques de volume de donnĂ©es - Base de donnĂ©es SQLite - **Architecture** : Rust avec base de donnĂ©es SQLite - **État** : MVP complet implĂ©mentĂ© - **Composants** : - RelayMonitor (surveillance WebSocket) - PaymentWatcher (surveillance Bitcoin) - Base de donnĂ©es SQLite ### 10. **4NK_miner** - Service de Minage **RĂŽle** : Service de minage Bitcoin (dĂ©veloppement/test) - **Technologie** : Rust - **FonctionnalitĂ©s** : - Minage sur rĂ©seau Signet - GĂ©nĂ©ration de blocs de test - Interface avec le rĂ©seau Bitcoin - **Usage** : DĂ©veloppement et tests uniquement ### 11. **4NK_web_status** - Service de Statut **RĂŽle** : Service de monitoring et statut des services - **Technologie** : Python Flask - **Port** : 3006 - **FonctionnalitĂ©s** : - Monitoring des services - Interface de statut - MĂ©triques de santĂ© - API REST pour le statut - **DĂ©pendances** : Docker socket, logs directory ### 12. **blindbit-oracle** - Oracle Bitcoin Silent Payments **RĂŽle** : Service pour les paiements silencieux (Silent Payments) - **Technologie** : Rust - **Port** : 8000 - **FonctionnalitĂ©s** : - GĂ©nĂ©ration d'adresses Silent Payments - Validation des transactions - Interface HTTP REST - Scan filtrĂ© BIP158 - **DĂ©pendances** : Bitcoin Core - **Configuration** : blindbit.toml ### 13. **rust-silentpayments** - ImplĂ©mentation Silent Payments **RĂŽle** : ImplĂ©mentation Rust des Silent Payments - **Technologie** : Rust - **FonctionnalitĂ©s** : - GĂ©nĂ©ration d'adresses Silent Payments - Validation des transactions - Utilitaires cryptographiques - **Usage** : BibliothĂšque pour blindbit-oracle ## 🏱 Projet LeCoffre - Architecture Notariale DĂ©taillĂ©e ### Contexte MĂ©tier Le projet LeCoffre est une plateforme de gestion de documents sĂ©curisĂ©e pour les notaires, utilisant l'infrastructure 4NK pour la sĂ©curitĂ© et l'intĂ©gritĂ© des documents. ### Composants du Projet LeCoffre #### 1. **lecoffre_node** - Orchestrateur Principal **RĂŽle** : Docker de contrĂŽle et dĂ©ploiement pour LeCoffre - **Architecture** : Docker Compose avec Nginx intĂ©grĂ© - **Services dĂ©ployĂ©s** : - **tor** (btcpayserver/tor:0.4.8.10) - Proxy anonyme - **bitcoin** (build: ./bitcoin) - NƓud Bitcoin Signet - **blindbit** (git.4nkweb.com/4nk/blindbit-oracle:fixed-source) - Oracle Bitcoin - **sdk_relay** (git.4nkweb.com/4nk/sdk_relay:ext) - Relais WebSocket - **sdk_storage** (git.4nkweb.com/4nk/sdk_storage:ext) - Stockage temporaire - **lecoffre-front** (git.4nkweb.com/4nk/lecoffre-front:ext) - Frontend Next.js - **ihm_client** (git.4nkweb.com/4nk/ihm_client:ext) - Interface utilisateur - **grafana** (grafana/grafana:latest) - Monitoring - **loki** (grafana/loki:latest) - Collecte de logs - **promtail** (grafana/promtail:latest) - Agent de collecte - **status-api** (build: 4NK_web_status) - API de statut - **watchtower** (containrrr/watchtower) - Mise Ă  jour automatique - **signet_miner** (build: 4NK_miner) - Minage (profile: miner) - **Configuration** : CentralisĂ©e dans `confs/` (synchronisĂ©e depuis 4NK_vault) - **DĂ©ploiement** : Scripts automatisĂ©s avec phases de dĂ©marrage - **RĂ©seau** : btcnet (172.20.0.0/16) - **Volumes** : Persistance des donnĂ©es (bitcoin_data, blindbit_data, sdk_data, etc.) #### 2. **lecoffre-front** - Interface Utilisateur **RĂŽle** : Frontend Next.js pour l'application LeCoffre - **Technologie** : Next.js avec React - **Port** : 3004 (mappĂ© depuis 8080) - **FonctionnalitĂ©s** : - Interface utilisateur pour les notaires - Gestion des documents - IntĂ©gration avec l'Ă©cosystĂšme 4NK - Variables d'environnement Next.js - **Variables** : NEXT_PUBLIC_API_URL, NEXT_PUBLIC_4NK_URL, NEXT_PUBLIC_4NK_IFRAME_URL, NEXT_PUBLIC_IDNOT_BASE_URL - **DĂ©ploiement** : Conteneur Docker sur port 3004 - **User** : lecoffreuser (non-root) #### 3. **lecoffre-back-mini** - Backend CentralisĂ© **RĂŽle** : Backend centralisĂ© pour les besoins spĂ©cifiques des notaires - **DĂ©ploiement** : Sur dev3.4nkweb.com - **FonctionnalitĂ©s** : - APIs avec Stripe (paiements) - IntĂ©gration Mailchimp (email marketing) - IntĂ©gration OVH (SMS) - IntĂ©gration IdNot (HMR dev3 ↔ dev4 via OAuth2) - **Architecture** : Service centralisĂ© indĂ©pendant - **APIs** : - `/api/v1/health` - SantĂ© du service - `/api/v1/status` - Statut du service - `/api/v1/idnot/state` - État IdNot ## 🌐 Architecture de DĂ©ploiement DĂ©taillĂ©e ### Environnements et URLs - **dev4.4nkweb.com** : Machine principale (LeCoffre) - **dev3.4nkweb.com** : NƓud de bootstrap (signer centralisĂ©, mini back) ### URLs et Services - **LeCoffre Front** : https://dev4.4nkweb.com/lecoffre - **4NK iframe** : https://dev4.4nkweb.com - **Signer centralisĂ©** : dev3.4nkweb.com (module 4NK pour notaires) - **Mini back** : dev3.4nkweb.com (APIs Stripe, Mailchimp, OVH, IdNot) ### Architecture de DĂ©ploiement par Phases #### Phase 1: Services de Base (ParallĂšle) - **tor** : Proxy anonyme (btcpayserver/tor:0.4.8.10) - **sdk_storage** : Stockage temporaire (git.4nkweb.com/4nk/sdk_storage:ext) - **status-api** : API de statut (build: 4NK_web_status) #### Phase 2: Services Blockchain (SĂ©quentiel) - **bitcoin** → **blindbit** → **sdk_relay** - ChaĂźne de dĂ©pendances blockchain respectĂ©e #### Phase 3: Services Applicatifs (SĂ©quentiel) - **lecoffre-front** : Frontend Next.js - **ihm_client** : Interface utilisateur - DĂ©pendances : sdk_relay + sdk_storage #### Phase 4: Services de Monitoring (IndĂ©pendant) - **loki** → **promtail** → **grafana** - ChaĂźne de dĂ©pendances monitoring #### Phase 5: Services Utilitaires - **watchtower** : Mise Ă  jour automatique (interval: 30s) ## 🔐 SĂ©curitĂ© et Configuration DĂ©taillĂ©e ### 4NK_vault - Gestion CentralisĂ©e des Configurations - **RĂŽle** : API sĂ©curisĂ©e pour la gestion des configurations - **SĂ©curitĂ©** : - Chiffrement quantique rĂ©sistant (ChaCha20-Poly1305) - Authentification par clĂ©s utilisateur - Rotation automatique des clĂ©s (toutes les heures) - Isolation par environnement (dev, prod) - **DĂ©ploiement** : Synchronise vers `confs/` dans le docker de contrĂŽle - **Protection des secrets** : Fichiers .env inaccessibles, variables sĂ©parĂ©es ### Variables d'Environnement par Service - **bitcoin** : BITCOIN_RPC_USER, BITCOIN_RPC_PASSWORD, BITCOIN_RPC_PORT - **blindbit** : BLINDBIT_API_PORT, BITCOIN_RPC_URL - **sdk_relay** : RELAY_PORT, RELAY_HTTP_PORT, STORAGE_URL - **sdk_storage** : STORAGE_PORT, STORAGE_DATA_DIR - **lecoffre-front** : NEXT_PUBLIC_API_URL, NEXT_PUBLIC_4NK_URL, NEXT_PUBLIC_IDNOT_BASE_URL - **ihm_client** : VITE_API_URL, VITE_4NK_URL, VITE_RELAY_URL - **grafana** : GF_SECURITY_ADMIN_PASSWORD, GF_DATABASE_TYPE - **loki** : LOKI_CONFIG_FILE, LOKI_DATA_DIR - **promtail** : PROMTAIL_CONFIG_FILE, LOKI_URL - **status-api** : STATUS_API_PORT, STATUS_API_HOST ## 📊 Monitoring et ObservabilitĂ© DĂ©taillĂ©e ### Stack de Monitoring - **Grafana** (grafana/grafana:latest) : Dashboards et visualisation - **Loki** (grafana/loki:latest) : Collecte et stockage des logs - **Promtail** (grafana/promtail:latest) : Agent de collecte des logs - **Watchtower** (containrrr/watchtower) : Mise Ă  jour automatique ### Configuration Loki (CRITIQUE) - **OBLIGATOIRE** : `http_listen_address: 0.0.0.0` (pas 127.0.0.1) - **OBLIGATOIRE** : `instance_addr: 0.0.0.0` (pas 127.0.0.1) - **Fichier** : `/conf/loki/loki-config.yaml` - **Healthcheck** : `wget` (pas `curl`) ### Dashboards Disponibles - Vue d'ensemble LeCoffre - Bitcoin & Miner - Services Applications - SDK Services - Frontend Services ### Logs CentralisĂ©s - **RĂ©pertoire** : `/home/debian/4NK_env/projects/lecoffre/lecoffre_node/logs/` - **Services** : tor, bitcoin, blindbit, sdk_relay, sdk_storage, lecoffre-front, ihm_client, grafana, loki, promtail, status-api - **Collecte** : Promtail → Loki → Grafana ## 🔄 CI/CD et DĂ©ploiement DĂ©taillĂ© ### Branches et Tags - **Branche unifiĂ©e** : `ext` pour tous les dĂ©pĂŽts 4NK - **Branches spĂ©ciales** : `main` pour 4NK_certificator, 4NK_miner, 4NK_web_status - **Tag Docker** : `ext` pour toutes les images - **DĂ©clenchement** : Push sur `ext` → Build automatique ### Scripts de DĂ©ploiement DĂ©taillĂ©s - **start.sh** : DĂ©marrage complet avec phases et progression - **validate-deployment.sh** : Validation complĂšte du dĂ©ploiement - **maintenance.sh** : Menu de maintenance interactif - **backup-data.sh** : Sauvegarde des donnĂ©es - **update-images.sh** : Mise Ă  jour sĂ©curisĂ©e - **collect-logs.sh** : Collecte des logs - **deploy-grafana.sh** : DĂ©ploiement du monitoring - **sync-configs.sh** : Synchronisation des configurations ### Healthchecks DĂ©taillĂ©s - **tor** : tor-progress.sh (bootstrap %) - **bitcoin** : bitcoin-progress.sh (IBD, blocks, headers) - **blindbit** : blindbit-progress.sh (API, scan) - **sdk_relay** : sdk-relay-progress.sh (WebSocket, health) - **sdk_storage** : curl /health - **lecoffre-front** : ps aux | grep next-server - **ihm_client** : curl localhost:3003 - **grafana** : curl /api/health - **loki** : wget /ready - **promtail** : fichier positions.yaml - **status-api** : curl /api ## 🎯 Points ClĂ©s de l'Architecture Approfondie ### 1. **SĂ©paration des ResponsabilitĂ©s** - Services applicatifs indĂ©pendants du monitoring - Monitoring observant sans impacter - DĂ©pendances uniquement mĂ©tier ### 2. **SĂ©curitĂ© Multi-Niveaux** - 4NK_vault pour la gestion centralisĂ©e des configurations - Chiffrement quantique rĂ©sistant - Isolation des secrets et variables - Utilisateurs non-root dans les conteneurs ### 3. **DĂ©ploiement OptimisĂ©** - Phases de dĂ©marrage respectĂ©es - Scripts spĂ©cialisĂ©s obligatoires - Surveillance continue et diagnostic facilitĂ© - Healthchecks informatifs ### 4. **Maintenance FacilitĂ©e** - RedĂ©marrage sĂ©lectif possible - Scripts de maintenance interactifs - Documentation centralisĂ©e et Ă  jour - Logs centralisĂ©s et structurĂ©s ### 5. **Architecture Modulaire** - 13 modules 4NK avec rĂŽles spĂ©cialisĂ©s - Projet LeCoffre : Interface notariale - 4NK_vault : Gestion centralisĂ©e des configurations - Scripts centralisĂ©s et rĂ©utilisables --- **Document créé le 2025-01-27** **Version** : 2.0 **Usage** : Analyse architecturale approfondie pour les agents IA et l'Ă©quipe de dĂ©veloppement