Ejecutando un nodo de Chainlink por primera vez
Traducción de https://medium.com/chainlink/running-a-chainlink-node-for-the-first-time-4988518c95d2?source=collection_home---6------2--------------------- escrito por Thomas Hodges y traducido por Chainlink en español
Nota del traductor: Esta guía parece estar desactualizada. Este artículo fue traducido antes de que existiese la documentación oficial. Pese a ello, pronto tendréis a vuestra disposición una guía de referencia para montar vuestro nodo en español. Disculpad las molestias.
Este artículo sirve como guía para aquellas personas que estén interesadas en aprender cómo operar un nodo de Chainlink. Si bien este artículo no se decanta por un sistema operativo u otro, sí que es cierto que se requiere estar familiarizado con la línea de comandos, la cual suelen usar más a menudo los usuarios de Linux y Mac. Además, es posible ejecutar un nodo de Chainlink en un entorno de pruebas en tu ordenador. No se requiere comprar servicios de alojamiento en la nube. Sin embargo, quizás sí te interesaría hacerlo cuando estés ejecutando tu nodo de Chainlink en la red principal de Ethereum ya que su capacidad (o incapacidad debido a los tiempos de espera) para responder a las peticiones podría afectar a tu reputación.
Si quieres una guía más breve y menos detallada, por favor visita nuestra documentación oficial sobre cómo ejecutar un nodo de Chainlink aquí.
Existen dos maneras de ejecutar un nodo de Chainlink. La primera es instalar todos los módulos de desarrollo requeridos, descargar el código base y compilar un binario en tu ordenador. La segunda es simplemente ejecutar una imagen de Docker que se mantiene actualizada como parte de nuestro proceso de entrega continua. Esta guía se centra en este último método porque es más fácil y más asequible para la mayoría de la gente. Si tienes mucha experiencia administrando sistemas o desarrollando, puedes seguir la guía completa de instalación para un entorno de desarrollo de Chainlink aquí.
El primer paso es instalar Docker-CE. Docker-CE (community edition) es una versión gratuita de Docker que puedes usar para manejar contenedores sin tener que pagar por soporte de nivel empresarial. Después de hacer click en Docker-CE link, selecciona tu sistema operativo en la columna a la izquierda y sigue las instrucciones de instalación. Una vez termines, continúa con el siguiente paso.
A continuación, el nodo de Chainlink requiere una conexión activa a un cliente de Ethereum para comunicarse con los contratos inteligentes de la blockchain. Querremos tener un cliente de Ethereum operativo y sincronizado antes de empezar con nuestro nodo de Chainlink. Una vez más, la forma más fácil de hacer esto es con Docker. Geth y Parity ofrecen imágenes oficiales a través de Docker y son muy fáciles de ejecutar. Ambas opciones requieren seguir los mismos pasos básicos: descargar la imagen, crear un volumen y ejecutar la imagen. No importa qué cliente prefieras.
Para descargar la imagen Docker de Geth (ethereum/client-go), ejecuta el siguiente comando:
docker pull ethereum/client-go:stable
Esto descargará el cliente Geth para ejecutar la aplicación en forma de módulos en tu ordenador. A continuación, crea una carpeta para datos blockchain para que no tengas que resincronizar la blockchain entera cada vez que reinicies la imagen. Esto se hace con un simple comando:
mkdir ~/.geth-ropsten
Esto crea una carpeta vacía que usaremos para la imagen Docker de Geth cada vez que se ejecute. Por último, querrás ejecutar la imagen en sí misma, usando la carpeta que acabamos de crear y aportándole los parámetros para que a nuestro nodo de Chainlink le resulta fácil conectarse a él:
docker run --name eth -p 8546:8546 -v ~/.geth-ropsten:/geth -it \
ethereum/client-go:stable --testnet --syncmode light --ws \
--wsaddr 0.0.0.0 --wsorigins="*" --datadir /geth
Con este comando, habilitaremos los websockets, un protocolo al cual el nodo de Chainlink necesita conectarse. Le daremos al contenedor el nombre eth, usando la carpeta que creamos antes con el segundo comando y pidiéndole que se ejecute en la red de pruebas Ropsten. Este método también sirve para ejecutar el cliente de Ethereum en modo ligero, el cual mantiene los datos de la blockchain al mínimo. Puesto que hay problemas de seguridad a la hora de ejecutar un cliente ligero, no se recomienda ejecutarlo en la red principal de Ethereum.
Si en lugar de un cliente Geth quieres ejecutar un cliente Parity, los comandos son esencialmente los mismos. La única diferencia es el nombre de la imagen y de la carpeta. Puedes descargar la última imagen de Docker Parity ejecutando:
docker pull parity/parity:stable
Entonces crea un directorio persistente solo para Parity:
mkdir ~/.parity-ropsten
Y finalmente, ejecuta la imagen de Parity:
docker run -h eth --name eth -p 8546:8546 \
-v ~/.parity-ropsten:/home/parity/.local/share/io.parity.ethereum/ \
-it parity/parity:stable --chain=ropsten \
--ws-interface=all --ws-origins="all" --light \
--base-path /home/parity/.local/share/io.parity.ethereum/
Una vez que el cliente de Ethereum complete su sincronización ya estaremos listos para ejecutar el nodo de Chainlink.
De forma similar a como lo hemos hecho con el cliente de Ethereum, primero descargaremos la última imagen de Chainlink desde Docker:
docker pull smartcontract/chainlink:latest
Usamos la etiqueta “:latest” porque se mantiene actualizada mediante nuestro repositorio en Github. También hay que crear un directorio persistente para el nodo de Chainlink de tal forma que no necesitemos iniciarlo cada vez que reiniciemos la imagen:
mkdir ~/.chainlink-ropsten
A continuación, hacemos algunos ajustes para configurar el nodo de Chainlink. Chainlink usa un entorno de variables para su configuración. Antes de ejecutar el nodo, necesitamos crear un archivo que se pueda pasar a la imagen de Docker, la cual contiene nuestros valores deseados. En Linux y Mac, crea este archivo de forma simple ejecutando:
echo "ROOT=/chainlink
LOG_LEVEL=debug
ETH_URL=ws://eth:8546
ETH_CHAIN_ID=3
MIN_OUTGOING_CONFIRMATIONS=2
MIN_INCOMING_CONFIRMATIONS=0
LINK_CONTRACT_ADDRESS=0x20fe562d797a42dcb3399062ae9546cd06f63280
CHAINLINK_TLS_PORT=0
CHAINLINK_DEV=true
ALLOW_ORIGINS=*" > .env
Los valores de “ETH_CHAIN_ID” y “LINK_CONTRACT_ADDRESS” están repletos de valores específicos de la red de pruebas Ropsten. Si quieres ejecutar un nodo en una red diferente, simplemente cambia esos valores. El archivo por lo general se guarda con el nombre “.env” pero puedes nombrarlo como quieras. El siguiente comando asume que el nombre del archivo es “.env”. Si lo has nombrado de forma diferente, necesitarás modificar el siguiente comando.
Ahora ya estamos listos para ejecutar el nodo de Chainlink:
docker run --link eth -p 6688:6688 \
-v ~/.chainlink-ropsten:/chainlink \
-it --env-file=.env \
smartcontract/chainlink n
Este comando inicia el nodo de Chainlink usando los valores almacenados en el archivo del entorno de variables que creaste antes y enlaza con la imagen Docker del cliente de Ethereum. La primera vez que ejecutes el nodo de Chainlink se te preguntará por una contraseña, seguido de una confirmación de contraseña. Esto es para tu archivo “keystore” usado por el nodo. Usamos el nodo de Chainlink para gestionar las claves de Ethereum en lugar del cliente Ethereum. Esto significa que no es necesario ejecutar tu propio cliente Ethereum con una cuenta desbloqueada siempre y cuando el puerto JSON-RPC esté abierto. La clave del nodo de Chainlink será la que firme las transacciones, las cuales dan respuesta a las peticiones de los contratos inteligentes. Necesitará algo de ETH para poder escribir en la blockchain. Una vez que el nodo muestre tu dirección Ethereum (después del próximo paso), podrás obtener ETH de la red Ropsten aquí.
A continuación, se te preguntará por una dirección de correo electrónico API y una contraseña. Esto se usará para interactuar con el nodo de Chainlink a través de la API, la línea de comandos o la interfaz gráfica. Introduce un email y una contraseña fuerte, preferiblemente diferente a la contraseña de tu keystore, para completar el proceso de configuración. Tienes que esperar a que el nodo de Ethereum se sincronice completamente antes de que el nodo de Chainlink esté completamente operativo.
Si todo va bien, deberías ver el nodo ejecutándose y recibiendo bloques desde el cliente Ethereum. También puedes dirigir tu navegador a http://localhost:6688 y ver la interfaz gráfica.
Inicia sesión usando la dirección de correo electrónico API y la contraseña que aportaste cuando iniciaste el nodo de Chainlink por primera vez. Una vez hayas iniciado sesión verás el panel de administrador.
¡Enhorabuena! Si has conseguido llegar hasta aquí, ¡ya estás operando un nodo!
Tus próximos pasos son añadir algunos trabajos y curiosear con el nodo en una red de pruebas de Ethereum. Continúa y échale un vistazo a nuestra guía sobre cómo rellenar tu propio contrato hasta que la agregación se haya implementado.
Si tienes alguna duda, puedes preguntarnos en nuestro grupo de Telegram y estaremos encantados de ayudarte.
Recursos adicionales: