Referencia de Configuración
Todos los archivos de configuración se encuentran en el directorio config/. Formato TOML.
Red
[network]
name = "devnet" # "devnet", "testnet", "mainnet"
port = 8333 # Puerto de escucha P2P
rpc_port = 8545 # Puerto JSON-RPC
ws_port = 8546 # Puerto WebSocket
bootstrap_nodes = [] # Pares iniciales para descubrimiento
max_peers = 50 # Máximo de conexiones entre pares
connection_timeout = 30 # Tiempo de espera en segundos
| Parámetro | Desarrollo | Producción | Descripción |
|---|---|---|---|
max_peers | 10 | 50 | Máximo de conexiones P2P |
connection_timeout | 10s | 30s | Tiempo de espera de conexión entre pares |
Almacenamiento
[storage]
data_dir = "./data" # Directorio de la base de datos
cache_size_mb = 1024 # Caché de bloques RocksDB
write_buffer_size_mb = 64 # Buffer de escritura por CF
max_open_files = 1000 # Máximo de descriptores de archivo
sync_interval = 30 # Intervalo de sincronización WAL (segundos)
compression = true # Activar compresión LZ4
| Parámetro | Desarrollo | Producción | Descripción |
|---|---|---|---|
cache_size_mb | 256 | 1024 | Tamaño de caché de bloques |
write_buffer_size_mb | 16 | 64 | Buffer de escritura |
compression | false | true | Compresión de almacenamiento |
Proof-of-Unity (PoU)
[pou]
scoring_update_interval = 300 # Actualización de puntuación (segundos)
group_formation_interval = 600 # Reequilibrio de grupos (segundos)
consensus_sync_interval = 30 # Intervalo de sincronización (segundos)
min_eligibility_score = 1000 # Puntuación mínima (puntos base, 0-10000)
min_stake_amount = 150 # Stake mínimo para participar
min_uptime_requirement = 0.8 # Tiempo de actividad mínimo (0.0-1.0)
[pou.weights]
availability = 0.25 # Peso del tiempo de actividad
latency = 0.20 # Peso del tiempo de respuesta
integrity = 0.20 # Peso de corrección
reputation = 0.20 # Peso histórico
participation = 0.15 # Peso de actividad
[pou.groups]
group_size = 7 # Lightnodes por grupo
num_groups = 10 # Número de grupos
algorithm = "TopScore" # Algoritmo de formación de grupos
| Parámetro | Desarrollo | Producción | Descripción |
|---|---|---|---|
scoring_update_interval | 30s | 300s | Frecuencia de actualización de puntuaciones PoU |
group_formation_interval | 60s | 600s | Frecuencia de reequilibrio de grupos |
min_eligibility_score | 100 | 1000 | Puntuación mínima para participar |
group_size | 3 | 7 | Lightnodes por grupo |
Rendimiento
[performance]
max_scoring_time_ms = 1000 # Tiempo máximo de cómputo de puntuación
max_group_formation_time_ms = 3000
max_consensus_sync_time_ms = 500
target_tps = 1000 # Objetivo de transacciones por segundo
max_block_size = 2097152 # Tamaño máximo de bloque (bytes)
block_time_ms = 5000 # Tiempo objetivo de bloque
| Parámetro | Desarrollo | Producción | Descripción |
|---|---|---|---|
target_tps | 100 | 1000 | Rendimiento objetivo |
block_time_ms | 2000 | 5000 | Intervalo de bloques |
Latencia Adaptativa
[adaptive_latency]
enabled = true
base_latency_ms = 100 # Latencia base
max_latency_ms = 2000 # Latencia máxima aceptable
adjustment_factor = 0.05 # Factor de suavizado
epoch_window = 100 # Épocas para promediado
network_averaging = true # Promediado en toda la red
Consenso
[consensus]
timeout = 10 # Tiempo de espera por ronda (segundos)
max_rounds = 10 # Máximo de rondas de votación
quorum_threshold = 0.67 # Quórum BFT (2f+1)
enable_bft_optimizations = true # Vía rápida para votos unánimes
Penalización (Slashing)
[slashing]
enabled = true # Activar penalización (solo producción)
double_vote_slash = 0.50 # 50% de penalización por doble voto
downtime_slash = 0.10 # 10% de penalización por tiempo de inactividad
invalid_proposal_slash = 0.25 # 25% de penalización por bloques inválidos
downtime_threshold = 0.2 # 20% de bloques perdidos activa penalización
grace_period = 3600 # 1 hora de gracia antes de penalización por inactividad
Monitoreo
[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
Caché de Puntuaciones
[cache]
max_entries = 10000 # Tamaño de caché LRU
ttl_seconds = 300 # TTL de entrada de caché
cleanup_interval = 60 # Frecuencia de limpieza (segundos)
Configuraciones de Masternode
Configuraciones por masternode en exucutables/configs/masternode/mn-*.toml:
[node]
listen_port = 5021
group_node_timeout_secs = 600 # Tiempo de espera por inactividad del par
[storage]
db_path = "data/mn1"
Variables de Entorno
| Variable | Descripción |
|---|---|
RUST_LOG | Filtro de registro (p. ej., info,libp2p_gossipsub::behaviour=error) |
CARGO_TARGET_DIR | Directorio de salida de compilación |
RUSTFLAGS | Indicadores del compilador (p. ej., -C link-arg=/STACK:8388608) |