Esta guía configura un stake pool de la testnet Musashi en un nodo Dingo, en dos secciones:
Configuración del nodo Dingo.
Registro del pool en la testnet Musashi.
⚠️ Musashi es la testnet del prototipo de Leios. Se reinicia (respin) de vez en cuando, y cada respin necesita una versión de Dingo que incluya la nueva configuración de Musashi. Consulta las notas de versión de Dingo para comprobar la compatibilidad con Musashi antes de empezar.
✅ Esta guía asume una configuración típica de Linux con systemd, en una máquina x86-64 (amd64) o ARM64 (aarch64). Por favor ajusta los comandos y rutas según sea necesario.
Musashi necesita el cardano-cli de la versión del prototipo de Leios que corresponde a la red. Encuentra la versión de la red en el campo MinNodeVersion del config.json de Musashi. Por ejemplo, 11.1.0.164-prototype-2026w42 corresponde a la versión rc-2026w42 de la página de versiones de ouroboros-leios.
Crea un directorio y entra en él:
mkdir -p "$DINGO_HOME/cli" && cd "$DINGO_HOME/cli"
La versión de Leios nombra sus builds de Linux x86_64 y aarch64. Define la etiqueta de la versión y tu arquitectura, y después descarga el archivo comprimido y su checksum:
Dingo incluye configuraciones de red de Cardano integradas (archivos de génesis y config.json) para Musashi, así que no las necesita para ejecutarse. cardano-cli necesita el archivo de génesis de Shelley más adelante en esta guía, y Dingo necesita un archivo de topología.
Crea el directorio config y descarga los archivos:
mkdir -p "$DINGO_HOME/config" && cd "$DINGO_HOME/config"
Reemplaza los marcadores RELAY_* con las direcciones y puertos que copiaste de Kleioscan, y define valency con el número de relays que agregaste. Deja el resto del archivo tal como se descargó; useLedgerAfterSlot cambia cuando se hace un respin de la red.
Paso 5 - Crear el archivo de configuración dingo.yaml
Crea el directorio de configuración y el directorio de la base de datos:
sudo mkdir -p /etc/dingo
mkdir -p $DINGO_HOME/.dingo
Crea el archivo dingo.yaml:
La variable $DINGO_HOME se expandirá automáticamente a la ruta de tu directorio de inicio.
sudo bash -c "cat <<EOF > /etc/dingo/dingo.yaml
# Global data directory for both blob and metadata storage plugins.
# Can be overridden with CARDANO_DATABASE_PATH or --data-dir.
databasePath: \"$DINGO_HOME/.dingo\"
# Network
network: \"musashi\"
relayPort: 3010
socketPath: \"$DINGO_HOME/dingo.socket\"
# Path to the topology configuration file for Cardano node
topology: \"$DINGO_HOME/config/topology.json\"
# Mempool: 25 MiB, the Leios size. Dingo v0.88.0 keeps the 1 MiB
# default on Musashi, which fills and expires transactions.
plugins:
mempool:
config:
capacity: 26214400
EOF"
💡 El bloque plugins.mempool aumenta el mempool del valor por defecto de Dingo, 1 MiB, a 25 MiB, el tamaño que Dingo usa para Leios. Con 1 MiB el mempool se llena en Musashi y las transacciones expiran antes de incluirse.
Puedes ver y verificar el archivo dingo.yaml ejecutando:
cat /etc/dingo/dingo.yaml
💡 Consejo: Asegúrate de que el puerto 3010 esté abierto.
Crea una carpeta keys para las claves de tu pool y los archivos de certificados, y entra en ella. Haz una copia de seguridad de esta carpeta: estas claves controlan tu pool.
mkdir -p "$DINGO_HOME/keys" && cd "$DINGO_HOME/keys"
Crea la dirección de pago y guárdala en payment.addr:
cardano-cli dijkstra address build \
--payment-verification-key-file payment.vkey \
--stake-verification-key-file stake.vkey \
--out-file payment.addr
Muestra tu dirección de pago y cópiala:
cat payment.addr; echo
Ve al faucet de Musashi, pega tu dirección en el primer formulario (address), marca su casilla reCAPTCHA y envíalo. El faucet envía 10,000 ada de prueba, lo que cubre el depósito de 500 ada del pool, el depósito de 2 ada de la dirección de stake, el pledge y las comisiones.
Confirma que llegaron los ada de prueba. Debes ver una entrada de UTxO:
Las claves BLS son las claves que los pools usan para votar y certificar los endorser blocks de Leios. El certificado de registro del pool del Paso 9 no se puede crear sin una.
La URL de metadatos del registro de tu pool puede tener como máximo 128 caracteres. Si ya alojas los metadatos en tu propio sitio web, define METADATA_URL con esa URL más abajo y omite los pasos de GitHub. De lo contrario, GitHub Pages los aloja gratis:
Inicia sesión en GitHub y crea un nuevo repositorio public llamado pool.
En el repositorio, selecciona Add file → Upload files, sube tu meta.json y haz commit en la rama main.
Abre Settings → Pages. En Build and deployment, define Source como Deploy from a branch, elige la rama main y la carpeta / (root), y selecciona Save.
Después de uno o dos minutos, tus metadatos se sirven en https://YOUR_GITHUB_USERNAME.github.io/pool/meta.json.
Define la URL y comprueba que funciona y que no supera los 128 caracteres:
⚠️ Sube el archivo exactamente como cardano-cli calculó su hash. Editarlo después en GitHub cambia el hash, de modo que ya no coincide con el hash de tu registro y las wallets y los exploradores ignoran tus metadatos.
Paso 9 - Registrar la dirección de stake y el pool
Define RELAY_IP con la dirección IPv4 pública de tu nodo, la que usan otros nodos para llegar a él. La URL de metadatos proviene de la METADATA_URL que definiste en el Paso 8.
RELAY_IP=YOUR_PUBLIC_IP
Después crea el certificado. Los valores siguientes establecen un pledge de 1,000 ada de prueba, un costo fijo de 170 ada de prueba y un margen del 5%.
Un pledge de 1,000 ada es demasiado pequeño para que tu pool sea seleccionado para forjar bloques. El faucet puede delegar unos 1,000,000 ada de prueba a tu pool.
Obtén el ID de tu pool en formato bech32 (pool1…):
cardano-cli dijkstra stake-pool id --output-bech32 --cold-verification-key-file cold.vkey
Ve al faucet de Musashi, pega el ID de tu pool en el segundo formulario (pool, el formulario inferior de la captura de pantalla del Paso 3), marca su casilla reCAPTCHA y envíalo.
La clave pública dentro de blsKey debe coincidir con tu clave. Compárala con tu bls.vkey sin su prefijo CBOR 5860 de 4 caracteres:
jq -r .cborHex bls.vkey | cut -c5-
bksRegisteredIn es la epoch en la que tu registro surte efecto. cardano-cli informa esta epoch porque el nodo no expone la epoch en la que se registró la clave. Anótala: la clave caduca un número fijo de epochs después (consulta el Paso 15).
💡 Consulta la página del programa de recompensas de la testnet Musashi para más detalles. Los pools del programa reportan telemetría con Metsuke, un agente creado para el cardano-node de Haskell que lee el endpoint de Prometheus del nodo y sus líneas de traza.
Restringe las claves de firma para que solo tu usuario pueda leerlas. Dingo se niega a cargar una clave de firma BLS que el grupo u otros usuarios puedan leer:
chmod 600 $DINGO_HOME/keys/*.skey
Reemplaza tu dingo.yaml con la configuración de block producer, que agrega tu clave KES, tu clave VRF, tu certificado operativo y tu clave BLS a los ajustes de la Sección 1:
sudo bash -c "cat <<EOF > /etc/dingo/dingo.yaml
# Global data directory for both blob and metadata storage plugins.
# Can be overridden with CARDANO_DATABASE_PATH or --data-dir.
databasePath: \"$DINGO_HOME/.dingo\"
# Network
network: \"musashi\"
relayPort: 3010
socketPath: \"$DINGO_HOME/dingo.socket\"
# Path to the topology configuration file for Cardano node
Las claves BLS caducan. Una clave es válida mientras la epoch actual sea menor que bksRegisteredIn más la antigüedad máxima de clave de la red, que la testnet anuncia. Después de eso, tu pool conserva su puesto en el comité pero no puede votar.
Rotar la clave es un nuevo registro con una nueva clave BLS y todos los demás valores sin cambios. Rota la clave con mucha antelación a su caducidad: la nueva clave surte efecto en un límite de epoch.
Crea la nueva clave y conserva la anterior hasta que la rotación esté on-chain:
cd $DINGO_HOME/keys
cardano-cli dijkstra node key-gen-BLS \
--verification-key-file bls-new.vkey \
--signing-key-file bls-new.skey
Crea el nuevo certificado de registro con los mismos valores que en el Paso 9. En una shell nueva, define antes RELAY_IP y METADATA_URL de nuevo:
Cambia Dingo a la nueva clave solo después de que bksRegisteredIn muestre la nueva epoch y haya pasado el siguiente límite de epoch. Después define leiosVoteSigningKeyFile en /etc/dingo/dingo.yaml como la ruta completa de la nueva clave (muéstrala con echo $DINGO_HOME/keys/bls-new.skey), haz que solo tu usuario pueda leerla (chmod 600) y reinicia Dingo con sudo systemctl restart dingo.
Dingo sirve métricas de Prometheus en 127.0.0.1:12798. Para graficarlas, sigue la guía de dashboards de Grafana (en inglés) y elige musashi en el selector de red de los dashboards.
Para comprobar desde la línea de comandos si tu pool está votando:
dingo_metrics_leios_votes_not_emitted_total cuenta los endorser blocks que tu nodo no votó, por motivo. Hasta que tu clave BLS esté en el snapshot de stake on-chain, el conteo aumenta bajo reason="no_key".
¡Felicidades! Tienes un nodo Dingo de Leios ejecutándose en la testnet Musashi.