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.