Esta página contiene información básica sobre cómo ejecutar un cliente de Parity Polkadot. Hay muchas maneras de obtener/ejecutar un cliente, por ejemplo compilando desde el código fuente, ejecutando en Docker, o descargando un binario. Esta guía siempre se referirá al ejecutable como polkadot
.
Consulta siempre la ayuda del cliente polkadot --help
para obtener la información más actualizada.
NOTA
Otros equipos de implementación de clientes: Siéntete libre de hacer un PR a esta página con instrucciones (o un enlace a las instrucciones) para tu cliente.
Si estás intentando ejecutar un validador, consulta este tutorial aquí.
Operaciones básicas con nodos #
Selección de una cadena
Utiliza la opción --chain <chainspec>
para seleccionar la cadena. Puede ser polkadot
, kusama
, westend
, rococo
, o una especificación de cadena personalizada. Por defecto, el cliente iniciará Polkadot. Mira How a single codebase can power four different blockchains para saber más sobre cómo funciona internamente la selección de cadena.
Nodo de archivo
Un nodo de archivo no poda ningún bloque o dato de estado. Utiliza el flag --pruning archive
. Ciertos tipos de nodos, como los validadores, deben ejecutarse en modo archivo. Asimismo, todos los events se borran del estado en cada bloque, por lo que si deseas almacenar events necesitarás un nodo de archivo.
VIDEO EXPLICATIVO SOBRE LA ACTUALIZACIÓN DE UN NODO
Para actualizar un nodo, consulta este video
Exportación de bloques
Para exportar bloques a un archivo, usa export-blocks
. Exporta en formato JSON (por defecto) o binario (--binary true
).
polkadot export-blocks --from 0 <output_file>
Puertos RPC
Utiliza la opción --rpc-external
para exponer puertos RPC y --ws-external
para exponer websockets. No todas las llamadas RPC son seguras y debes utilizar un proxy RPC para filtrar las llamadas no seguras. Selecciona los puertos con las opciones --rpc-port
y --ws-port
. Para limitar los hosts que pueden acceder, utiliza la opción --rpc-cors
.
Ejecución
El cliente Parity Polkadot implementa un Host Polkadot y un runtime nativo. El runtime debe compilar a WebAssembly y se almacena on-chain. Si el runtime del cliente tiene la misma especificación que el runtime almacenado on-chain, el cliente ejecutará los bloques utilizando el binario del cliente. De lo contrario, el cliente ejecutará el runtime Wasm de la cadena.
Por lo tanto, al sincronizar la cadena, el cliente ejecutará bloques de runtimes anteriores utilizando su binario Wasm asociado. Esta característica también permite actualizaciones forkless: el cliente puede ejecutar un nuevo runtime sin actualizar el cliente.
El cliente Polkadot de Parity tiene dos métodos de ejecución Wasm, interpretado (por defecto) y compilado. Establece el método preferido a usar cuando ejecutes Wasm --wasm-execution <Interpreted|Compiled>
. La ejecución compilada se ejecutará mucho más rápido, especialmente al sincronizar la cadena, pero es experimental y puede usar más memoria/CPU. Una compensación razonable sería sincronizar la cadena con ejecución compilada y luego reiniciar el nodo con ejecución interpretada.
Estructura de archivos #
El nodo almacena una serie de archivos en: /home/$USER/.local/share/polkadot/chains/<chain name>/
. Puedes establecer una ruta personalizada con --base-path <path>
.
keystore
El keystore (almacén de claves) almacena las claves de sesión, que son importantes para las operaciones del validador.
db
La base de datos almacena bloques y el trie de estado. Si estás ejecutando un nodo validador, también almacena pre-votes y pre-commits de GRANDPA y la DB del offchain-worker. Ten cuidado al migrar nodos validadores para evitar errores. Si deseas iniciar una nueva máquina sin resincronizar, puedes detener tu nodo, hacer una copia de seguridad de la DB y moverla a una nueva máquina.
Para borrar tu DB y resincronizar desde genesis, ejecuta:
polkadot purge-chain
LOS VALIDADORES DEBEN SINCRONIZARSE USANDO EL BACKEND ROCKSDB
Esto es implícito por defecto, pero puede ser explícito pasando la flag --database RocksDb
. En el futuro, se recomienda cambiar a la opción más rápida y eficiente ParityDb. Cambiar entre backends de bases de datos requerirá una resincronización.
Si quieres probar ParityDB puedes añadir la opción --database paritydb
.
Herramientas de deploy #
La Fundación Web3 mantiene Polkadot Deployer, que te permite crear deployments locales o remotos en la nube de nodos Polkadot. Consulta el README para obtener instrucciones.
Para los validadores, consulta la guía de configuración del validador para obtener información específica para el deployment de nodos validadores.
Monitoreo y Telemetría #
Estado del nodo
Puedes comprobar el estado del nodo mediante RPC con websocat:
echo ‘{“id”:1,”jsonrpc”:”2.0″,”method”:”system_health”,”params”:[]}’ | websocat -n1 -B 99999999 ws://127.0.0.1:9944
{“jsonrpc”:”2.0″,”result”:{“peers”:50,“isSyncing”:false,“shouldHavePeers”:true},“id”:1}
Logs
El cliente Polkadot tiene varios log targets. Los más interesantes para los usuarios pueden ser:
afg
(Al’s Finality Gadget – consenso GRANDPA)babe
telemetry
txpool
usage
Otros targets son: db, gossip, peerset, state-db, state-trace, sub-libp2p, trie, wasm-executor, wasm-heap
.
Los niveles de log, de menos a más detallados, son:
- error
- warn
- info
- debug
- trace
Por defecto, todos los targets están configurados con el logging info
. Puedes ajustar los niveles de log individuales utilizando la opción --log (-l short)
, por ejemplo -l afg=trace,sync=debug
o globalmente con -ldebug
.
Telemetría y métricas
El cliente Parity Polkadot se conecta a telemetría por defecto. Puedes desactivarlo con --no-telemetry
, o conectarse sólo a los servidores de telemetría especificados con la opción --telemetry-url
(consulta las opciones de ayuda para obtener instrucciones). Conectarse a la telemetría pública puede exponer información que ponga tu nodo en mayor riesgo de ataque. Puedes ejecutar tu propio servidor de telemetría privado o hacer deploy de una instancia de substrate-telemetry
en un clúster Kubernetes utilizando este gráfico de Helm.
El nodo también expone un endpoint Prometheus por defecto (desactivar con --no-prometheus
). Substrate tiene un tutorial de métricas de nodo monitor que utiliza este endpoint.