CONSEJO
Si eres un principiante, se recomienda que comiences tu viaje como validador en la red de Kusama. Consulta la guía de Kusama para obtener detalles sobre cómo empezar.
Preparativos #
¡Ejecutar un validador en una red activa es una gran responsabilidad! Serás responsable no solo de tu propio stake, sino también del stake de tus nominadores actuales. Si cometes un error y recibes un recorte (slash), tus tokens y tu reputación estarán en riesgo. Sin embargo, ejecutar un validador también puede ser muy gratificante, al saber que contribuyes a la seguridad de una red descentralizada mientras aumentas tu stash.
PELIGRO
Se recomienda encarecidamente tener una experiencia significativa en administración de sistemas antes de intentar ejecutar tu propio validador.
Debes ser capaz de manejar problemas técnicos y anomalías con tu nodo, los cuales debes poder solucionar por ti mismo. Ser un validador implica más que simplemente ejecutar el binario de Polkadot.
Dado que la seguridad es tan importante para ejecutar un validador exitoso, deberías revisar la información de validador seguro para asegurarte de entender los factores a considerar al construir tu infraestructura. A medida que avances en tu viaje como validador, es probable que desees usar este repositorio como punto de partida para tus propias modificaciones y personalizaciones.
Si necesitas ayuda, por favor comunícate en el Polkadot Validator Lounge en Element. El equipo y otros validadores están allí para ayudar a responder preguntas y proporcionar consejos basados en la experiencia.
¿Cuántos DOT necesito para convertirme en un Validador activo? #
Puedes hacer una estimación aproximada de eso usando los métodos enumerados aquí. Para ser elegido para formar parte del conjunto, necesitas un stake (participación) mínimo detrás de tu validador. Este stake puede provenir de ti mismo o de nominadores. Esto significa que como mínimo, necesitarás suficientes DOT para configurar el stash (o reserva) (y opcionalmente una cuenta proxy de staking) con el depósito existencial, más un poco más para las tarifas de transacción. El resto puede provenir de nominadores. Para entender cómo se eligen los validadores, consulta la página de algoritmos de elección de NPoS.
DATOS ON-CHAIN PARA REFERENCIA
En Polkadot, el stake mínimo respaldando a un validador en el conjunto activo es de 2159515.459 DOT en la era 1395.
En Kusama, el stake mínimo respaldando a un validador en el conjunto activo es de 6645.759937 KSM en la era 6426.
Advertencia: ¡Cualquier DOT que tengas en stake por tu validador puede ser recortado o slasheado, lo que significa que una configuración insegura o incorrecta puede resultar en la pérdida de tokens DOT! Si no tienes confianza en tu capacidad para ejecutar un nodo validador, se recomienda nominar tus DOT a un nodo validador de confianza.
Configuración Inicial #
Requisitos #
La forma más común para que un principiante ejecute un validador es en un servidor en la nube que ejecute Linux. Puedes elegir cualquier proveedor de VPS que prefieras. Como OS, es mejor usar un Linux Debian reciente. Para esta guía, utilizaremos Ubuntu 22.04, pero las instrucciones deberían ser similares para otras plataformas.
Hardware de referencia
Los pesos de transacción en Polkadot se prueban en hardware de referencia. Realizamos la prueba de referencia en instancias de VM de dos importantes proveedores de nube: Google Cloud Platform (GCP) y Amazon Web Services (AWS). Específicamente, utilizamos una instancia VM n2-standard-8
en GCP y c6i.4xlarge
en AWS. Se recomienda que el hardware utilizado para ejecutar los validadores al menos coincida con las especificaciones del hardware de referencia para garantizar que puedan procesar todos los bloques a tiempo. Si utilizas hardware inferior, posiblemente te enfrentarás a problemas de rendimiento, obtendrás menos puntos de era y potencialmente incluso serás recortado (slash).
- CPU
* Compatible con x86-64;
* Intel Ice Lake, o más nuevo (serie Xeon o Core); AMD Zen3, o más nuevo (EPYC o Ryzen);
* 4 núcleos físicos @ 3.4GHz;
* multithreading simultáneos desactivados (Hyper-Threading en Intel, SMT en AMD);
* Preferir el rendimiento de un single – threaded sobre un mayor número de núcleos. Una comparación del rendimiento de un single – threaded se puede encontrar aquí. - Almacenamiento
* Un SSD NVMe de 1 TB (debería tener un tamaño razonable para manejar el crecimiento de la blockchain). Se puede encontrar una estimación de los tamaños actuales de snapshot de la cadena aquí. En general, la latencia es más importante que el rendimiento. - Memoria
* 32 GB DDR4 ECC. - Sistema
* Kernel de Linux 5.16 o más nuevo. - Network
* La velocidad mínima de red simétrica está establecida en 500 Mbit/s (= 62.5 MB/s). Esto es necesario para soportar un gran número de parachains y permitir un control adecuado de la congestión en situaciones de red ocupadas.
Las especificaciones mencionadas anteriormente no son un requisito estricto para ejecutar un validador, pero se consideran las mejores prácticas. Ejecutar un validador es una tarea responsable; el uso de hardware profesional es imprescindible de cualquier manera.
Instalar y configurar el Protocolo de Tiempo de Red (NTP) Cliente #
NTP es un protocolo de red diseñado para sincronizar los relojes de las computadoras a través de una red. NTP te permite sincronizar los relojes de todos los sistemas dentro de la red. Actualmente, es necesario que los relojes locales de los validadores se mantengan razonablemente sincronizados, por lo que deberías estar ejecutando NTP o un servicio similar. Puede verificar si tienes el cliente NTP ejecutando:
Si estás utilizando Ubuntu 18.04 o una versión más nueva, el cliente NTP debería estar instalado por defecto.
timedatectl
Si NTP está instalado y en ejecución, deberías ver system clock synchronized: yes
(o un mensaje similar). Si no lo ves, puedes instalarlo ejecutando:
sudo apt-get install ntp
ntpd se iniciará automáticamente después de la instalación. Puedes consultar a ntpd para obtener información sobre el estado para verificar que todo esté funcionando:
sudo ntpq -p
PELIGRO
Saltarse esto puede resultar en que el nodo validador pierda oportunidades de autoría de bloques. Si el reloj está fuera de sincronización (incluso por una pequeña cantidad), los bloques que produce el validador pueden no ser aceptados por la red. Esto resultará en heartbeats de ImOnline
llegando on-chain, pero ningún bloque asignado llegando on-chain.
Asegúrate de que Landlock esté habilitado #
Landlock es una característica de seguridad de Linux utilizada en Polkadot:
Landlock permite a cualquier proceso, incluidos los no privilegiados, restringirse de manera segura a sí mismos.
Para utilizar landlock, asegúrate de estar en la versión de kernel de referencia o más nueva. La mayoría de las distribuciones de Linux ya deberían tener landlock habilitado, pero puedes verificar ejecutando lo siguiente como root:
dmesg | grep landlock || journalctl -kg landlock
Si no está habilitado, consulta la documentación oficial (“Soporte de Kernel“) si deseas compilar Linux con landlock habilitado.
Instalación de los binarios de Polkadot #
BINARIOS MÚLTIPLES DE VALIDADOR
Además del binario polkadot
, los cambios recientes han separado la funcionalidad en otros dos binarios necesarios, polkadot-prepare-worker
y polkadot-execute-worker
. Los tres binarios son necesarios para ejecutar correctamente un nodo validador. Se puede encontrar más contexto sobre estos cambios aquí.
Instalación desde releases oficiales
Los binarios oficiales se pueden descargar desde Github Releases. Deberías descargar la última versión disponible. También puedes descargar los binarios utilizando los siguientes enlaces directos (reemplaza X.Y.Z por la versión apropiada):
https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-vX.Y.Z/polkadot
https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-vX.Y.Z/polkadot-execute-worker
https://github.com/paritytech/polkadot-sdk/releases/download/polkadot-vX.Y.Z/polkadot-prepare-worker
Opcional: Instalación con Package Managers
El Binario Polkadot está incluido en derivatives de Debian
(es decir, Debian, Ubuntu) y distribuciones RPM-based
(es decir, Fedora, CentOS).
Basado en Debian (Debian, Ubuntu)
Ejecuta los siguientes comandos como usuario root:
# Import the security@parity.io GPG key
gpg --recv-keys --keyserver hkps://keys.mailvelope.com 9D4B2B6EB8F97156D19669A9FF0812D491B96798
gpg --export 9D4B2B6EB8F97156D19669A9FF0812D491B96798 > /usr/share/keyrings/parity.gpg
# Add the Parity repository and update the package index
echo 'deb [signed-by=/usr/share/keyrings/parity.gpg] https://releases.parity.io/deb release main' > /etc/apt/sources.list.d/parity.list
apt update
# Install the `parity-keyring` package - This will ensure the GPG key
# used by APT remains up-to-date
apt install parity-keyring
# Install polkadot
apt install polkadot
Basado en RPM (Fedora, CentOS)
Ejecuta los siguientes comandos como usuario root:
# Install dnf-plugins-core (This might already be installed)
dnf install dnf-plugins-core
# Add the repository and enable it
dnf config-manager --add-repo https://releases.parity.io/rpm/polkadot.repo
dnf config-manager --set-enabled polkadot
# Install polkadot (You may have to confirm the import of the GPG key, which
# should have the following fingerprint: 9D4B2B6EB8F97156D19669A9FF0812D491B96798)
dnf install polkadot
Asegúrate de verificar la instalación (consulta la sección “Verificar la instalación”).
POR DEFECTO, EL SERVICIO SYSTEM DE POLKADOT ESTÁ DESHABILITADO
Para iniciar el servicio, ejecuta:
sudo systemctl start polkadot.service
Opcional: Instalación con Ansible
Para administrar la instalación de Polkadot con Ansible, puedes utilizar el Substrate node role distribuido en la Parity chain operations Ansible collection
Opcional: Instalación con Docker
Para ejecutar Polkadot en Docker o en un runtime container compatible con OCI, puedes utilizar parity/polkadot docker image, disponible en Docker Hub (reemplaza X.Y.Z por la versión apropiada):
docker.io/parity/polkadot:vX.Y.Z
Opcional: Compilación de los binarios de Polkadot desde fuentes #
Prerrequisitos: Instalar Rust y Dependencias
Si nunca has instalado Rust, debes hacerlo primero.
Si ya has instalado Rust, ejecuta el siguiente comando para asegurarte de que estás utilizando la última versión.
rustup update
Si no lo has hecho, este comando descargará la última versión de Rust e instalará.
curl https://sh.rustup.rs -sSf | sh -s -- -y
NOTA
Si no tienes “curl” instalado, ejecuta:
sudo apt install curl
También será útil tener “websocat” (Netcat, curl y socat para WebSockets) instalado para las interacciones RPC. Las instrucciones de instalación para varios sistemas operativos se pueden encontrar aquí.
Para configurar tu shell, ejecuta el siguiente comando.
source $HOME/.cargo/env
Verifica tu instalación.
rustc --version
Finalmente, ejecuta este comando para instalar las dependencias necesarias para compilar y ejecutar el software del nodo de Polkadot.
sudo apt install make clang pkg-config libssl-dev build-essential
NOTA
Si estás usando OSX y tienes Homebrew instalado, puedes emitir el siguiente comando equivalente EN LUGAR del anterior:
brew install cmake pkg-config openssl git llvm
Construyendo los binarios
Puedes construir los binarios de Polkadot desde el repositorio paritytech/polkadot-sdk en GitHub.
Generalmente, deberías usar la última etiqueta X.Y.Z. Deberías revisar la salida del comando “git tag” o ver las Polkadot SDK Github tags para ver una lista de todas las versiones de release disponibles. Deberías reemplazar VERSION
a continuación con la última compilación (es decir, el número más alto).
NOTA
Si prefieres usar SSH en lugar de HTTPS, puedes reemplazar la primera línea del siguiente con
git clone git@github.com:paritytech/polkadot-sdk.git
git clone https://github.com/paritytech/polkadot-sdk.git
cd polkadot-sdk/polkadot
Ejecuta el siguiente comando para encontrar la última versión.
git tag -l | sort -V | grep -v -- '-rc'
Encuentra la última versión; reemplaza “VERSION” en el siguiente comando y ejecútalo para cambiar tu rama.
git checkout VERSION
./scripts/init.sh
Construye el código nativo con el perfil de producción. Lo siguiente se asegurará de que los binarios estén todos en tu $PATH
.
cargo install --force --path . --profile production
Este paso llevará un tiempo (generalmente de 10 a 40 minutos, dependiendo de tu hardware).
ERRORES DE COMPILACIÓN
Si encuentras errores de compilación, es posible que tengas que fijar la versión del compilador Rust a la que se utilizó para construir el lanzamiento. Consulta la sección Rust compiler versions
en las notas de release. Esto se puede hacer ejecutando:
rustup install nightly-2022-05-18
rustup target add wasm32-unknown-unknown --toolchain nightly-2022-05-18
cargo +nightly-2022-05-18 build --release
También puede ser necesario ejecutar la compilación más de una vez.
Si deseas ejecutar las pruebas, ejecuta el siguiente comando:
cargo test --all
Si estás interesado en generar claves localmente, también puedes instalar subkey
desde el mismo directorio. Luego, puedes tomar el ejecutable subkey
generado y transferirlo a una máquina sin conexión a Internet para mayor seguridad.
cargo install --force --git https://github.com/paritytech/polkadot-sdk subkey
Verifica la instalación #
Después de instalar Polkadot, puedes verificar la instalación ejecutando
polkadot --version
polkadot-execute-worker --version
polkadot-prepare-worker --version
Debería devolver algo como esto (las versiones exactas no importan, pero todas deben ser iguales):
0.9.43-36264cb36db
0.9.43-36264cb36db
0.9.43-36264cb36db
Si no es así, asegúrate de haber instalado todos los binarios, que todos los binarios estén en algún lugar de tu $PATH
y que todos estén en la misma carpeta.
Sincronización de Datos de la Cadena #
Puedes comenzar a sincronizar tu nodo ejecutando el siguiente comando si no quieres comenzar de inmediato en modo validador:
polkadot
INFO
Si deseas ejecutar un validador en Kusama, tienes la opción de especificar la cadena. Sin especificación, esto se establecería por defecto en Polkadot.
polkadot --chain=kusama
2021-06-17 03:07:07 Parity Polkadot
2021-06-17 03:07:07 ✌️ version 0.9.5-95f6aa201-x86_64-linux-gnu
2021-06-17 03:07:07 ❤️ by Parity Technologies <admin@parity.io>, 2017-2021
2021-06-17 03:07:07 📋 Chain specification: Polkadot
2021-06-17 03:07:07 🏷 Node name: boiling-pet-7554
2021-06-17 03:07:07 👤 Role: FULL
2021-06-17 03:07:07 💾 Database: RocksDb at /root/.local/share/polkadot/chains/polkadot/db
2021-06-17 03:07:07 ⛓ Native runtime: polkadot-9050 (parity-polkadot-0.tx7.au0)
2021-06-17 03:07:10 🏷 Local node identity is: 12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u
2021-06-17 03:07:10 📦 Highest known block at #17914
2021-06-17 03:07:10 〽️ Prometheus server started at 127.0.0.1:9615
2021-06-17 03:07:10 Listening for new connections on 127.0.0.1:9944.
EJEMPLO DE SINCRONIZACIÓN DE NODOS
2021-06-17 03:07:39 🔍 Discovered new external address for our node: /ip4/10.26.16.1/tcp/30333/ws/p2p/12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u
2021-06-17 03:07:40 ⚙️ Syncing 218.8 bps, target=#5553764 (17 peers), best: #24034 (0x08af…dcf5), finalized #23552 (0xd4f0…2642), ⬇ 173.5kiB/s ⬆ 12.7kiB/s
2021-06-17 03:07:45 ⚙️ Syncing 214.8 bps, target=#5553765 (20 peers), best: #25108 (0xb272…e800), finalized #25088 (0x94e6…8a9f), ⬇ 134.3kiB/s ⬆ 7.4kiB/s
2021-06-17 03:07:50 ⚙️ Syncing 214.8 bps, target=#5553766 (21 peers), best: #26182 (0xe7a5…01a2), finalized #26112 (0xcc29…b1a9), ⬇ 5.0kiB/s ⬆ 1.1kiB/s
2021-06-17 03:07:55 ⚙️ Syncing 138.4 bps, target=#5553767 (21 peers), best: #26874 (0xcf4b…6553), finalized #26624 (0x9dd9…27f8), ⬇ 18.9kiB/s ⬆ 2.0kiB/s
2021-06-17 03:08:00 ⚙️ Syncing 37.0 bps, target=#5553768 (22 peers), best: #27059 (0x5b73…6fc9), finalized #26624 (0x9dd9…27f8), ⬇ 14.3kiB/s ⬆ 4.4kiB/s
UTILIZA LA SINCRONIZACIÓN WARP PARA UNA SINCRONIZACIÓN MÁS RÁPIDA
De forma predeterminada, el nodo realiza una sincronización full
, que descarga y valida todo el historial de la blockchain. La sincronización full o completa funciona escuchando los bloques anunciados y solicitando los bloques a los pares que los anuncian, o solo los block headers o encabezados de bloque en caso de clientes ligeros o light clients.
La sincronización fast
rápida es otra opción que funciona descargando el historial de block header y validando los cambios en el conjunto de autoridad para llegar a un header específico (generalmente el más reciente). Después de alcanzar y verificar el header deseado, se puede descargar e importar el estado. Una vez completado este proceso, el nodo puede continuar con una sincronización completa.
polkadot --sync warp
La sincronización warp sync
descarga y valida inicialmente las pruebas de finalidad de GRANDPA y luego descarga el estado del último bloque finalizado. Después de la sincronización warp, el nodo está listo para importar los últimos bloques de la red y puede utilizarse como Validador. Los bloques desde el génesis se descargarán en segundo plano. Consulta esta discusión para obtener más información sobre las diferentes opciones de sincronización disponibles.
LOS VALIDADORES DEBERÍAN SINCRONIZAR USANDO EL BACKEND DE ROCKSDB
Esto es implícito de forma predeterminada, pero puede ser explícito pasando la flag --database RocksDb.
En el futuro, se recomienda cambiar a la opción ParityDB más rápida y eficiente. Ten en cuenta que ParityDB aún es experimental y no debe usarse en producción. Si deseas probar ParityDB, puedes agregar el flag --database paritydb
. Cambiar entre los backends de la base de datos requerirá una resincronización.
Dependiendo del tamaño de la cadena cuando hagas esto, este paso puede tardar desde unos minutos hasta unas pocas horas.
Si estás interesado en determinar cuánto tiempo más te falta, los registros de tu servidor (impresos en STDOUT desde el proceso polkadot
) te dirán el último bloque que tu nodo ha procesado y verificado. Luego puedes compararlo con el bloque más alto actual a través de Telemetry o PolkadotJS Block Explorer.
Servicios de Snapshot de Base de Datos
Si inicias un nodo por primera vez, comenzará a construir desde el bloque génesis. Este proceso puede tardar un tiempo dependiendo del tamaño de la base de datos. Para acelerar este proceso, se pueden utilizar snapshot. Los snapshot son copias de seguridad comprimidas del directorio de base de datos de nodos Polkadot/Kusama, que contienen toda la cadena (o una versión podada de ella, con estados solo de los últimos 1000 o 256 bloques). A continuación se enumeran algunos proveedores de snapshot públicos para Polkadot y Kusama.
PRECAUCIÓN
Por seguridad de la red, se recomienda que sincronices desde cero, incluso si estás ejecutando tu nodo en modo de poda para validación. La razón es que si estos snapshots se corrompen y la mayoría de los nodos se ejecutan en función de estos snapshots, la red podría terminar ejecutándose en una cadena no canónica.
Bond DOT #
Para iniciar una instancia de validador en Polkadot, el mínimo bond requerido es de 0 DOT. Pero para ingresar al conjunto de validadores activos y ser elegible para ganar recompensas, tu nodo validador debe ser nominado por un número mínimo de tokens DOT. En Polkadot, el stake mínimo que respalda a un validador en el conjunto activo es de 2169718.547 DOT en la era 1402. En Kusama, el stake mínimo que respalda a un validador en el conjunto activo es de 6815.712187 KSM en la era 6455.
Si eres un validador que tiene la intención de obtener nominaciones DOT/KSM de la comunidad, necesitarás mostrar cierta participación. Para eso, debes vincular algunos DOT/KSM como stake propio. Asegúrate de no vincular todo tu saldo de DOT, ya que no podrás pagar las tarifas de transacción desde tu saldo vinculado.
LAS CUENTAS CONTROLLER ESTÁN OBSOLETAS. UTILIZA UN STAKING PROXY.
Las cuentas controller están obsoletas. Para obtener más información, consulta esta discusión. Se recomienda encarecidamente que configures una cuenta con staking proxy, que se puede utilizar para emitir llamadas de inicio y detención de validación. Lee más sobre las proxy accounts aquí.
Primero, ve a la sección Staking. Haz clic en “Account Actions” y luego en el botón “+ Stash”.

