Quando um novo nó se junta à rede Spacemesh, ele deve primeiro se atualizar com o restante de seus pares. Este processo é conhecido como "sincronização" e é um pré-requisito para executar um nó completo ou smeshing. Historicamente, tem sido difícil para os smeshers sincronizar com sucesso seus nós devido ao quão demorado é o processo de sincronização. Principalmente, a sincronização inclui o download e a verificação independente de todos os blocos, transações, ATXs, juntamente com alguns outros dados, e a reconstrução do estado atual do zero. Naturalmente, isso levava muito tempo para o smesher médio. Como tal, em resposta à crescente dificuldade de sincronizar um novo nó, preparamos uma forma de acelerar o processo de sincronização. Apresentando, Quicksync.
Com o Quicksync, em vez de executar todas as ações de sincronização conforme indicado acima e calcular o estado da rede desde a gênese, basta baixar o estado atual de um ponto confiável, como a equipe de desenvolvimento do Spacemesh ou algum outro nó. Embora isso seja contrário à filosofia da web3 de "Não confie, verifique", acreditamos que esta pode ser uma escolha na qual alguns smeshers podem estar interessados, dada a alta taxa de problemas com a sincronização. Além disso, nada impede que um smesher verifique esse estado em segundo plano depois de baixado.
O estado (também chamado de arquivo) baixado está na forma de um arquivo state.sql e pode ser baixado automaticamente usando o Smapp ou manualmente usando o utilitário quicksync-rs .
As instruções para usar quicksync-rs para baixar o estado mais recente são fornecidas abaixo. Observe que se você usar a versão mais recente do Smapp, ele oferecerá automaticamente o uso do quicksync para buscar o estado mais recente.
quicksync-windows-vX.XXzip na seção de lançamentos do GitHub.quicksync.exe do arquivo zip baixado na etapa 1.quicksync.exe para sua pasta spacemesh . Por padrão, esta pasta está localizada em: C:Users{USERNAME}spacemesh .state.sql na pasta de dados do nó (localizada dentro do diretório spacemesh e denominada node-data por padrão), exclua-o. Caso contrário, continue para a etapa 5.spacemesh onde está o arquivo quicksync.exe . Você pode fazer isso segurando a tecla “shift”, clicando com o botão direito e selecionando a opção “Abrir Powershell aqui”..quicksync.exe --help e pressione Enter. Isso mostrará as opções disponíveis..quicksync.exe download --node-data .node-data . Aqui, .node-data é o caminho para a pasta de dados do nó.quicksync-rs irá baixar, descompactar e verificar o estado do download.state.sql mais recente. quicksync-linux-vX.XXzip na seção de lançamentos do GitHub.quicksync do arquivo zip baixado na etapa 1.quicksync executável usando este comando CLI: chmod +x quicksync . Agora você tem o executável quicksync .quicksync para o diretório spacemesh (localizado em ~/spacemesh por padrão).state.sql na pasta de dados do nó (localizada dentro do diretório spacemesh e denominada node-data por padrão), exclua-o. Caso contrário, continue para a etapa 6.spacemesh onde está o executável quicksync e execute este comando: ./quicksync download --node-data ./node-data . Aqui, ./node-data é o caminho para a pasta de dados do nó.quicksync-rs irá baixar, descompactar e verificar o estado do download.state.sql mais recente. quicksync-macos-vX.XXzip (ou quicksync-macos-arm64-vX.XXzip se você tiver um Mac da série M) na seção de lançamentos do GitHub.quicksync do arquivo zip baixado na etapa 1.quicksync executável usando este comando CLI: chmod +x quicksync . Agora você tem o executável quicksync .quicksync para o diretório spacemesh . (localizado em ~/spacemesh por padrão).state.sql na pasta de dados do nó (localizada dentro do diretório spacemesh e denominada node-data por padrão), exclua-o. Caso contrário, continue para a etapa 6.spacemesh onde está o executável quicksync e execute este comando: ./quicksync download --node-data ./node-data . Aqui, ./node-data é o caminho para a pasta de dados do nó.quicksync-rs irá baixar, descompactar e verificar o estado do download.state.sql mais recente. Listados abaixo estão os códigos de saída e o que eles significam:
0 - Tudo bem.1 - Falha ao baixar o arquivo no máximo de tentativas (por qualquer motivo).2 - Não é possível descompactar o arquivo: espaço em disco insuficiente.3 - Não é possível descompactar o arquivo: qualquer outro motivo.4 - Checksum inválido do state.sql baixado.5 - Não é possível verificar o checksum por algum motivo.6 - Não é possível criar um arquivo de backup.7 - Checksum de arquivo inválido.8 - Não é possível validar a soma de verificação do arquivo. Também é possível baixar e aplicar o quicksync baseado em delta. Supondo que state.sql já esteja presente, vale a pena considerar aplicar apenas deltas além disso. Observe que a sincronização de grandes partes será mais rápida com o quicksync completo, mas se você já estiver sincronizado e precisar apenas atualizar o estado mais recente, o incrementa quicksync é a melhor opção.
O quicksync incremental funciona verificando a camada verificada mais recente no banco de dados e, em seguida, baixando arquivos pequenos (geralmente cerca de 50 MB, mas até 200 MB) e aplicando-os sobre o state.sql existente. Cada lote pode ser interrompido.
Restaurar o mesmo lote duas vezes é considerado autônomo e não afetará o banco de dados.
A lista de comandos disponíveis para o utilitário quicksync é apresentada abaixo. Observe que esses comandos são para Linux. Simplesmente, altere ./quicksync para .quicksync.exe para os comandos do Windows.
./quicksync download : baixa o arquivo state.sql mais recente../quicksync check : verifica se o state.sql atual está atualizado../quicksync help : Exibe todas as operações que quicksync pode realizar../quicksync incremental : Permite trabalhar com quicksync baseado em delta../quicksync --version : Exibe a versão do quicksync.cargo run -- help : Exibe comandos úteis para executar o pacote. Relevante para desenvolvedores.