Référence de Configuration
Tous les fichiers de configuration se trouvent dans le répertoire config/. Format TOML.
Réseau
[network]
name = "devnet" # "devnet", "testnet", "mainnet"
port = 8333 # Port d'écoute P2P
rpc_port = 8545 # Port JSON-RPC
ws_port = 8546 # Port WebSocket
bootstrap_nodes = [] # Pairs initiaux pour la découverte
max_peers = 50 # Nombre maximal de connexions entre pairs
connection_timeout = 30 # Délai d'expiration en secondes
| Paramètre | Dev | Prod | Description |
|---|---|---|---|
max_peers | 10 | 50 | Connexions P2P maximales |
connection_timeout | 10s | 30s | Délai de connexion entre pairs |
Stockage
[storage]
data_dir = "./data" # Répertoire de la base de données
cache_size_mb = 1024 # Cache de blocs RocksDB
write_buffer_size_mb = 64 # Tampon d'écriture par CF
max_open_files = 1000 # Descripteurs de fichiers maximaux
sync_interval = 30 # Intervalle de synchronisation WAL (secondes)
compression = true # Activer la compression LZ4
| Paramètre | Dev | Prod | Description |
|---|---|---|---|
cache_size_mb | 256 | 1024 | Taille du cache de blocs |
write_buffer_size_mb | 16 | 64 | Tampon d'écriture |
compression | false | true | Compression du stockage |
Preuve d'Unité (PoU)
[pou]
scoring_update_interval = 300 # Mise à jour des scores (secondes)
group_formation_interval = 600 # Rééquilibrage des groupes (secondes)
consensus_sync_interval = 30 # Intervalle de synchronisation (secondes)
min_eligibility_score = 1000 # Score minimal (points de base, 0-10000)
min_stake_amount = 150 # Mise minimale pour participer
min_uptime_requirement = 0.8 # Disponibilité minimale (0.0-1.0)
[pou.weights]
availability = 0.25 # Poids de la disponibilité
latency = 0.20 # Poids du temps de réponse
integrity = 0.20 # Poids de la correction
reputation = 0.20 # Poids historique
participation = 0.15 # Poids de l'activité
[pou.groups]
group_size = 7 # Lightnodes par groupe
num_groups = 10 # Nombre de groupes
algorithm = "TopScore" # Algorithme de formation des groupes
| Paramètre | Dev | Prod | Description |
|---|---|---|---|
scoring_update_interval | 30s | 300s | Fréquence de mise à jour des scores PoU |
group_formation_interval | 60s | 600s | Fréquence de rééquilibrage des groupes |
min_eligibility_score | 100 | 1000 | Score minimal pour participer |
group_size | 3 | 7 | Lightnodes par groupe |
Performance
[performance]
max_scoring_time_ms = 1000 # Temps maximal de calcul des scores
max_group_formation_time_ms = 3000
max_consensus_sync_time_ms = 500
target_tps = 1000 # Débit cible en transactions par seconde
max_block_size = 2097152 # Taille maximale d'un bloc (octets)
block_time_ms = 5000 # Temps cible entre blocs
| Paramètre | Dev | Prod | Description |
|---|---|---|---|
target_tps | 100 | 1000 | Débit cible |
block_time_ms | 2000 | 5000 | Intervalle entre blocs |
Latence Adaptative
[adaptive_latency]
enabled = true
base_latency_ms = 100 # Latence de référence
max_latency_ms = 2000 # Latence maximale acceptable
adjustment_factor = 0.05 # Facteur de lissage
epoch_window = 100 # Époques pour la moyenne
network_averaging = true # Moyenne sur le réseau
Consensus
[consensus]
timeout = 10 # Délai d'expiration du tour (secondes)
max_rounds = 10 # Nombre maximal de tours de vote
quorum_threshold = 0.67 # Quorum BFT (2f+1)
enable_bft_optimizations = true # Chemin rapide pour les votes unanimes
Pénalités (Slashing)
[slashing]
enabled = true # Activer les pénalités (prod uniquement)
double_vote_slash = 0.50 # 50% de pénalité pour double vote
downtime_slash = 0.10 # 10% de pénalité pour indisponibilité
invalid_proposal_slash = 0.25 # 25% de pénalité pour blocs invalides
downtime_threshold = 0.2 # 20% de blocs manqués déclenche une pénalité
grace_period = 3600 # 1 heure de grâce avant pénalité d'indisponibilité
Surveillance
[monitoring]
enabled = true
host = "127.0.0.1"
port = 9090
update_interval_secs = 5
log_level = "info" # "debug", "info", "warn", "error"
[monitoring.thresholds]
block_stall_timeout_secs = 300
high_block_time_secs = 15
low_peer_count = 3
high_memory_usage = 0.9
Cache des Scores
[cache]
max_entries = 10000 # Taille du cache LRU
ttl_seconds = 300 # Durée de vie des entrées du cache
cleanup_interval = 60 # Fréquence de nettoyage (secondes)
Configurations des Masternodes
Configurations par masternode dans exucutables/configs/masternode/mn-*.toml :
[node]
listen_port = 5021
group_node_timeout_secs = 600 # Délai d'inactivité des pairs
[storage]
db_path = "data/mn1"
Variables d'Environnement
| Variable | Description |
|---|---|
RUST_LOG | Filtre de journalisation (ex. : info,libp2p_gossipsub::behaviour=error) |
CARGO_TARGET_DIR | Répertoire de sortie de compilation |
RUSTFLAGS | Options du compilateur (ex. : -C link-arg=/STACK:8388608) |