- Stash Account: Selecciona tu stash account (que es la cuenta con el saldo de DOT/KSM)
- Value bonded: Cuánto DOT de la Stash account quieres vincular/stake. Ten en cuenta que no es necesario vincular todos los DOT en esa cuenta. También ten en cuenta que siempre puedes vincular más DOT más tarde. Sin embargo, retirar cualquier cantidad vinculada requiere la duración del período de desvinculación (unbonding). En Kusama, el período de desvinculación es de 7 días. En Polkadot, el período de desvinculación planeado es de 28 días.
- Payment destination: La cuenta a la que se envían las recompensas de validación. Más información aquí. A partir de la versión de runtime v23 incluida nativamente en la versión del cliente 0.9.3,, los pagos pueden ir a cualquier dirección personalizada. Si deseas redirigir los pagos a una cuenta que no sea la de stash, puedes hacerlo ingresando la dirección aquí. Ten en cuenta que es extremadamente inseguro establecer una dirección de un exchange como el destinatario de las recompensas de staking.
Una vez que todo esté completo correctamente, haz clic enBond
y firma la transacción con tu Stash account.

Después de unos segundos, deberías ver un mensaje de ExtrinsicSuccess
.
Tu cuenta vinculada estará disponible en Stashes
. Ahora deberías ver una nueva tarjeta con todas tus cuentas (nota: es posible que necesites actualizar la pantalla). El monto vinculado a la derecha corresponde a los fondos vinculados por la Stash Account.
Establecer claves de sesión #
LAS CLAVES DE SESIÓN SON CRÍTICAS PARA EL CONSENSO
Si no estás seguro de si tu nodo tiene las claves de sesión actuales que hiciste con la transacción setKeys
, entonces puedes usar uno de los dos métodos de RPC disponibles para consultar tu nodo: hasKey para verificar una clave específica o hasSessionKeys para verificar la cadena completa de claves públicas de sesión.
Una vez que tu nodo esté completamente sincronizado, detén el proceso presionando Ctrl-C. En tu indicador de terminal, ahora iniciarás el nodo en ejecución.
polkadot --validator --name "name on telemetry"
De manera similar:
2021-06-17 03:12:08 Parity Polkadot
2021-06-17 03:12:08 ✌️ version 0.9.5-95f6aa201-x86_64-linux-gnu
2021-06-17 03:12:08 ❤️ by Parity Technologies admin@parity.io, 2017-2021
2021-06-17 03:12:08 📋 Chain specification: Polkadot
2021-06-17 03:12:08 🏷 Node name: nateched-test
2021-06-17 03:12:08 👤 Role: AUTHORITY
2021-06-17 03:12:08 💾 Database: RocksDb at /root/.local/share/polkadot/chains/polkadot/db
2021-06-17 03:12:08 ⛓ Native runtime: polkadot-9050 (parity-polkadot-0.tx7.au0)
2021-06-17 03:12:12 🏷 Local node identity is: 12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u
2021-06-17 03:12:12 📦 Highest known block at #64673
2021-06-17 03:12:12 〽️ Prometheus server started at 127.0.0.1:9615
2021-06-17 03:12:12 Listening for new connections on 127.0.0.1:9944.
2021-06-17 03:12:12 👶 Starting BABE Authorship worker
2021-06-17 03:12:16 🔍 Discovered new external address for our node: /ip4/10.26.11.1/tcp/30333/p2p/12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u
2021-06-17 03:12:17 ⚙️ Syncing, target=#5553810 (14 peers), best: #65068 (0x6da5…0662), finalized #65024 (0x4e84…d170), ⬇ 352.2kiB/s ⬆ 75.6kiB/s
Puedes darle a tu validador el nombre que desees, pero ten en cuenta que otros podrán verlo y se incluirá en la lista de todos los servidores que utilicen el mismo servidor de telemetría. Dado que numerosas personas están utilizando la telemetría, se recomienda que elijas algo probablemente único.
Generar las claves de sesión #
Necesitas informar a la cadena tus claves de sesión firmando y enviando un extrínsec. Esto es lo que asocia tu nodo validador con tu cuenta stash en Polkadot.
Opción 1: PolkadotJS-APPS
Puedes generar tus Session keys en el cliente a través de las aplicaciones RPC. Si estás haciendo esto, asegúrate de tener el explorador PolkadotJS-Apps conectado a tu nodo validador. Puedes configurar el dashboard de aplicaciones para conectarse al endpoint de tu validador en la pestaña Setting. Si estás conectado a un endpoint predeterminado alojado por Parity o Web3 Foundation, no podrás usar este método, ya que hacer solicitudes RPC a este nodo afectaría el keystore o almacén de claves local alojado en un nodo público y querrás asegurarte de interactuar con el almacén de claves para tu nodo.
Una vez que te hayas asegurado de que estás conectado a tu nodo, la forma más sencilla de establecer claves de sesión para tu nodo es llamando a la solicitud RPC author_rotateKeys
para crear nuevas claves en el almacén de claves de tu validador. Ve a la pestaña de Herramientas y selecciona Llamadas RPC, luego selecciona la opción author > rotateKeys() y recuerda guardar el output que obtengas para un paso posterior.

