Sonic
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)
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
sudo apt-get update && sudo apt-get install -y build-essential git
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -xzf go1.23.4.linux-amd64.tar.gz -C /usr/local
echo 'export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' | sudo tee /etc/profile.d/golang.sh
source /etc/profile.d/golang.sh
Compilar el cliente sonicd
git clone https://github.com/0xsoniclabs/Sonic.git
cd Sonic
git fetch --tags && git checkout -b v2.0.1 tags/v2.0.1 # Sustituye por la última versión estable
make all
sudo mv build/sonic* /usr/local/bin/
sonicd version # Comprueba la build
Cargar el genesis y preparar la base de datos
mkdir -p ~/.sonic && cd ~/.sonic
wget https://genesis.soniclabs.com/sonic-mainnet/genesis/sonic.g
GOMEMLIMIT=54GiB sonictool --datadir ~/.sonic --cache 12000 genesis \
--mode validator sonic.g
Esto deja tu base en el state root correcto y lista para sincronizar
Sincronizar hasta la “cabeza” de la cadena
GOMEMLIMIT=54GiB sonicd --datadir ~/.sonic --cache 12000 --mode validator
Espera a que la diferencia de bloques (“age”) sea de solo unos segundos.
Crear la wallet del validador
sonictool --datadir ~/.sonic account new
Transfiere ≥ 500 000 S (self-stake mínimo) a la dirección generada.
Generar la clave de firma de consenso
sonictool --datadir ~/.sonic validator new
Guarda la clave y su contraseña fuera del nodo (USB, HSM, etc.)
Registrar el validador on-chain
Abre SonicScan y el contrato SFC
(0xFC00FACE00000000000000000000000000000000).
Ejecuta createValidator indicando:
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
pkill sonicd # Detén la instancia de sincronización
GOMEMLIMIT=50GiB sonicd \
--datadir ~/.sonic --cache 12000 --mode validator \
--validator.id <ID> \
--validator.pubkey <PUBKEY> \
--validator.password <ruta/password.txt>
Desde este momento tu nodo participa en consenso y comienza a recibir recompensas (~6 % APR).
Hacerlo “a prueba de reinicios” con systemd
Crea /etc/systemd/system/sonicd.service
:
[Unit]
Description=Sonic Validator Node
After=network-online.target
[Service]
User=sonic
LimitNOFILE=4096
ExecStart=/usr/local/bin/sonicd --datadir /home/sonic/.sonic --cache 12000 \
--mode validator --validator.id <ID> --validator.pubkey <PUBKEY> \
--validator.password /home/sonic/.sonic/password.txt
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now sonicd
La línea LimitNOFILE=4096 evita el típico error de “too many open files”.
Publicar tu identidad (nombre y logo)
Sube un JSON accesible por HTTPS con este formato:
{
"name": "MiValidador",
"logoUrl": "https://miweb.com/logo.png",
"website": "https://miweb.com",
"contact": "mailto:[email protected]"
}
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.
En config.toml del validador pon pex=false y lista los persistent_peers con los nodeIDs de tus sentries.
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
Backups: ~/.sonic/keystore/* y la carpeta validator (claves de firma).
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.
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
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