🇪🇸Stader meets DVT

Una aproximación experimental para el uso de DVT y SSV en validadores de Stader

En Ethernodes.io utilizamos tecnología DVT para asegurar el mejor uptime posible para todos los validadores que gestionamos. Es por ello que, con independencia de si gestionamos volumen mediante validadores vanilla o a través de protocolos de Liquid Staking, intentamos basar todas las operaciones en el uso de nuestros clusters.

En el siguiente artículo, explicamos nuestra experiencia en forma de guía sobre cómo migrar validadores operados en Stader a un cluster (propio o público) de SSV.

⚠️Toda la información contenida en este artículo es experimental y requiere de un conocimiento profundo sobre los sistemas implicados⚠️

Cualquier error en el proceso puede significar la pérdida parcial o total de fondos del validador, así como slashings por doble firma o por parte de Stader por mala práctica.

Ethernodes.io no se responsabiliza de un mal resultado final en la ejecución del proceso ni en la exactitud del mismo, así como tampoco de posibles riesgos futuros que se den por el uso de SSV para operar validadores de Stader.

Paso 0 - Qué tener en cuenta

Antes de comenzar hay que saber que una vez se retiran los validadores del operador de Stader, ya no se podrán añadir más validadores bajo ese mismo operador a no ser que se carguen de nuevo los ya existentes. Este dato hay que tenerlo en cuenta si se quiere escalar más bajo el mismo operador en Stader. Si no es el caso, o registrarás nuevos operadores para continuar ejecutando validadores desde su protocolo, puede servirte esta guía.

Hay que tomar ciertas precauciones antes de comenzar, como por ejemplo habilitar la protección doppleganger para evitar posibles errores fatales con el validador (doble sign)

Asegúrate de que tienes todos los elementos necesarios para realizar el proceso antes de iniciarlo, y que tienes dominados los diferentes aspectos del proceso de forma independiente.

Si algún punto del proceso te genera alguna duda o reserva, NO inicies el proceso. ¡Puedes preguntarnos y te resolveremos cualquier duda que tengas!

Paso 1 - Localizar los keystore y secret (password) de los Validadores deployados en tu Nodo Stader

Stader ejecuta varios módulos internos, uno de ellos es el cliente de validación. En el ejemplo utilizamos el cliente de validación (VC) lodestar. Substituir por el que estés utilizando.

Con el siguiente comando podrás ver el cliente de validación en uso en la línea de stader_validator:

$ docker ps -a

La ruta de los keystores y secrets es la siguiente:

$ ~/.stader/data/validators/lodestar/validators
$ ~/.stader/data/validators/lodestar/secrets

Recuerda modificar esta ruta con el VC que esté en uso en tu nodo Stader.

Es recomendable guardar una copia de forma segura de estos archivos (keystores y secrets), por si en un futuro quieres volver a ejecutar los validadores desde el propio operador Stader.

Habrás notado que cada keystore tiene una contraseña distinta asignada. En el caso de querer migrar varios validadores a SSV utilizando su proceso bulk, deberás ejecutar el Paso 2, descrito a continuación.

Paso 2 - Regenerar las claves de las keystores (opcional, si quieres migrar varios validadores)

Si tienes varios validadores que deseas transferir a SSV, es recomendable que regeneres los archivos keystore y les asignes un único password. De este modo el proceso del sharding será mucho menos tedioso. Las claves se regeneran utilizando el mnemonic del operador que obtuviste cuando instalaste el nodo Stader.

Puedes utilizar dos métodos para generar las Keystores:

  1. Usando el ejecutable Wagyu del launchpad de Ethereum https://github.com/stake-house/wagyu-key-gen/releases

⚠️ Es importante que regeneres las claves de los validadores antiguos. Por tanto, debes utilizar los nonce que se utilizaron desde Stader para llevarlo a cabo. Si tienes 1 validador, su nonce es 0. Si tienes 2 validadores sus nonce serán 0 y 1 . Y así sucesivamente en función del número de validadores.

Confirma que las pubkeys de los keystore que acabas de generar coinciden con las pubkeys de los validadores que están ejecutándose en Stader. El archivo deposit_data no es necesario.

Ahora ya tienes los keystore bajo el mismo password

Paso 3 - Generación de KeyShares

Sigue los pasos de SSV que encontrarás en https://docs.ssv.network/developers/get-started para generar los keyshares. La última versión del ejecutable permite operaciones en bulk, especificando un directorio con keystore files en lugar de un archivo keystore suelto. ¡Así conviertes los keystores en keyshares rápidamente!

Recuerda que hemos generado las keystores de nuevo en el Paso 2 ya que el ejecutable de SSV no puede realizar la tarea de generación de keyshares en bulk si los keystores tienen diferentes contraseñas.

⚠️ Existe una limitación de 80 validadores por archivo keyshare. Por lo tanto, si tienes más de 80 validadores a migrar a SSV, deberás hacerlo por batches de 80, generando un archivo keyshare por cada bloque. Además, no debes tener ningún otro archivo que no sean keystores en la carpeta target.

Paso 4 - Extracción de validadores

Es el momento de retirar los keystores y secrets de Stader. Retira de tu cliente de validación todas las carpetas y archivos ubicados en la ruta del Paso 1. Una vez hagas esto, puedes ejecutar:

$ docker restart stader_validator
$ docker logs stader_validator –follow

Ahora puedes confirmar que ya no está cargando los validadores en los logs:

Paso 5 - Confirmar el apagado de los validadores en la red

Confirma que los validadores se han apagado, comprobando que están perdiendo attestations.

⚠️Es importante dejar que los validadores pierdan 3 o 4 attestations antes de cargarlos de nuevo en SSV, para evitar slashings por doble sign.

Paso 6 - Cargando los keyshares en SSV

Si tus operadores son privados, debes modificar owner de los mismos, indicando la wallet operadora del nodo de Stader. De este modo podrás incluir nuevos validadores desde esa address en tu cluster privado.

Siguiendo la siguiente guía puedes cargar normalmente los keyshares en SSV: https://docs.ssv.network/validator-user-guides/validator-management/distributing-a-validator

Paso 7 - Configurar el fee-recipient

En el caso de que estés en el socializing pool de Stader, debes configurar el fee-recipient de tus validadores.

Para modificar el fee-recipient de tus validadores en SSV, puedes utilizar esta guía:

https://docs.ssv.network/validator-user-guides/validator-management/setting-fee-recipient-address#connect-your-web3-wallet-to-webapp

La address a indicar en caso de que estés en el socializing pool de Stader la puedes encontrar aquí: https://www.staderlabs.com/docs-v1/Ethereum/smart-contracts

En el caso de tener tus validadores configurados para formar parte del socializing pool, no configurar el fee-recipient puede suponer penalizaciones por parte del protocolo de Stader.

Paso 8 - Comprueba que tus validadores firmar attestations

Sólo te queda comprobar que tus validadores vuelven a firmar attestations. Una vez finalizado el proceso, ¡Tus validadores de Stader estarán funcionando en SSV bajo una infraestructura DVT!

⚠️ Recuerda que se trata de un proceso experimental. Desde Ethernodes.io se ha ejecutado el mismo con éxito con +200 validadores. No obstante, no recomendamos realizarlo sin un conocimiento profundo de los diferentes sistemas implicados.⚠️

Last updated