Pular para o conteúdo principal

Junte-se a uma Rede

Instruções para inicializar um nó usando State Sync.

Para instruções sobre como ingressar como validador, consulte também o Guia do Validador.

Começando​

Certifique-se de que os seguintes pré-requisitos estejam concluídos:

  • Escolha a configuração adequada de hardware/servidor. Consulte o guia de hardware.
  • Certifique-se de que o crossfid esteja instalado corretamente. Consulte o guia de instalação para um passo a passo.
  • Siga o guia de configuração para inicializar e preparar o nó para sincronizar com a rede.

Escolhendo uma Rede​

As redes CrossFi atuais são:

Testnet​

crossfi-evm-testnet-1.

Mainnet​

crossfi-mainnet-1.


Exploradores​

Exploradores da Testnet​

Exploradores da Mainnet​

Explorador das camadas de Execução/Consenço - https://xfiscan.com/


Hardware​

Executar um nó de arquivamento completo pode ser intensivo em recursos, pois o nó atual completo crossfi-1 pode ter mais de 1 TB. Para quem desejar usar state sync ou quicksync, a configuração de hardware a seguir é recomendada:

Tipo de NóRAMArmazenamentoValidador32GB500GB-2TB*

* O tamanho de armazenamento para validadores dependerá do nível de poda.


Configuração Geral​

Certifique-se de percorrer a configuração básica. Os operadores precisarão inicializar o crossfid, baixar o arquivo genesis para o crossfi-1 e configurar peers persistentes e/ou seeds para a inicialização.

Iniciar Cadeia​

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

Seeds & Peers​

Ao iniciar, o nó precisará se conectar aos pares. Se houver nós específicos que o operador do nó deseja definir como sementes ou como pares persistentes, isso pode ser configurado em ~/.crossfid/config/config.toml


# Comma separated list of seed nodes to connect to
seeds = "@:26656,@:26656"

# Comma separated list of nodes to keep persistent connections to
persistent_peers = "@:26656,@:26656"

Podas de Estado - Etapa Opcional​

Existem quatro estratégias de poda do estado. Estas estratégias se aplicam apenas ao estado e não ao armazenamento de blocos. Um operador de nó pode considerar poda personalizada se o armazenamento do nó for uma preocupação ou se houver interesse em rodar um nó de arquivo.

Para configurar a poda, ajuste o parâmetro pruning no arquivo ~/.crossfid/config/app.toml. As seguintes configurações de estado de poda estão disponíveis:

  1. everything: Poda todos os estados salvos, exceto o estado atual.
  2. nothing: Salvar todos os estados e não excluir nada.
  3. default: Salvar os últimos 100 estados e o estado de cada 10,000º bloco.
  4. custom: Especificar configurações de poda com os parâmetros pruning-keep-recent, pruning-keep-every, e pruning-interval.

Por padrão, cada nó está no modo default, que é a configuração recomendada para a maioria dos ambientes. Se o operador do nó quiser alterar a estratégia de poda do nó, isso deve ser feito antes de o nó ser inicializado.

Em ~/.crossfid/config/app.toml


# padrão: os últimos 100 estados são mantidos além de cada 500º estado; poda a cada 10 blocos

# nada: todos os estados históricos serão salvos, nada será excluído (ou seja, nó de arquivamento)

# tudo: todos os estados salvos serão excluídos, armazenando apenas o estado atual; poda a cada 10 blocos

# personalizado: permita que as opções de poda sejam especificadas manualmente através de 'pruning-keep-recent', 'pruning-keep-every' e 'pruning-interval'
pruning = "custom"

# Estas são aplicadas se e somente se a estratégia de poda for personalizada.
pruning-keep-recent = "10"
pruning-keep-every = "1000"
pruning-interval = "10"

Ao iniciar o crossfid, passar uma bandeira (flag) irá sempre substituir as configurações do arquivo app.toml. Para alterar a configuração de poda do nó para o modo everything, passe a flag ---pruning everything ao executar crossfid start.

Se o nó estiver executando com estado podado, não será possível consultar alturas que não estejam no armazenamento do nó.


REST API - Opcional​

Por padrão, a REST API está desativada. Para habilitar a REST API, edite o arquivo ~/.crossfid/config/app.toml e defina enable como true na seção [api].


###############################################################################

### Configuração da API ###

###############################################################################
[api]

# Habilitar define se o servidor de API deve ficar habilitado.
enable = true

# Swagger define se a documentação do swagger deve ser registrada automaticamente.
swagger = false

# Endereço define qual servidor da API deve escutar.
address = "tcp://0.0.0.0:1317"

