Guía de nominación avanzada en Polkadot y Kusama
Mario Pino @ PolkaStats Validator / https://polkastats.io
La Colmena Labs / https://www.colmenalabs.org
Introducción
En esta guía explicaremos como usar la información disponible en varias fuentes para optimizar el rendimiento de nuestra participación en las cadenas de bloques de tipo Substrate Polkadot y su red canaria Kusama.
Si acabas de llegar a este mundo de las cadenas de bloques de tipo Proof of Stake, te recomiendo que comiences con el artículo publicado por DerFredy “Qué validadores de Polkadot y Kusama debería elegir”, también puedes consultar el vídeo “Hacer Staking en Polkadot” del mismo autor.
Si ya estás familiarizado con el uso de billeteras para hacer transferencias de fondos y participar en la red de una forma básica, ¡vamos allá!
Periodos de tiempo en Polkadot
Antes de entrar en materia es necesario conocer los distintos periodos de tiempo que gobiernan Polkadot:
Periodos de tiempo en Kusama
La red Kusama es 4 veces más rápida que Polkadot, a excepción del tiempo de bloque, que también es de 6 segundos.
Recompensas
Como cadena de bloques de tipo NPoS o Nominated Proof of Stake, Polkadot favorece la descentralización de tal forma que las recompensas en relación con la participación aumentan si nominamos a los validadores activos que tienen menos participación.
Esto es, dicho sencillamente, que si ordenamos los validadores activos por su participación o stake, obtendremos un mayor beneficio si seleccionamos los últimos de la lista en lugar de los primeros. Eso sí, seleccionar a los últimos validadores tiene un riesgo que debemos valorar. Los últimos validadores tienen una mayor probabilidad de perder su slot en las próximas elecciones, y por lo general una mayor participación significa que el validador tiene más recursos, lo cual se puede derivar en una mayor confiabilidad.
El razonamiento es que los validadores con más stake suelen tener más recursos como administradores de sistemas, desarrolladores, hardware, redundancia etc para mantener su infraestructura en perfecto estado de funcionamiento.
Contra Intuitivamente, también podemos ver lo opuesto, con validadores pequeños que suplen su falta de recursos con mucho esfuerzo e imaginación, innovando frecuentemente más que otros validadores con más recursos.
Puntos de Era
Tanto en Kusama como en Polkadot las recompensas se determinan al final de cada Era. Esta recompensa, que varía en cada Era en base a la actividad de la red, se reparte entre los validadores y nominadores siguiendo unas sencillas reglas.
La recompensa que va a cada slot de validador es proporcional a los Puntos de Era que el validador ha acumulado en la última Era.
Los validadores obtienen puntos de era por acciones como:
- Validar bloques producidos por una parachain.
- Producir un bloque (non-uncle) en la red principal o Relay Chain.
- Producir una referencia a un bloque tío huérfano (no referenciado)
- Producir un bloque tío (uncle) que no sea huérfano (referenciado).
NOTA: Un bloque tío (uncle block) es un bloque de la red principal o Relay Chain que es válido en todos sus aspectos, pero que sin embargo no es canónico. Esta situación puede ocurrir cuando dos o más validadores producen un bloque al mismo tiempo pero sólo uno de ellos se propaga lo suficientemente rápido para entrar en la cadena antes que los demás. Llamamos bloques tío (o uncle block) a estos bloques retrasados que no llegan a incorporarse a la cadena.
En principio para cada sesión cada validador debería obtener los mismos puntos de era a largo plazo. Sin embargo, en la práctica no es así, debido a que el validador puede estar offline y perder su turno y debido a otros motivos como diferencias en el hardware. Es por ello que cualquier nominador que se preocupa por el rendimiento de su participación estudiará los puntos de era que obtiene cada validador a largo plazo, evitando todos aquellos en los que esta sea menos regular.
Cálculo de las recompensas
Como hemos visto, cada era los validadores acumulan puntos en base a su actividad, pero puede que nos surjan algunas preguntas: ¿Cómo se calculan las recompensas? ¿Cómo se reparten? ¿Cómo incentiva Polkadot la descentralización en los validadores?
Cada era tenemos una determinada recompensa o reward que debe repartirse a validadores y nominadores.
- Cada validador con sus nominadores forma un grupo
- La recompensa de la era se divide entre todos los grupos en base a los puntos de era acumulados por el validador
- El validador resta su comisión
- El resto se divide entre los nominadores del grupo proporcionalmente a su participación.
Polkadot incentiva la descentralización entre los validadores activos mediante el uso de un algoritmo de selección llamado Phragmen, que se ejecuta antes del cambio de era para seleccionar los validadores activos entre todos los candidatos posibles de validadores/nominadores.
Como ya sabemos en Polkadot como nominador es posible elegir hasta 16 validadores, pero en cada era solo uno de ellos estará activo, proporcionando rewards para ese nominador. El algoritmo de Phragmen intenta siempre maximizar la representación de validadores y balanceará las nominaciones para priorizar los validadores con menor participación.
En cada era tenemos pues un número de validadores, que con sus nominadores formarán un grupo ordenado por su participación o stake. Dado que todos los validadores hacen el mismo trabajo y reciben la misma recompensa, es lógico pensar que los validadores y nominadores que están en la parte baja de ese tabla reciben un rendimiento superior por participación que los que están en la parte alta de la tabla.
Esto provoca que los nominadores que tratan de maximizar sus beneficios intentarán siempre elegir a validadores que se encuentran posicionados en la parte baja de la tabla de validadores, pero si muchos nominadores siguen la misma estrategia, ese validador incrementará su participación y subirá de posición, siendo ligeramente menos rentable.
La dinámica de la participación incentiva de esta forma que surjan nuevos validadores en espera que sean seleccionados por los nominadores con la promesa de mejorar sus beneficios. A medida que los validadores de la parte baja reciben más participación, su rentabilidad decrece y los nominadores cambian a validadores más rentables de la parte baja de la tabla.
Como hemos comentado, siempre tenemos que tener en cuenta los riesgos:
- Validadores no reconocidos con comportamientos inesperados
- La comisión (y sus cambios)
- Slashes
- Riesgo de que todos los validadores seleccionados queden fuera de la era, quedando la nominación inactiva, sin generar rewards.
Conociendo los riesgos podemos establecer la estrategia de participación que más se ajuste a nuestras necesidades. Nominadores más conservadores intentarán elegir validadores reconocidos por la comunidad, con comisiones razonables y un buen historial, aunque no sean los que más beneficios produzcan. Otros nominadores más aventureros intentarán seleccionar validadores al límite de la tabla, intentando ajustar siempre sus nominaciones para obtener el máximo beneficio.
Pago de recompensas
En Polkadot y Kusama los nominadores reclaman sus recompensas de las eras pasadas enviando un transacción. Este sistema se denomina Pagos Simples o Simple Payouts.
Este sistema incentiva que la distribución de recompensas se disperse, evitando que todos los nominadores reclamen sus recompensas en el mismo bloque, aunque incluso si todos los nominadores reclamarán sus recompensas al mismo tiempo, el hecho en sí de que sean transacciones individuales permitiría al algoritmo de construcción del bloque procesar sólo un número limitado de transacciones por bloque y garantizando de esta manera un tiempo de bloque constante. Si todas las recompensas de la red se enviaran en el mismo bloque, esto podría causar serios problemas con la estabilidad de la red.
Para reclamar una recompensa se requiere enviar una transacción individual por validador y era para reclamar las recompensas.
Polkadot almacena hasta 84 eras los datos necesarios para calcular la recompensa, así que no será posible reclamar recompensas después de pasadas 84 eras (84 días en Polkadot y aproximadamente 21 días en Kusama). ¡Ten esto en cuenta si no quieres perder tus recompensas! Otra opción es elegir validadores que implementen un sistema automático de pago de recompensas, que suele ser diario. Estos validadores, como PolkaStats o DragonStake realizan diariamente las transacciones necesarias para que las recompensas lleguen a tu cuenta sin tener que preocuparte por ello o pagar comisiones.
Castigos
Los castigos o Slashes son el principal riesgo al que se enfrenta un nominador (y validador!), ya que no solo no ganaríamos sino que podemos perder parte de la cantidad que estemos nominando.
Cuando un validador se comporta mal sufre un evento de Slash, el cual es un castigo por no seguir el protocolo. La penalización es aplicada al validador y a todos sus nominadores. Los tiempos de inactividad y los errores de firma son las causas más comunes que desencadenan un evento de slash. La única manera de protegerte del slashing es eligiendo cuidadosamente los validadores a los que vas a nominar.
Otra medida de la red contra la centralización es que castiga más fuertemente a clusters (muchos validadores con el mismo nombre) que a validadores independientes. De manera que cuantos más validadores cometan un error a la vez mayor es el castigo. Así se incentiva a los nominadores a “NO Nominar” a dichos clusters (normalmente de exchanges y grandes pools) y en su lugar elegir validadores independientes.
Sobreparticipación
La sobreparticipación de un validador es un problema frecuente en Polkadot, que puede ser la causa de que dejes de recibir recompensas. Un validador está sobreparticipado cuando tiene más de 64 nominadores, en ese caso solo los primeros 64 nominadores ordenados por stake recibirán recompensas.
Puedes ver los validadores que están sobreparticipados en Polkadot JS Portal, en la sección de Participación: https://polkadot.js.org/apps/#/staking, aparecen con un icono redondo rojo con el número 64, además en la participación de estos validadores podrás ver en rojo los fondos que no recibirán recompensas.
No nomines nunca a estos validadores sobreparticipados, especialmente si tienes poco stake, dado que estarás poniendo en riesgo tus recompensas si pasan a estar activos.
Puedes ver una guía realizada por DerFredy sobre cómo evitar este problema aquí: https://telegra.ph/Nominadores-activos--inactivos-en-Polkadot-09-10
NOTA: Actualmente existe una propuesta de cambio en GitHub para aumentar este límite hasta 128 nominadores en Kusama y 256 nominadores en Polkadot, que puedes ver aquí: https://github.com/paritytech/polkadot/pull/1668/files
Selección de validadores
Una vez claros los conceptos anteriores, veremos cómo utilizar las herramientas disponibles para seleccionar los validadores que más nos convienen para maximizar nuestros beneficios como nominador. Si lo hacemos con ciertos principios ¡También estaremos ayudando a que las redes Polkadot y Kusama sean menos centralizadas!
Objetivos
Entra en la página de objetivos de PolkaStats para la red que estás participando:
Polkadot: https://polkastats.io/targets
Kusama: https://kusama.polkastats.io/targets/
Aquí podemos ver la lista de validadores activos, ordenados por rentabilidad. Hay que tener en cuenta que la rentabilidad anualizada se extrapola de la rentabilidad en la última era.
Elige un tamaño de página de 20 y elige 16 validadores teniendo en cuenta estos factores:
- Rentabilidad
- Comisión actual
- No es un cluster
- No está sobreparticipado
- ¿Tiene identidad? O es solo una dirección de la que no sé nada.
- ¿Es conocido en la comunidad?
- Historial de puntos de era, recompensas, slashes y comisión
Asegúrate de seleccionar al menos un validador inactivo, ya que cuando entre en el set de validadores será el que mas recompensas genere.
Para una mayor seguridad, elige al menos un validador de la parte media de la tabla y uno de la parte superior, de esta forma será muy difícil quedarte sin un validador activo.
Predicción de elecciones
Hemos comentado antes que los validadores de la siguiente era son seleccionados por el algoritmo Phragmen, pero ¿Cuando?
En Polkadot y Kusama hay un periodo de elecciones en el último cuarto de la última sesión de la era. En ese periodo de elecciones NO es posible realizar ninguna actividad de staking: no se puede seleccionar o cambiar tus validadores ni se pueden reclamar recompensas. Esto es debido a que en base a la información actual de validadores y nominadores se ejecuta offline el algoritmo de phragmen para seleccionar los validadores y nominaciones de la siguiente era.
¿Existe una manera de saber cual es el cálculo de Phragmen en base a la información actual de staking? Sí, y la podemos encontrar en PolkaStats.io, que ejecuta cada 10 minutos el software offline-election para calcular la predicción de validadores y nominadores seleccionados para la siguiente era. De esta manera podemos anticiparnos a los cambios en la situación y podemos optimizar nuestras posiciones justo antes de que empiece el periodo de elecciones y ya no sea posible realizar ningún cambio.
Polkadot: https://polkastats.io/election-prediction
Kusama: https://kusama.polkastats.io/election-prediction
Seguimiento
Polkadot y Kusama son redes muy dinámicas, en las que la participación puede cambiar bastante de una era a otra. Se recomienda siempre controlar las gráficas de los validadores que hemos incluido en nuestro set, preferiblemente antes del comienzo del periodo de elecciones para que podamos realizar los cambios precisos.
Tenemos que controlar:
- Cambios en la rentabilidad del validador (seguimiento de era points)
- Validadores inactivos
- Cambios de comisión
- Validadores sobreparticipados
- Slashes
- Validadores con baja proporción de puntos de era
Para ello tenemos que acceder a la página de validadores:
Polkadot: https://polkastats.io/validators
Kusama: https://kusama.polkastats.io/validators
Solo tenemos que buscar por dirección o nombre el validador que queremos revisar y revisar las gráficas. Es recomendable hacerlo frecuentemente, tanto como interés tengamos en optimizar nuestro rendimiento.
Como ya hemos comentado, debes preocuparte de reclamar tus recompensas, ya que no será posible reclamarlas después de 84 días en Polkadot (21 en Kusama).
Referencias
Learn Staking:
https://wiki.polkadot.network/docs/en/learn-staking
Intro to Nominated Proof-of-Stake:
https://w3f-research.readthedocs.io/en/latest/polkadot/NPoS/index.html
Sequential Phragmén Method:
https://wiki.polkadot.network/docs/en/learn-phragmen
Simple Payouts: