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
- Explorador de blocos - https://test.xfiscan.com/blocks
- Explorador de camadas de Execução/Consenço - https://test.xfiscan.com/
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ó | RAM | Armazenamento | Validador | 32GB | 500GB-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:
everything: Poda todos os estados salvos, exceto o estado atual.nothing: Salvar todos os estados e não excluir nada.default: Salvar os últimos 100 estados e o estado de cada 10,000º bloco.custom: Especificar configurações de poda com os parâmetrospruning-keep-recent,pruning-keep-every, epruning-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 Dados | Alta Integridade de Dados | |
|---|---|---|
| Histórico de Dados Mínimo | Quicksync - Podado | State Sync |
| Histórico de Dados Moderado | Quicksync - Padrão | |
| Histórico de Dados Completo | Quicksync - Arquivo | Blocksync |
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 Cadeia | Versão do Crossfi |
|---|---|
crossfi-evm-testnet-1 | v0.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.