197 lines
4.6 KiB
Markdown
197 lines
4.6 KiB
Markdown
# 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 '<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
|
|
|
|
```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 complet)
|
|
|
|
### ✅ Fonctionnalités implémentées
|
|
|
|
- [x] **RelayMonitor** : Connexion WebSocket au relay pour capturer les messages
|
|
- [x] **PaymentWatcher** : Surveillance Bitcoin RPC des paiements
|
|
- [x] **AnchorEngine** : Création et broadcast des transactions Bitcoin
|
|
- [x] **API REST** : Processes, métriques, ancrages, vérification, paiements
|
|
- [x] **Métriques Prometheus** : `/metrics` endpoint
|
|
- [x] **Database** : PostgreSQL avec migrations automatiques
|
|
- [x] **Health checks** : `/health` endpoint
|
|
- [x] **Configuration** : TOML avec tous les paramètres
|
|
- [x] **Docker** : Dockerfile + docker-compose complet
|
|
|
|
### 📋 Endpoints API
|
|
|
|
#### Processes
|
|
- `GET /api/v1/processes` - Liste tous les processus
|
|
- `GET /api/v1/processes/{id}/metrics` - Métriques d'un processus
|
|
- `GET /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 check
|
|
- `GET /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](https://4nkweb.com)
|