# 4NK Certificator Service d'ancrage cryptographique sur Bitcoin mainnet pour les volumes de données des relais 4NK. ## Description Le **Certificator** enregistre périodiquement sur le mainnet Bitcoin l'empreinte des échanges de données transitant par les relais 4NK. Il fournit une preuve vérifiable et immuable du volume de données échangées, avec un système de paiement conditionnel pour activer l'ancrage. ## Documentation Voir la spécification complète : [`../docs/CERTIFICATOR_SPECIFICATION.md`](../docs/CERTIFICATOR_SPECIFICATION.md) ## Fonctionnalités principales - **Ancrage périodique** : Enregistrement mensuel (configurable) sur Bitcoin mainnet - **Paiement conditionnel** : Ancrage activé uniquement si paiement détecté - **Métriques en temps réel** : Surveillance des volumes de données par processus - **API REST** : Accès aux métriques, ancrages et paiements - **Vérification** : Validation cryptographique des ancrages on-chain ## Installation ### Prérequis - Rust 1.70+ - PostgreSQL 15+ - Redis 7+ - Bitcoin Core (mainnet ou signet pour tests) - sdk_relay en cours d'exécution ### Configuration ```bash # Copier le fichier de configuration exemple cp config/certificator.toml.example config.toml # Éditer la configuration nano config.toml ``` ### Compilation ```bash cargo build --release ``` ### Initialisation de la base de données ```bash # Créer la base de données psql -U postgres -c "CREATE DATABASE certificator_db;" psql -U postgres -c "CREATE USER certificator WITH PASSWORD 'secure_password';" psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE certificator_db TO certificator;" # Les migrations sont appliquées automatiquement au démarrage ``` ### Lancement ```bash # Mode développement RUST_LOG=info cargo run # Mode production ./target/release/4nk_certificator ``` ## Usage ### API REST #### Lister les processus ```bash curl http://localhost:8082/api/v1/processes ``` #### Obtenir les métriques d'un processus ```bash curl "http://localhost:8082/api/v1/processes/abc123:0/metrics?start_block=800000&end_block=804320" ``` #### Lister les ancrages d'un processus ```bash curl http://localhost:8082/api/v1/processes/abc123:0/anchors ``` ### Health Check ```bash curl http://localhost:8082/health ``` ## Architecture ``` 4NK_certificator/ ├── src/ │ ├── main.rs # Point d'entrée │ ├── config.rs # Configuration │ ├── models.rs # Modèles de données │ ├── db.rs # Accès base de données │ ├── api/ # API REST │ │ ├── mod.rs │ │ ├── processes.rs │ │ ├── metrics.rs │ │ └── anchors.rs │ ├── monitor.rs # Surveillance relay │ └── anchor.rs # Logique d'ancrage ├── config/ │ └── certificator.toml.example ├── Cargo.toml └── README.md ``` ## Docker ### Build ```bash docker build -t git.4nkweb.com/4nk/4nk_certificator:latest . ``` ### Run ```bash docker compose -f ../lecoffre_node/docker-compose.certificator.yml up -d ``` ## Développement ### Tests ```bash cargo test ``` ### Linting ```bash cargo clippy ``` ### Formatage ```bash cargo fmt ``` ## Statut du projet **Version actuelle** : 0.1.0 (MVP en développement) ### TODO - [ ] Implémenter RelayMonitor (connexion WebSocket au relay) - [ ] Implémenter PaymentWatcher (surveillance Bitcoin RPC) - [ ] Implémenter AnchorEngine (création et broadcast des transactions) - [ ] Ajouter WebSocket API pour events temps réel - [ ] Implémenter JWT authentication - [ ] Ajouter métriques Prometheus - [ ] Tests unitaires et d'intégration - [ ] Documentation API (OpenAPI/Swagger) ## Licence Voir LICENSE dans le dépôt principal 4NK_env. ## Auteurs Équipe 4NK - [https://4nkweb.com](https://4nkweb.com)