Cuando un nuevo nodo se une a la red Spacemesh, primero debe ponerse al día con el resto de sus pares. Este proceso se conoce como "sincronización" y es un requisito previo para ejecutar un nodo completo o de malla. Históricamente, a los smeshers les ha resultado difícil sincronizar con éxito sus nodos debido al tiempo que lleva el proceso de sincronización. Principalmente, la sincronización incluye descargar y verificar de forma independiente todos los bloques, transacciones, ATX, junto con algunos otros datos, y reconstruir el estado actual desde cero. Naturalmente, esto le llevó mucho tiempo al atacante promedio. Como tal, en respuesta a la creciente dificultad de sincronizar un nodo nuevo, hemos preparado una manera de acelerar el proceso de sincronización. Presentamos Quicksync.
Con Quicksync, en lugar de realizar todas las acciones de sincronización como se indicó anteriormente y calcular el estado de la red desde el origen, solo es necesario descargar el estado actual de un par confiable como el equipo de desarrollo de Spacemesh o algún otro nodo. Si bien esto va en contra de la filosofía web3 de "No confiar, verificar", creemos que esta podría ser una opción en la que algunos smeshers podrían estar interesados dada la alta tasa de problemas con la sincronización. Además, nada impide que un smesher verifique este estado en segundo plano una vez descargado.
El estado (también llamado archivo) que se descarga tiene la forma de un archivo state.sql y se puede descargar automáticamente usando Smapp o manualmente usando la utilidad quicksync-rs .
A continuación se proporcionan instrucciones para usar quicksync-rs para descargar el estado más reciente. Tenga en cuenta que si utiliza la última versión de Smapp, automáticamente le ofrecerá usar sincronización rápida para obtener el estado más reciente.
quicksync-windows-vX.XXzip desde la sección de versiones de GitHub.quicksync.exe del archivo zip descargado en el paso 1.quicksync.exe a su carpeta spacemesh . De forma predeterminada, esta carpeta se encuentra en: C:Users{USERNAME}spacemesh .state.sql en la carpeta de datos de su nodo (ubicado dentro del directorio spacemesh y llamado node-data de forma predeterminada), elimínelo. De lo contrario, continúe con el paso 5.spacemesh donde se encuentra el archivo quicksync.exe . Puede hacer esto manteniendo presionada la tecla "Mayús", haciendo clic derecho y seleccionando la opción "Abrir Powershell aquí"..quicksync.exe --help y presione Entrar. Esto le mostrará las opciones disponibles..quicksync.exe download --node-data .node-data . Aquí, .node-data es la ruta a la carpeta de datos del nodo.quicksync-rs descargará, descomprimirá y verificará el estado de descarga.state.sql más reciente. quicksync-linux-vX.XXzip desde la sección de versiones de GitHub.quicksync del archivo zip descargado en el paso 1.quicksync sea ejecutable mediante este comando CLI: chmod +x quicksync . Ahora tienes el ejecutable quicksync .quicksync al directorio spacemesh (ubicado en ~/spacemesh de forma predeterminada).state.sql en la carpeta de datos de su nodo (ubicado dentro del directorio spacemesh y llamado node-data de forma predeterminada), elimínelo. De lo contrario, continúe con el paso 6.spacemesh donde está el ejecutable quicksync y ejecute este comando: ./quicksync download --node-data ./node-data . Aquí, ./node-data es la ruta a la carpeta de datos del nodo.quicksync-rs descargará, descomprimirá y verificará el estado de descarga.state.sql más reciente. quicksync-macos-vX.XXzip (o quicksync-macos-arm64-vX.XXzip si tiene una Mac de la serie M) desde la sección de versiones de GitHub.quicksync del archivo zip descargado en el paso 1.quicksync sea ejecutable mediante este comando CLI: chmod +x quicksync . Ahora tienes el ejecutable quicksync .quicksync al directorio spacemesh . (ubicado en ~/spacemesh por defecto).state.sql en la carpeta de datos de su nodo (ubicado dentro del directorio spacemesh y llamado node-data de forma predeterminada), elimínelo. De lo contrario, continúe con el paso 6.spacemesh donde está el ejecutable quicksync y ejecute este comando: ./quicksync download --node-data ./node-data . Aquí, ./node-data es la ruta a la carpeta de datos del nodo.quicksync-rs descargará, descomprimirá y verificará el estado de descarga.state.sql más reciente. A continuación se enumeran los códigos de salida y su significado:
0 Todo bien.1 : no se pudo descargar el archivo dentro del número máximo de reintentos (cualquier motivo).2 - No se puede descomprimir el archivo: no hay suficiente espacio en disco.3 - No se puede descomprimir el archivo: cualquier otro motivo.4 - Suma de comprobación no válida del state.sql descargado.5 - No se puede verificar la suma de verificación por algún motivo.6 - No se puede crear un archivo de copia de seguridad.7 - Suma de comprobación del archivo no válida.8 : no se puede validar la suma de comprobación del archivo. También es posible descargar y aplicar sincronización rápida basada en delta. Suponiendo que state.sql ya está presente, vale la pena considerar aplicar solo deltas además de eso. Tenga en cuenta que la sincronización de partes grandes será más rápida con la sincronización rápida completa, pero si ya está sincronizado y solo necesita ponerse al día con el estado más reciente, la sincronización rápida incremental es el camino a seguir.
La sincronización rápida incremental funciona verificando la última capa verificada en la base de datos y luego descargando archivos pequeños (generalmente alrededor de 50 MB pero hasta 200 MB) y aplicándolos sobre el state.sql existente. Cada lote se puede interrumpir.
Restaurar el mismo lote dos veces se considera no operativo y no afectará a la base de datos.
La lista de comandos disponibles para la utilidad quicksync se presenta a continuación. Tenga en cuenta que estos comandos son para Linux. Simplemente, cambie ./quicksync a .quicksync.exe para los comandos de Windows.
./quicksync download : descarga el archivo state.sql más reciente../quicksync check : comprueba si el state.sql actual está actualizado../quicksync help : muestra todas las operaciones que quicksync puede realizar../quicksync incremental : permite trabajar con sincronización rápida basada en delta../quicksync --version : muestra la versión de sincronización rápida.cargo run -- help : muestra comandos útiles para ejecutar el paquete. Relevante para desarrolladores.