¿Qué es la sincronización "ligera" de Geth y por qué es tan rápida?

Esta pregunta es similar a las preguntas anteriores sobre geth --fasty parity --warp.

Hubo una pregunta reciente en la que el OP quería hacer la menor sincronización posible, y una de las respuestas sugirió lo siguiente:

Prueba geth --light, disponible desde v1.5.2. Sincroniza en minutos si no segundos .

¿Cómo es esto posible? ¿Qué está sincronizando realmente?

Acabo de probar la recuperación de eventos de bloques históricos geth --lighty los resultados son un poco inestables: si los datos históricos no se han sincronizado, los resultados no aparecen. Una vez que se han sincronizado los datos históricos, los eventos se presentan como un nodo completo geth. Vea el enlace de la pregunta reciente.

Respuestas (1)

Haré mi tiro. Expertos, corríjanme por favor.

  • Sincronización "completa": obtiene los encabezados de los bloques, los cuerpos de los bloques y valida cada elemento del bloque de génesis.

  • Fast Sync: Obtiene los encabezados de los bloques, los cuerpos de los bloques, no procesa transacciones hasta current block - 64(*). Luego obtiene un estado de instantánea y va como una sincronización completa.

  • Light Sync: solo obtiene el estado actual. Para verificar elementos, debe solicitar a los nodos completos (archivar) las hojas de árbol correspondientes.

EDITAR (*) en la versión más nueva de geth es -64

fsMinFullBlocks        = 64              // Number of blocks to retrieve fully even in fast sync
Esta es una pregunta un poco relacionada: espero que su experiencia pueda aclarar mi malentendido aquí. Quiero construir un mapa de transacciones entre cuentas de Ethereum para construir una billetera. ¿"Rápido" deja algo de información o los datos de la cadena resultante son los mismos que con la sincronización completa?
@MikkoOhtamaa Si tiene otra pregunta, hágala haciendo clic en el botón Hacer pregunta . Este hilo es sobre el modo de luz .
@MikkoOhtamaa rápidamente obtiene los últimos intentos de estado, transacciones y recibos. Pero "pierde" el historial anterior debido al hecho de que su nodo no realizó las validaciones (es decir, ejecutó esas transacciones para tener esa información disponible). Por ejemplo, sabrá que su cuenta A tiene E ether, pero si se debió a un tx antiguo, no sabrá por qué tiene esos ether.
Entonces, si uso la versión ligera, ¿puedo hacer un token e implementar contratos usando eso?
@remedcu Andy Gray dice "Sí" aquí (en los comentarios)
¿Qué pasa con el chasquido? --syncmode Modo de sincronización de Blockchain ("rápido", "completo", "rápido" o "ligero") (predeterminado: rápido)