Opción 2: CLI
Si estás en un servidor remoto, es más fácil ejecutar este comando en la misma máquina (mientras el nodo está en ejecución con el puerto RPC WS predeterminado configurado):
echo '{"id":1,"jsonrpc":"2.0","method":"author_rotateKeys","params":[]}' | websocat -n1 -B 99999999 ws://127.0.0.1:9933
El output tendrá un campo “resultado” codificado en hexadecimal. El resultado es la concatenación de las cuatro claves públicas. Guarda este resultado para un paso posterior.
Puedes reiniciar tu nodo en este punto.
Envío de la transacción setKeys
#
Necesitas informar a la cadena tus claves de sesión firmando y enviando un extrínsec. Esto es lo que asocia tu validador con tu staking proxy.
Ve a Staking > Account Actions, y haz clic en “Set Session Key” en la cuenta de vinculación que generaste anteriormente. Ingresa el output de author_rotateKeys
en el campo y haz clic en “Set Session Key”.

Envia este extrinsic y ahora estás listo para comenzar a validar.
Validar #
Para verificar que tu nodo está en vivo y sincronizado, ve a Telemetry y encuentra tu nodo. Ten en cuenta que esto mostrará todos los nodos en la red de Polkadot, por lo que es importante seleccionar un nombre único!.
En este ejemplo, usamos el nombre techedtest
y lo hemos localizado con éxito al buscarlo:
Configuración a través de la pestaña del validador #