Opcionalmente ative o swagger definindo swagger como true ou altere a porta da REST API no parâmetro address. Após reiniciar o aplicativo, acesse a REST API em :1317.


GRPC - Opcional​

Por padrão, o gRPC está habilitado na porta 9090. O arquivo ~/.crossfid/config/app.toml é onde as alterações podem ser feitas na seção do gRPC. Para desativar o endpoint gRPC, defina enable como false. Para alterar a porta, use o parâmetro address.


###############################################################################

### Configuração do gRPC ###

###############################################################################
[grpc]

# Habilitar define se o servidor gRPC deve ficar habilitado.
enable = true

# Endereço define o endereço do servidor gRPC para vincular.
address = "0.0.0.0:9090"

Sincronização - Opções​

Existem três modos principais de sincronizar um nó na Crossfi Chain; Blocksync, State Sync e Quicksync. Veja a matriz abaixo para a configuração recomendada pelo Hub. Este guia se concentrará em sincronizar dois tipos de nós comuns; completo e podado. Para mais informações sobre a sincronização para rodar um nó de validador, consulte a seção Validators.

Existem dois tipos de preocupações ao decidir qual opção de sincronização é a certa. Integridade dos dados refere-se a quão confiáveis são os dados fornecidos por um subconjunto de participantes da rede. Dados históricos refere-se a quão robusto e inclusivo é o histórico da cadeia.

Baixa Integridade de DadosAlta Integridade de Dados
Histórico de Dados MínimoQuicksync - PodadoState Sync
Histórico de Dados ModeradoQuicksync - Padrão
Histórico de Dados CompletoQuicksync - ArquivoBlocksync

Certifique-se de consultar a seção hardware para orientação sobre a melhor configuração para o tipo de nó em operação.


Blocksync​

Blocksync é mais rápido que o consenso tradicional e sincroniza a cadeia desde o gênesis, baixando blocos e verificando com a árvore Merkle dos validadores. Para mais informações, consulte a documentação do Tendermint sobre FastSync (FastSync Docs).

