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 realizar todas as ações de sincronização conforme mencionado acima e calcular o estado da rede desde o 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.