Aquí necesitarás ingresar las claves de rotateKeys
, que es el output Hex de author_rotateKeys
. Las claves aparecerán como pendientes hasta que se apliquen al comienzo de una nueva sesión.
El “reward commission percentage o porcentaje de comisión de recompensa” es el porcentaje de comisión que puedes declarar contra las recompensas de tu validador. Esta es la tasa con la que tu validador será comisionado.
- Preferencias de pago – Puedes especificar el porcentaje de las recompensas que se te pagarán. El resto se dividirá entre tus nominadores.
ESTABLECER UNA TASA DE COMISIÓN DEL 100% SUGIERE QUE NO DESEAS QUE TU VALIDADOR RECIBA NOMINACIONES
También puedes determinar si deseas recibir nominaciones con la opción “permite nuevas nominaciones”.

Haz clic en “Bond & Validate”.
Si vas a la pestaña “Staking”, verás una lista de validadores activos que se están ejecutando actualmente en la red. En la parte superior de la página, muestra el número de espacios de validadores disponibles, así como el número de nodos que han señalado su intención de ser un validador. Puedes ir a la pestaña “Waiting” para verificar si tu nodo está listado allí.

El conjunto de validadores se actualiza en cada era. En la próxima era, si hay un slot o espacio disponible y tu nodo es seleccionado para unirse al conjunto de validadores, tu nodo se convertirá en un validador activo. Hasta entonces, permanecerá en la waiting queue o cola de espera. Si tu validador no es seleccionado para formar parte del conjunto de validadores, permanecerá en la cola de espera hasta que lo sea. No es necesario reiniciar si no eres seleccionado para el conjunto de validadores en una era particular. Sin embargo, puede ser necesario aumentar la cantidad de DOT en staking o buscar nominadores para tu validador para unirse al conjunto de validadores.
¡Felicitaciones! Si has seguido todos estos pasos y has sido seleccionado para ser parte del conjunto de validadores, ¡ahora estás ejecutando un validador de Polkadot! Si necesitas ayuda, comunícate en el chat de Polkadot Validator.
Programa de Mil Validadores #
El Programa de Mil Validadores es una iniciativa conjunta de Web3 Foundation y Parity Technologies para brindar apoyo a los validadores de la comunidad. Si estás interesado en postularte para el programa, puedes encontrar más información en la página wiki.
Ejecutar un validador en una testnet #
Para verificar la configuración de tu validador, es posible ejecutarlo contra una red de prueba PoS como Westend. Sin embargo, los slots de validadores están limitados intencionalmente en Westend para garantizar la estabilidad y disponibilidad de la red de prueba para el proceso de lanzamiento de Polkadot.
Aquí hay una pequeña comparación de las características de cada red relevantes para los validadores:

