4.6 KiB
4.6 KiB
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
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
# Copier le fichier de configuration exemple
cp config/certificator.toml.example config.toml
# Éditer la configuration
nano config.toml
Compilation
cargo build --release
Initialisation de la base de données
# Créer la base de données
psql -U postgres -c "CREATE DATABASE certificator_db;"
psql -U postgres -c "CREATE USER certificator WITH PASSWORD '<DB_PASSWORD>';"
psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE certificator_db TO certificator;"
# Les migrations sont appliquées automatiquement au démarrage
Lancement
# Mode développement
RUST_LOG=info cargo run
# Mode production
./target/release/4nk_certificator
Usage
API REST
Lister les processus
curl http://localhost:8082/api/v1/processes
Obtenir les métriques d'un processus
curl "http://localhost:8082/api/v1/processes/abc123:0/metrics?start_block=800000&end_block=804320"
Lister les ancrages d'un processus
curl http://localhost:8082/api/v1/processes/abc123:0/anchors
Health Check
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
docker build -t git.4nkweb.com/4nk/4nk_certificator:latest .
Run
docker compose -f ../lecoffre_node/docker-compose.certificator.yml up -d
Développement
Tests
cargo test
Linting
cargo clippy
Formatage
cargo fmt
Statut du projet
Version actuelle : 0.1.0 (MVP complet)
✅ Fonctionnalités implémentées
- RelayMonitor : Connexion WebSocket au relay pour capturer les messages
- PaymentWatcher : Surveillance Bitcoin RPC des paiements
- AnchorEngine : Création et broadcast des transactions Bitcoin
- API REST : Processes, métriques, ancrages, vérification, paiements
- Métriques Prometheus :
/metrics
endpoint - Database : PostgreSQL avec migrations automatiques
- Health checks :
/health
endpoint - Configuration : TOML avec tous les paramètres
- Docker : Dockerfile + docker-compose complet
📋 Endpoints API
Processes
GET /api/v1/processes
- Liste tous les processusGET /api/v1/processes/{id}/metrics
- Métriques d'un processusGET /api/v1/processes/{id}/anchors
- Ancrages d'un processus
Anchors
POST /api/v1/anchors/verify
- Vérifier un ancrage on-chain
Payments
GET /api/v1/payments/{address}
- Historique des paiements
Monitoring
GET /health
- Health checkGET /metrics
- Métriques Prometheus
🔄 TODO
- WebSocket API pour events temps réel
- JWT authentication
- Tests unitaires et d'intégration
- Documentation API (OpenAPI/Swagger)
- CLI pour opérations manuelles
Licence
Voir LICENSE dans le dépôt principal 4NK_env.
Auteurs
Équipe 4NK - https://4nkweb.com