Ao sincronizar via Blocksync, os operadores do nó precisarão atualizar manualmente a cadeia ou configurar Cosmovisor (join-a-network.md#cosmovisor) para atualizar automaticamente.

É possível sincronizar a partir de versões anteriores da Crossfi Chain. Consulte a matriz abaixo para a versão correta do crossfid. Consulte o arquivo do testnet para genesis históricos.

ID da CadeiaVersão do Crossfi
crossfi-evm-testnet-1v0.2.0

Getting Started

Inicie o crossfid para começar a sincronizar com a bandeira skip-invariants. Para mais informações sobre isso, consulte Verificar rede.

crossfid start --x-crisis-skip-assert-invariants

State Sync​

State Sync é uma forma eficiente e rápida de inicializar um novo nó, e funciona reproduzindo grandes blocos de estado da aplicação diretamente, em vez de reproduzir blocos individuais ou rodadas de consenso. Para mais informações, consulte a documentação do Tendermint sobre State Sync (docs).

Para habilitar state sync, visite um explorador para obter uma altura de bloco recente e o hash correspondente. Um operador de nó pode escolher qualquer altura/hash no período atual de bonding, mas como o período recomendado de snapshot é de 1000 blocos, é aconselhável escolher algo próximo de altura atual - 1000.

Com a altura do bloco e o hash selecionados, atualize a configuração em ~/.crossfid/config/config.toml para definir enable = true e preencha trust_height e trust_hash. Os operadores do nó podem configurar os servidores RPC para um provedor de preferência, mas deve haver pelo menos duas entradas. É importante que estas sejam dois servidores RPC em que o operador do nó confia para verificar componentes do estado da cadeia. Embora não seja recomendado, a unicidade não é atualmente exigida, então é possível duplicar o mesmo servidor na lista e ainda assim sincronizar com sucesso.

No futuro, a exigência de servidores RPC será descontinuada, pois o state sync será movido para a camada p2p no Tendermint 0.38 (link: https //github.com/tendermint/tendermint/issues/6491).

#######################################################

### State Sync Configuration Options ###

#######################################################
[statesync]

# State sync snapshots allow other nodes to rapidly join the network without replaying historical

# blocks, instead downloading and applying a snapshot of the application state at a given height.
[state-sync]

# snapshot-interval specifies the block interval at which local state sync snapshots are

# taken (0 to disable). Must be a multiple of pruning-keep-every.
snapshot-interval = 1000

# snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all).
snapshot-keep-recent = 10

Inicie o crossfid para começar a sincronização do estado. Pode levar algum tempo para o nó obter um instantâneo, mas o comando e a saída deverão ser semelhantes ao seguinte:

Inicie o crossfid para começar o state sync. Pode levar algum tempo para o nó obter uma snapshot, mas o comando e a saída devem se parecer com o seguinte:

$ crossfid start --x-crisis-skip-assert-invariants...> INF Discovered new snapshot format=1 hash="0x000..." height=8967000 module=statesync...> INF Fetching snapshot chunk chunk=4 format=1 height=8967000 module=statesync total=45 > INF Applied snapshot chunk to ABCI app chunk=0 format=1 height=8967000 module=statesync total=45

Once state sync successfully completes, the node will begin to process blocks normally. If state sync fails and the node operator encounters the following error: State sync failed err="state sync aborted", either try restarting crossfid or running crossfid unsafe-reset-all (make sure to backup any configuration and history before doing this).​

Quicksync


Quicksync.io oferece vários snapshots diários da Crossfi Chain com diferentes níveis de poda (archive 1.4TB, default 540GB e pruned 265GB). Para download e instruções de instalação, consulte o guia Cosmo Quicksync.​

Snapshots

Salvar e servir snapshots ajuda os nós a ingressarem rapidamente na rede. Snapshots já estão habilitadas por padrão a partir de 1/20/21.

Embora não seja aconselhável, se um operador de nó precisar personalizar esse recurso, ele pode ser configurado em ~/.crossfid/config/app.toml. A Chain Crossfi recomenda definir esse valor para corresponder a pruning-keep-every em config.toml.

É altamente recomendado que os operadores de nó usem o mesmo valor para snapshot-interval a fim de facilitar a descoberta de snapshots. A descoberta é mais fácil quando mais nós estão servindo os mesmos snapshots.


###############################################################################

### State Sync Configuration ###

###############################################################################

# State sync snapshots allow other nodes to rapidly join the network without replaying historical

# blocks, instead downloading and applying a snapshot of the application state at a given height.
[state-sync]

# snapshot-interval specifies the block interval at which local state sync snapshots are

# taken (0 to disable). Must be a multiple of pruning-keep-every.
snapshot-interval = 1000

# snapshot-keep-recent specifies the number of recent snapshots to keep and serve (0 to keep all).
snapshot-keep-recent = 10

Cosmovisor​

Cosmovisor é um gerenciador de processos desenvolvido para liberar os operadores de nós de ter que intervir manualmente sempre que há uma atualização. O Cosmovisor monitora o módulo de governança para propostas de upgrade; ele cuidará de baixar o novo binário, parar o antigo, mudar para o novo e reiniciar.

Para mais informações sobre como rodar um nó via Cosmovisor, consulte os docs.

Executando como Processo em Segundo Plano​

Para rodar o nó em segundo plano com reinicializações automáticas, é recomendado usar um gerenciador de serviços como o systemd. Para configurar, execute o seguinte:

sudo tee /etc/systemd/system/.service > /dev/null <

Em seguida, inicie o processo e confirme que ele está em execução.

sudo -S systemctl start

sudo service status


Exportando Estado​

O crossfid pode despejar todo o estado da aplicação em um arquivo JSON. Esse despejo de estado é útil para análise manual e pode também ser usado como arquivo genesis de uma nova rede.

O nó não pode estar em execução enquanto exporta o estado, caso contrário o operador pode esperar um erro resource temporarily unavailable.

Exportar estado com:

crossfid export > [filename].json

Também é possível exportar o estado de uma altura específica (ao final do processamento do bloco daquela altura):

crossfid export --height [height] > [filename].json

Se for planeado iniciar uma nova rede a partir do estado exportado, exporte com a flag --for-zero-height:

crossfid export --height [height] --for-zero-height > [filename].json

Verificar Rede​

Executar invariants em cada bloco é uma prática recomendada para prevenção de desastres. Isso garante que o operador do nó mantenha o estado correto e esperado da rede.

Embora isso seja importante para a operação de um nó, verificações de invariants não são habilitadas por padrão porque são computacionalmente caras. Para rodar um nó com essas checagens, inicie seu nó com a flag assert-invariants-blockly.

crossfid start --assert-invariants-blockly

Se um invariants for quebrado no nó, ele entrará em panic e solicitará que o operador envie uma transação que interromperá a rede. Por exemplo, a mensagem fornecida pode parecer:

invariant broken:
loose token invariance:
pool.NotBondedTokens: 100
sum of account tokens: 101
CRITICAL please submit the following transaction:
crossfid tx crisis invariant-broken staking supply

Se você quiser rodar seu próprio nó validador, consulte a seção sobre Validators.