Saltar al contenido principal

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ámetroDesarrolloProducciónDescripción
max_peers1050Máximo de conexiones P2P
connection_timeout10s30sTiempo 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ámetroDesarrolloProducciónDescripción
cache_size_mb2561024Tamaño de caché de bloques
write_buffer_size_mb1664Buffer de escritura
compressionfalsetrueCompresió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ámetroDesarrolloProducciónDescripción
scoring_update_interval30s300sFrecuencia de actualización de puntuaciones PoU
group_formation_interval60s600sFrecuencia de reequilibrio de grupos
min_eligibility_score1001000Puntuación mínima para participar
group_size37Lightnodes 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ámetroDesarrolloProducciónDescripción
target_tps1001000Rendimiento objetivo
block_time_ms20005000Intervalo 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

VariableDescripción
RUST_LOGFiltro de registro (p. ej., info,libp2p_gossipsub::behaviour=error)
CARGO_TARGET_DIRDirectorio de salida de compilación
RUSTFLAGSIndicadores del compilador (p. ej., -C link-arg=/STACK:8388608)