Sonic

Pensada para que puedas partir desde un servidor limpio (Ubuntu 22.04 LTS o similar) y terminar firmando bloques sin sustos.

Requisitos de hardware y red

Recurso

Mínimo recomendado

CPU

4 vCPU

RAM

32 GB

Disco

1 TB NVMe/SSD local

Banda ancha

≥ 1 Gbps simétrico y redundante

Puertos

5050 TCP + UDP (o el que redefinas con --port)

Tip: evita volúmenes en red (EBS, etc.). La latencia penaliza el consenso.

Preparación básica del servidor

# Crear un usuario sin privilegios.

sudo adduser --disabled-password sonic
sudo usermod -aG sudo sonic

Actualiza sistema, fija zona horaria, habilita UFW y abre solo el puerto 5050.

Instalar herramientas de compilación y Go ≥ 1.22

Compilar el cliente sonicd

Cargar el genesis y preparar la base de datos

Sincronizar hasta la “cabeza” de la cadena

Espera a que la diferencia de bloques (“age”) sea de solo unos segundos.

Crear la wallet del validador

Transfiere ≥ 500 000 S (self-stake mínimo) a la dirección generada.

Generar la clave de firma de consenso

Guarda la clave y su contraseña fuera del nodo (USB, HSM, etc.)

Registrar el validador on-chain

  1. Abre SonicScan y el contrato SFC (0xFC00FACE00000000000000000000000000000000).

  2. Ejecuta createValidator indicando:

  3. public key*, validator name, y la cantidad a stakear (≥ 500 000 S).

Espera la confirmación y apunta tu validatorID.

Arrancar el nodo en modo validador

Hacerlo “a prueba de reinicios” con systemd

Crea /etc/systemd/system/sonicd.service:

La línea LimitNOFILE=4096 evita el típico error de “too many open files”.

Sube un JSON accesible por HTTPS con este formato:

Después, llama a updateInfo en el contrato STI para enlazarlo

Seguridad: arquitectura de sentry nodes

  • ¿Por qué? Aislas tu validador de ataques DDoS.

  • Cómo: Despliega 2-3 nodos “sentry” en la nube, con IP pública.

  1. En config.toml del validador pon pex=false y lista los persistent_peers con los nodeIDs de tus sentries.

  2. En los sentry deja pex=true, añade el validador en persistent_peers y su nodeID en private_peer_ids para que no se filtre. (forum.cosmos.network)

  • Mantén las conexiones entre validador ↔ sentry en red privada/VPN.

Monitorización y alertas

Aunque sonicd aún no expone un endpoint Prometheus oficial, la práctica habitual es:

  • Node Exporter + Prometheus + Grafana para recursos del servidor.

  • Logs de journalctl -u sonicd con alertas de inactividad (> 5 min).

  • Verifica tu voting power y slashing en SonicScan o scripts RPC.

Actualizaciones y copias de seguridad

  1. Backups: ~/.sonic/keystore/* y la carpeta validator (claves de firma).

  2. Upgrade de versión: git pull && git fetch --tags && git checkout vX.Y.Z && make all

  • Para cambios de protocolo, sigue las notas de la release.

  1. Snapshots: guarda una instantánea comprimida de la DB para restauraciones rápidas (útil al crear nuevos sentries).

Solución de problemas frecuentes

Síntoma

Causa típica

Solución

too many open files

Límite ulimit bajo

Aumenta LimitNOFILE en systemd a 4096+ (hub.cosmos.network)

age de bloques no baja

Puertos/firewall

Revisa que 5050 TCP/UDP esté abierto y sin filtrado

Saliste del active set

Caída prolongada

Levanta el nodo, espera sync y verifica auto-unjail

Last updated