Unirse a una Red
Instrucciones para potenciar un nodo usando State Sync.
Para obtener instrucciones para unirse como validador, consulte también la Guía de Validadores.
Empezando
Asegúrese de que se hayan completado los siguientes requisitos previos:
- Elija la configuración de hardware/servidor adecuada. Consulte la guía de hardware.
- Asegúrese de que crossfid esté instalado correctamente. Consulte la guía de instalación para obtener un recorrido.
- Siga la guía de configuración para inicializar y preparar el nodo para sincronizarse con la red.
Eligiendo una Red
Las redes actuales de CrossFi son:
Testnet
crossfi-evm-testnet-1
.
Mainnet
crossfi-mainnet-1
.
Exploradores
Exploradores de Testnet
- Explorador de bloques - https://scan.testnet.ms/
- Explorador de capas de Ejecución/Consenso - https://test.xfiscan.com/
Exploradores de Mainnet
Explorador de capas de Ejecución/Consenso - https://xfiscan.com/
Hardware
Ejecutar un nodo de archivo completo puede ser intensivo en recursos ya que el crossfi-1
actual puede superar los 1TB
. Para aquellos que deseen ejecutar sincronización de estado o usar quicksync, se recomienda la siguiente configuración de hardware:
\n\n| Tipo de Nodo | RAM | Almacenamiento | Validador | 32GB | 500GB-2TB* |\n| --- | --- | --- | --- | --- | --- |\n\n
* El tamaño de almacenamiento para validadores dependerá del nivel de poda.
Configuración General
Asegúrese de realizar la configuración y configuración básica. Los operadores necesitarán inicializar crossfid
, descargar el archivo génesis para crossfi-1
y establecer peers persistentes y/o semillas para el inicio.
Inicializar Cadena
Testnet
wget https://github.com/crossfichain/crossfi-node/releases/download/v0.3.0-prebuild3/crossfi-node_0.3.0-prebuild3_linux_amd64.tar.gz && tar -xf crossfi-node_0.3.0-prebuild3_linux_amd64.tar.gz
git clone https://github.com/crossfichain/testnet.git
./bin/crossfid start --home ./testnet
Mainnet
wget https://github.com/crossfichain/crossfi-node/releases/download/v0.3.0/crossfi-node_0.3.0_linux_amd64.tar.gz && tar -xf crossfi-node_0.3.0_linux_amd64.tar.gz
git clone https://github.com/crossfichain/mainnet.git
./bin/crossfid start --home ./mainnet
Semillas y Peers
Al iniciar, el nodo necesitará conectarse a peers. Si hay nodos específicos que un operador de nodo está interesado en configurar como semillas o como peers persistentes, esto puede configurarse en ~/.crossfid/config/config.toml
# Lista separada por comas de nodos de semillas para conectarse
t semillas = "@:26656,@:26656"
# Lista separada por comas de nodos para mantener conexiones persistentes
persistent_peers = "@:26656,@:26656"
Poda de Estado - Paso Opcional
Existen cuatro estrategias para podar el estado. Estas estrategias se aplican solo al estado y no al almacenamiento de bloques. Un operador de nodo puede querer considerar una poda personalizada si el almacenamiento del nodo es una preocupación o hay interés en ejecutar un nodo de archivo.
Para configurar la poda, ajuste el parámetro pruning
en el archivo ~/.crossfid/config/app.toml
. Las siguientes configuraciones de poda de estado están disponibles:
todo
: Poda todos los estados guardados salvo el estado actual.nada
: Guarda todos los estados y no elimina nada.predeterminado
: Guarda los últimos 100 estados y el estado de cada bloque en posición 10,000.personalizado
: Especifica configuraciones de poda con los parámetrospruning-keep-recent
,pruning-keep-every
ypruning-interval
.
Por defecto, cada nodo está en modo predeterminado
, que es la configuración recomendada para la mayoría de los entornos. Si un operador de nodo quiere cambiar la estrategia de poda de su nodo, entonces esto debe hacerse antes de que se inicie el nodo.
En ~/.crossfid/config/app.toml
# predeterminado: los últimos 100 estados se mantienen además de cada 500º estado; poda en intervalos de 10 bloques
# nada: se guardarán todos los estados históricos, no se eliminará nada (es decir, nodo de archivo)
# todo: se eliminarán todos los estados guardados, almacenando solo el estado actual; poda en intervalos de 10 bloques
# personalizado: permita que las opciones de poda se especifiquen manualmente a través de 'pruning-keep-recent', 'pruning-keep-every', y 'pruning-interval'
poda = "personalizado"
# Estos se aplican si y solo si la estrategia de poda es personalizada.
pruning-keep-recent = "10"
pruning-keep-every = "1000"
pruning-interval = "10"
Pasar un flag al iniciar crossfid
siempre anulará la configuración en el archivo app.toml
. Para cambiar la configuración de poda del nodo al modo todo
, pase el flag ---pruning todo
al ejecutar crossfid start
.
Si ejecuta el nodo con un estado podado, no será posible consultar las alturas que no están en el almacenamiento del nodo.
API REST - Opcional
Por defecto, la API REST está deshabilitada. Para habilitar la API REST, edite el archivo ~/.crossfid/config/app.toml
, y establezca enable
en true
en la sección [api]
.
###############################################################################
### Configuración de API ###
###############################################################################
[api]
# Enable define si el servidor API debe estar habilitado.
enable = true
# Swagger define si la documentación de swagger debe registrarse automáticamente.
swagger = false
# Address define el servidor API para escuchar. dirección
direccion = "tcp://0.0.0.0:1317"
Opcionalmente, active swagger estableciendo swagger
en true
o cambie el puerto de la API REST en el parámetro address
. Después de reiniciar la aplicación, acceda a la REST API en :1317
.
GRPC - Opcional
Por defecto, gRPC está habilitado en el puerto 9090
. La archivo ~/.crossfid/config/app.toml
es donde los cambios se pueden realizar en la sección de gRPC. Para deshabilitar el endpoint gRPC, establezca enable
en false
. Para cambiar el puerto, use el parámetro address
.
###############################################################################
### Configuración de gRPC ###
###############################################################################
[grpc]
# Enable define si el servidor gRPC debe estar habilitado.
enable = true
# Address define la dirección del servidor gRPC a la cual vincularse.
address = "0.0.0.0:9090"
Opciones de Sincronización
Hay tres formas principales de sincronizar un nodo en la Cadena Crossfi: Blocksync, State Sync y Quicksync. Consulte la matriz a continuación para la configuración recomendada del Hub. Esta guía se centrará en sincronizar dos tipos de nodos comunes: completo y podado. Para obtener más información sobre cómo sincronizar para ejecutar un nodo validador, consulte la sección sobre Validadores.
Hay dos tipos de preocupaciones al decidir cuál opción de sincronización es la correcta. La integridad de los datos se refiere a cuán confiables son los datos proporcionados por un subconjunto de participantes de la red. Datos históricos refiere a cuán robusta e inclusiva es la historia de la cadena.
Baja Integridad de Datos | Alta Integridad de Datos | |
---|---|---|
Mínimos Datos Históricos | Quicksync - Podado | State Sync |
Datos Históricos Moderados | Quicksync - Predeterminado | |
Datos Históricos Completo | Quicksync - Archivo | Blocksync |
Asegúrese de consultar la sección de hardware para obtener orientación sobre la mejor configuración para el tipo de nodo operativo.
Blocksync
Blocksync es más rápido que el consenso tradicional y sincroniza la cadena desde el génesis descargando bloques y verificando contra el árbol merkle de validadores. Para más información, consulte los Documentos de Fastsync de Tendermint
Al sincronizar mediante Blocksync, los operadores del nodo deberán actualizar manualmente la cadena o configurar Cosmovisor para que se actualice automáticamente.
Es posible sincronizar desde versiones anteriores de la Cadena Crossfi. Consulte la matriz a continuación para la versión correcta de crossfid
. Consulte el archivo de testnet para archivos génesis históricos.
Id de la Cadena | Versión Crossfi |
---|---|
crossfi-evm-testnet-1 | v0.2.0 |
Empezando
Inicie crossfid para comenzar a sincronizar con el flag skip-invariants
. Para más información sobre esto, vea Verificar red.
crossfid start --x-crisis-skip-assert-invariants
Sincronización de Estado
La sincronización de estado es una forma eficiente y rápida de iniciar un nuevo nodo, y funciona
Para habilitar la sincronización de estado, visite un explorador para obtener una altura de bloque reciente y el hash correspondiente. Un operador de nodo puede elegir cualquier altura/hash en el periodo de vinculación actual, pero como el período de instantáneas recomendado es 1000
bloques, se aconseja elegir algo cercano a altura actual - 1000
.
Con la altura del bloque y el hash seleccionados, actualice la configuración en ~/.crossfid/config/config.toml
para establecer enable = true
, y complete los campos trust_height
y trust_hash
. Los operadores de nodos pueden configurar los servidores rpc a un proveedor preferido, pero debe haber al menos dos entradas. Es importante que estos sean dos servidores rpc en los que el operador del nodo confíe para verificar partes componentes del estado de la cadena. Aunque no es recomendable, actualmente no se impone la unicidad, por lo que es posible duplicar el mismo servidor en la lista y aún sincronizarse con éxito.
En el futuro, el requisito del servidor RPC será reemplazado ya que la sincronización de estado se mueve hacia la capa p2p en Tendermint 0.38.
#######################################################
### Opciones de Configuración de Sincronización de Estado ###
#######################################################
[estado_sincronización]
# La sincronización de estado inicia rápidamente un nuevo nodo descubriendo, recuperando y restaurando una máquina de estado
# instantánea de los peers en lugar de recuperar y reproducir bloques históricos. Requiere que algunos peers en
# la red tomen y sirvan instantáneas de la máquina de estado. No se intenta la sincronización de estado si el nodo
# tiene algún estado local (LastBlockHeight > 0). El nodo tendrá un historial de bloques truncado,
# comenzando desde la altura de la instantánea.
enable = true
# Servidores RPC (separados por comas separados) para verificación del cliente ligero de la máquina de estado sincronizado y
# recuperación de datos de estado para el arranque del nodo. También se necesita una altura de confianza y un hash de encabezado correspondientes obtenidos de una fuente segura, y un período durante el cual los validadores pueden ser confiados.
#
# Para cadenas basadas en Cosmos SDK, el período_trust debe ser generalmente alrededor de 2/3 del periodo de desbloqueo (~2
# semanas) durante el cual pueden ser castigados financieramente (recorte) por mal comportamiento.
servidores_rpc = ""
altura_confianza = 0
hash_confianza = ""
período_confianza = "168h0m0s"
Inicie crossfid para comenzar la sincronización de estado. Puede llevar algún tiempo que el nodo adquiera una instantánea, pero el comando y el resultado deberían verse similares al siguiente:
$ crossfid start --x-crisis-skip-assert-invariants
...
> INF Se descubrió un nuevo formato de instantánea=1 hash="0x000..." altura=8967000 módulo=estado_sincronización
...
> INF Recuperando fragmento de instantánea fragmento=4 formato=1 altura=8967000 módulo=estado_sincronización total=45
> INF Fragmento de instantánea aplicado a aplicación ABCI fragmento=0 formato=1 altura=8967000 módulo=estado_sincronización total=45
Una vez que la sincronización de estado se completa exitosamente, el nodo comenzará a procesar bloques normalmente. Si la sincronización de estado falla y el operador del nodo encuentra el siguiente error: Sincronización de estado fallida err="sincronización de estado abortada"
, intente reiniciando crossfid
o ejecutando crossfid unsafe-reset-all
(asegúrese de hacer una copia de seguridad de cualquier configuración e historial antes de hacer esto).
Quicksync
Quicksync.io ofrece varias instantáneas diarias de la Cadena Crossfi con diferentes niveles de poda (archivo
1.4TB, predeterminado
540GB y podado
265GB). Para descargas e instrucciones de instalación, visite la guía Quicksync de Cosmos.
Instantáneas
Guardar y servir instantáneas ayuda a los nodos a unirse rápidamente a la red. Las instantáneas ahora están habilitadas por defecto efectivo 1/20/21
.
Aunque no se recomienda, si un operador de nodo necesita personalizar esta función, puede configurarse en ~/.crossfid/config/app.toml
. La Cadena Crossfi recomienda establecer este valor para coincidir con pruning-keep-every
en config.toml
.
Se recomienda encarecidamente que los operadores de nodos utilicen el mismo valor para el intervalo de instantánea para ayudar en el descubrimiento de instantáneas. El descubrimiento es más fácil cuando más nodos están sirviendo las mismas instantáneas.
En app.toml
###############################################################################
### Configuración de Sincronización de Estado ###
###############################################################################
# Las instantáneas de sincronización de estado permiten a otros nodos unirse rápidamente a la red sin reproducir los bloques históricos,
# en su lugar descargando y aplicando una instantánea del estado de la aplicación en una altura determinada.
[sincronización-estado]
# intervalo-instantánea especifica el intervalo de bloques en el que las instantáneas de sincronización de estado son tomadas para le estado local.
# (0 para deshabilitar). Debe ser un múltiplo de poda-mantener-cada.
intervalo-instantánea = 1000
# mantener-instantáneas-recientes especifica la cantidad de instantáneas recientes a mantener y servir (0 para mantener todas).
mantener-instantáneas-recientes = 10
Cosmovisor
Cosmovisor es un gestor de procesos desarrollado para liberarnos de tener que intervenir manualmente cada vez que hay una actualización. Cosmovisor supervisa el módulo de gobernanza en busca de propuestas de actualización; se encargará de descargar el nuevo binario, detener el antiguo, cambiar al nuevo y reiniciar.
Para más información sobre cómo ejecutar un nodo a través de Cosmovisor, consulte los documentos.
Ejecución a través de un Proceso de Fondo
Para ejecutar el nodo en un proceso de fondo con reinicios automáticos, se recomienda usar un gestor de servicios como systemd
. Para configurar esto, ejecute lo siguiente:
sudo tee /etc/systemd/system/.service > /dev/null <
Luego inicie el proceso y confirme que está en ejecución.
sudo -S systemctl start
sudo servicio estado
Exportación de Estado
crossfid puede volcar todo el estado de la aplicación a un archivo JSON. Este volcado de estado de la aplicación es útil para el análisis manual y también puede utilizarse como el archivo génesis de una nueva red.
El nodo no puede estar en ejecución mientras se exporta el estado, de lo contrario, el operador puede esperar un error "recurso temporalmente no disponible".
Exportar estado con:
crossfid export > [nombre de archivo].json
También es posible exportar el estado desde una altura particular (al final del procesamiento del bloque de esa altura):
crossfid export --altura [altura] > [nombre de archivo].json
Si planea iniciar una nueva red desde el estado exportado, exporte con el flag --para-altura-cero
:
crossfid export --altura [altura] --para-altura-cero > [nombre de archivo].json
Verificar Red
Ejecutar invarianzas en cada bloque es una mejor práctica para la prevención de desastres. Esto asegura que el operador del nodo mantenga el estado correcto y esperado de la red.
Aunque esto es importante para la operación de un nodo, las comprobaciones invariantes no están habilitadas por defecto porque son computacionalmente costosas. Para ejecutar un nodo con estas comprobaciones, inicie su nodo con el flag de assert-invariants-blockly:
crossfid start --assert-invariants-blockly
Si una invarianza se rompe en el nodo, entrará en pánico y le pedirá al operador que envíe una transacción que detendrá la red. Por ejemplo, el mensaje proporcionado puede parecer:
invariante roto:
invariancia de token suelto:
pool.NotBondedTokens: 100
suma de tokens de cuenta: 101
CRÍTICO por favor envíe la siguiente transacción:
crossfid tx crisis invariante-roto staking supply
Si desea ejecutar su propio nodo validador, consulte la sección sobre Validadores.