Ir al contenido principal

Ejecutar un Nodo Completo

Cómo ejecutar en la Mainnet Network usando una imagen preconstruida de Docker.


Nodos Alojados

Si prefieres una configuración simple y con un clic alojada para ejecutar un nodo en uno de los principales proveedores de la nube (AWS y GCP), revisa nuestra documentación de hosted nodes.

información

Si desea estar al día de todas las noticias que ocurren en la comunidad Celo, incluyendo la validación, operación de nodo y gobernanza, por favor regístrese en nuestra Celo Signal mailing list here.

Puede añadir el Celo Signal public calendar que también tiene fechas relevantes.

Los nodos completos tienen un propósito especial en el ecosistema de Celo, actuando como un puente entre las billeteras móviles (ejecutándose como clientes ligeros) y los nodos validadores.

Cuando un cliente ligero envía transacciones, pueden incluir una comisión de pasarela para ser pagada al nodo que chispa las transacciones a los otros nodos y validadores completos.

Por esta razón, a pesar del hecho de que Celo utiliza un protocolo de prueba, los usuarios pueden ganar criptomonedas sin primero tener que poseer ninguna, simplemente ejecutando un nodo completo.

peligro

Aún no se han habilitado todos los incentivos de los nodos completos porque el mecanismo para negociar una tasa de pasarela todavía está en desarrollo. Actualmente, los clientes ligeros están configurados para enviar una tarifa de pasarela de 0 y los nodos completos están configurados para aceptar una tarifa mínima de pasarela de 0.

Prerequisitos

  • Tener Docker instalado. Si aún no lo tiene, siga las instrucciones aquí: Comenzar con Docker. Esto implicará crear o iniciar sesión con una cuenta de Docker, descargar una aplicación de escritorio, y luego lanzar la aplicación para poder usar la Docker CLI. Si se está ejecutando en un servidor Linux, siga las instrucciones para su distribución aquí. Es posible que deba ejecutar Docker con sudo dependiendo de su entorno de instalación.
información

Código que verás en esta página son comandos bash y su salida.

Cuando vea texto en corchetes de ángulo <>, reemplácelos y el texto dentro con su propio valor de lo que se refiere. No incluir el <> en el comando.

Redes de Celo

Primero vamos a configurar las variables de entorno necesarias para la red mainnet. Ejecuta:

export CELO_IMAGE=us.gcr.io/celo-org/geth:mainnet

Pull la imagen de Celo Docker

Vamos a usar una imagen Docker que contiene el software del nodo Celo en este tutorial.

Si está reejecutando estas instrucciones, la imagen de Celo Docker puede haber sido actualizada, y es importante obtener la última versión.

docker pull $CELO_IMAGE

Configurar un directorio de datos

Primero, cree el directorio que almacenará la configuración de su nodo y su copia de la Blockchain. Este directorio puede ser nombrado como quieras, pero aquí hay un valor por defecto que puede usar. Los siguientes comandos crean un directorio y luego navegan por él. El resto de los pasos asumen que está ejecutando los comandos desde dentro de este directorio.

mkdir celo-data-dir
cd celo-data-dir

Crear una cuenta y obtener su dirección

En este paso, crearás una cuenta en la red. Si ya lo has hecho y tienes una dirección de cuenta, puedes saltarlo y pasar a configurar tu nodo.

Ejecutar el comando para crear una nueva cuenta:

docker run -v $PWD:/root/.celo --rm -it $CELO_IMAGE account new