Preguntas frecuentes #
¿Por qué no puedo sincronizar la cadena con 0 peers? #

Asegúrate de habilitar el puerto 30333
libp2p. Eventualmente, llevará un poco de tiempo descubrir otros peers en la red.
¿Cómo elimino todos los datos de mi cadena? #
polkadot purge-chain
INFORMACIÓN
Consulta el Substrate StackExchange para obtener rápidamente las respuestas que necesitas.
Nota sobre VPS #
Los proveedores de VPS son muy populares para ejecutar servidores de cualquier tipo. Se realizaron pruebas exhaustivas de rendimiento para garantizar que los servidores VPS puedan mantenerse al día con la carga de trabajo en general.
NOTA
Antes de ejecutar un Validador en vivo, verifica si el rendimiento anunciado se entrega realmente de manera consistente por parte del proveedor de VPS.
Esto no es un respaldo de ninguna manera:
- Familias de máquinas c2 y c2d de GCP
- Familia de máquinas c6id de AWS
Se aplicaron las siguientes configuraciones adicionales a las instancias para ajustar su rendimiento:
Desactivar SMT
Dado que el camino crítico de Substrate es de single-threaded, necesitamos optimizar el rendimiento de la CPU de un solo núcleo. El nodo aún se beneficia de múltiples núcleos al realizar operaciones de red y otras operaciones no relacionadas con el runtime. Por lo tanto, sigue siendo necesario ejecutarlo en al menos el número mínimo requerido de núcleos. Desactivar SMT mejora el rendimiento ya que cada vCPU se asigna a un núcleo de CPU física en lugar de presentarse al sistema operativo como dos núcleos lógicos. La implementación de SMT se llama Hyper-Threading en Intel y SMT de 2 vías en AMD Zen. Para desactivar SMT en runtime:
for cpunum in $(cat /sys/devices/system/cpu/cpu*/topology/thread_siblings_list | cut -s -d, -f2- | tr ',' '\n' | sort -un)
do
echo 0 > /sys/devices/system/cpu/cpu$cpunum/online
done
Esto desactivará todo otro núcleo (vCPU).
Para guardar los cambios permanentemente, agrega nosmt=force
como parámetro del kernel. Edita /etc/default/grub
y agrega nosmt=force
a la variable GRUB_CMDLINE_LINUX_DEFAULT
y ejecuta sudo update-grub
. Después del reinicio, deberías ver que la mitad de los núcleos están desconectados. Ejecuta lscpu --extended
para confirmar.
Desactivar el equilibrio automático de NUMA #
Si tienes varias CPU físicas (CPU0 y CPU1) en el sistema, cada una con su propio banco de memoria (MB0 y MB1), generalmente es más lento para una CPU0 acceder a MB1 debido a la conexión más lenta. Para evitar que el OS mueva automáticamente el proceso de Substrate en ejecución de una CPU a otra y, por lo tanto, cause una latencia aumentada, se recomienda desactivar el equilibrio automático de NUMA.
Con el equilibrio automático de NUMA desactivado, un OS siempre ejecutará un proceso en el mismo nodo NUMA donde fue programado inicialmente.
Para desactivar el equilibrio de NUMA en runtime:
sysctl kernel.numa_balancing=0
Para guardar los cambios permanentemente, actualiza las opciones de inicio y reconfigura GRUB. Edita /etc/default/grub
y agrega numa_balancing=disable
a la variable GRUB_CMDLINE_LINUX_DEFAULT
y ejecuta sudo update-grub
. Después del reinicio, puedes confirmar el cambio ejecutando sysctl -a | grep 'kernel.numa_balancing'
y verificando si el parámetro está configurado en 0.
Configurar Mitigaciones de Spectre/Meltdown #
Spectre y Meltdown son vulnerabilidades descubiertas en las CPU modernas hace unos años. Se hicieron mitigaciones en el kernel de Linux para hacer frente a las múltiples variaciones de estos ataques. Consulta https://meltdownattack.com/ para obtener más información.
Inicialmente, esas mitigaciones agregaron una penalización del ~20% al rendimiento de las cargas de trabajo. A medida que los fabricantes de CPU comenzaron a implementar mitigaciones implementadas en hardware, la brecha de rendimiento se redujo. Como demuestra la prueba de rendimiento, la penalización de rendimiento se redujo a ~7% en las CPU Intel de 10ª generación. Esto es válido para las cargas de trabajo que se ejecutan tanto en bare-metal como en VM. Pero la penalización sigue siendo alta para las cargas de trabajo contenerizadas en algunos casos.
Como se muestra en el artículo de Yusuke Endoh, una penalización de rendimiento para cargas de trabajo contenerizadas puede ser tan alta como del 100%. Esto se debe a que el perfil SECCOMP es demasiado protector sobre la aplicación de mitigaciones de Spectre/Meltdown sin proporcionar una seguridad real. Una explicación más larga está disponible en la discusión del parche del kernel.
Linux 5.16 relajó las protecciones aplicadas a los subprocesos SECCOMP de forma predeterminada. Los contenedores que se ejecutan en el kernel 5.16 y posterior ahora no sufren la penalización de rendimiento implicada por el uso de un perfil SECCOMP en tiempo de ejecución de contenedores.
Para Linux >= 5.16
Estás listo. El rendimiento de las cargas de trabajo contenerizadas es comparable con las que no están contenerizadas. No tienes que hacer nada.
Para Linux < 5.16
Necesitarás desactivar las mitigaciones para Spectre V2 para las tareas del espacio de usuario, así como la Speculative Sore Bypass Disable (desactivación del desvío de almacenamiento especulativo) (SSBD) para Spectre V4. Este mensaje de parche describe el razonamiento para este cambio predeterminado con más detalle:
En última instancia, configurar SSBD y STIBP de forma predeterminada para todas las cárceles de SECCOMP es un punto intermedio problemático y una mala configuración predeterminada con más inconvenientes que ventajas, lo que termina reduciendo la seguridad en la nube pública (al dar un gran incentivo para no exponer SPEC_CTRL, que sería necesario para obtener una seguridad completa con IBPB después de configurar nosmt en el guest) y al perjudicar excesivamente el rendimiento de las aplicaciones más seguras que utilizan SECCOMP y que terminan teniendo que optar por no usar SECCOMP_FILTER_FLAG_SPEC_ALLOW.
Para desactivar las mitigaciones, edita el archivo /etc/default/grub
y añade spec_store_bypass_disable=prctl spectre_v2_user=prctl
a la variable GRUB_CMDLINE_LINUX_DEFAULT
, luego ejecuta sudo update-grub
y reinicia el sistema.
Ten en cuenta que las mitigaciones no se desactivan por completo. Puedes desactivar todas las mitigaciones del kernel disponibles configurando mitigations=off
. Pero no recomendamos hacer esto a menos que ejecutes un código completamente confiable en el host.
Lista de VPS #
TEN EN CUENTA LOS TÉRMINOS Y CONDICIONES Y LAS POLÍTICAS DE USO ACEPTABLE DE CADA PROVEEDOR DE VPS
Es posible que te bloqueen el acceso a tu cuenta y que cierren tu servidor si violas las políticas establecidas. Por ejemplo, Digital Ocean enumera “Minería de Criptomonedas” en la sección de Abuso de Red de su P-Política de Uso Aceptable y requiere permiso explícito para realizar esta actividad. Esto puede aplicarse también a otras actividades relacionadas con criptomonedas.