Te pedirá una frase de acceso, te la pedirá que la confirmes y luego enviará la dirección de tu cuenta: Public address of the key: {<YOUR-ACCOUNT-ADDRESS>

Guarda esta dirección en una variable de entorno, para que puedas referenciarla a continuación (no incluir las llaves):

export CELO_ACCOUNT_ADDRESS=<YOUR-ACCOUNT-ADDRESS>
información

Esta variable de entorno sólo persistirá mientras tengas esta ventana de terminal abierta. Si quieres que esta variable de entorno esté disponible en el futuro, puedes añadirla a tu ~/.bash_profile

Iniciar el nodo

Este comando especifica la configuración necesaria para ejecutar el nodo y lo inicia.

docker run --name celo-fullnode -d --restart unless-stopped --stop-timeout 300 -p 127.0.0.1:8545:8545 -p 127.0.0.1:8546:8546 -p 30303:30303 -p 30303:30303/udp -v $PWD:/root/.celo $CELO_IMAGE --verbosity 3 --syncmode full --http --http.addr 0.0.0.0 --http.api eth,net,web3,debug,admin,personal --light.serve 90 --light.maxpeers 1000 --maxpeers 1100 --etherbase $CELO_ACCOUNT_ADDRESS --datadir /root/.celo

Empezarás a ver algunos resultados. Después de unos minutos, debería ver líneas que se parecen a esto. Esto significa que su nodo ha comenzado a sincronizar con la red y está recibiendo bloques.

INFO [07-16|14:04:24.924] Imported new chain segment               blocks=139  txs=319 mgas=61.987 elapsed=8.085s mgasps=7.666 number=406  hash=9acf16…4fddc8 age=6h58m44s cache=1.51mB
INFO [07-16|14:04:32.928] Imported new chain segment blocks=303 txs=179 mgas=21.837 elapsed=8.004s mgasps=2.728 number=709 hash=8de06a…77bb92 age=6h33m37s cache=1.77mB
INFO [07-16|14:04:40.918] Imported new chain segment blocks=411 txs=0 mgas=0.000 elapsed=8.023s mgasps=0.000 number=1120 hash=3db22a…9fa95a age=5h59m30s cache=1.92mB
INFO [07-16|14:04:48.941] Imported new chain segment blocks=335 txs=0 mgas=0.000 elapsed=8.023s mgasps=0.000 number=1455 hash=7eb3f8…32ebf0 age=5h31m43s cache=2.09mB
INFO [07-16|14:04:56.944] Imported new chain segment blocks=472 txs=0 mgas=0.000 elapsed=8.003s mgasps=0.000 number=1927 hash=4f1010…1414c1 age=4h52m31s cache=2.34mB

Habrá sincronizado completamente con la red una vez que haya sacado el último número de bloqueo, que puedes buscar visitando las páginas Network Stats o Block Explorer.

peligro

Seguridad: La línea de comandos anterior incluye el parámetro --http.addr 0.0.0. que hace que el software Celo Blockchain escuche las peticiones RPC entrantes en todos los adaptadores de red. Precaución extrema al hacer esto al correr fuera de Docker, ya que significa que cualquier cuenta desbloqueada y sus fondos pueden ser accedidos desde otras máquinas en Internet. En el contexto de ejecutar un contenedor Docker en su máquina local, esto junto con las banderas docker -p le permite hacer llamadas RPC desde fuera del contenedor, por ejemplo desde su host local, pero no desde fuera de su máquina. Lea más sobre Docker Networking aquí.

Ejecución de un nodo de archivo

Si desea ejecutar un nodo de archivo para celo-blockchain, puede ejecutar el siguiente comando:

docker run --name celo-fullnode -d --restart unless-stopped --stop-timeout 300 -p 127.0.0.1:8545:8545 -p 127.0.0.1:8546:8546 -p 30303:30303 -p 30303:30303/udp -v $PWD:/root/.celo $CELO_IMAGE --verbosity 3 --syncmode full --gcmode archive --txlookuplimit=0 --cache.preimages --http --http.addr 0.0.0.0 --http.api eth,net,web3,debug,admin,personal --light.serve 90 --light.maxpeers 1000 --maxpeers 1100 --etherbase $CELO_ACCOUNT_ADDRESS --datadir /root/.celo

Agregamos las siguientes banderas: --gcmode file --txlookuplimit=0 --cache.preimages

En celo-blockchain, esto se llama gcmode que se refiere al concepto de recolección de basura. Establecerlo para archivar básicamente lo desactiva.

Interfaz de línea de comandos

Una vez que el nodo completo se esté ejecutando, puede servir la herramienta Command Line Interface celocli. Por ejemplo:

$ npm install -g @celo/celocli
...
$ celocli node:synced
true
$ celocli account:new
...

Servicio de cliente ligero

Clientes ligeros pueden conectarse contigo a medida que la gente ejecute el Celo Mobile Wallet y comenzará a ganar comisiones de pasarela por cualquier transacción que estos usuarios inicien, que puede leer más en el documento Full Node Incentives. La cuenta que este nodo anuncia para clientes ligeros a usar para estas comisiones es dada por el parámetro etherbase. El parámetro light.serve define el porcentaje de tiempo que este nodo debe pasar sirviendo clientes ligeros. Los valores válidos son 0-100. Si este nodo está teniendo problemas para llegar al bloque actual, caer a un porcentaje menor puede ayudar. Los parámetros light.maxpeers y maxpeers establecen límites en el número de clientes ligeros y pares de nodos completos que el nodo aceptará.