Pregunta 4

index: batch db writes during initial sync by furszy · Pull Reques...

arejula27 19/05/2026 22:39
Pregunta 4-> Antes de este cambio, NextSyncBlock se llamaba en cada iteración del bucle, adquiriendo cs_main por cada bloque. El hilo de validación también necesita cs_main para procesar bloques. ¿Qué impacto tiene esto durante IBD? ¿Cómo lo mejora la nueva ventana de bloques, y qué trade-offs conlleva?
27/05/2026 17:55
lets go
Pol Espinasa 27/05/2026 17:56
Hace que no puedas procesar y escribir bloques a la vez lo cual es lento
27/05/2026 17:56

Trade-off:

  • Se usa mas memoria
  • Si el proceso falla en un bloque pierdes el batch entero
👍🏻 2
> 27/05/2026 17:56
Interrumpes IBD en varias ocasiones
27/05/2026 17:57
La nueva NextSyncRange calcula de una vez el rango completo [first, last] dentro del mismo lock, reduciendo las adquisiciones de cs_main
👍 2
Pol Espinasa 27/05/2026 17:57
lo unico que me lia es porque invertimos el orden en ProcessBlocks?
27/05/2026 17:58
hay un loop que gira el orden, y luego otro que lo vuelva al orden original
27/05/2026 17:58
en 0336c61aacf01a503f75a8e35d6bec9954ea6840 creo que era
furszy 27/05/2026 17:59
lo dejo a arejula, si no respondo yo 🙂
arejula27 27/05/2026 17:59
responde tu mjr😅
🤣 1 😅 1
Pol Espinasa 27/05/2026 17:59
he ido a pillar 😛
furszy 27/05/2026 18:00
El proceso actual es sequencial
27/05/2026 18:00
por ende, va ordenado incrementalmente
27/05/2026 18:00
hay indexes, que fueron construidos en base a dicho flujo
27/05/2026 18:01
por ejemplo, el BlockfilterIndex, genera la cadena de block filter headers, la cual necesita el bloque previo para crear el siguiente
arejula27 27/05/2026 18:02
dirias que es por tener los datos mas facil a la hora de hacer el indice?
27/05/2026 18:02
por como estan hechos las estructuras de datos?
27/05/2026 18:03
dicho de otro modo, a la blockchain no la podes acceder incrementalmente. Porque no existing forward pointers. Lo que tenes es que cada bloque tiene el puntero del bloque anterior
👍 1
Pol Espinasa 27/05/2026 18:04
vale tiene sentido
furszy 27/05/2026 18:04
por ende, primero se recorre del último bloque al primero. Y luego se invierte para que el index lo reciba sequencialmente
👍🏻 2
Pol Espinasa 27/05/2026 18:05
no sabia que manteniamos este orden en los punteros tambien 🙂
27/05/2026 18:05
makes sense
furszy 27/05/2026 18:05
pensa que cada bloque tiene el hash de su predecesor
27/05/2026 18:05
pero puede tener más de un bloque siguiente (fork)
arejula27 27/05/2026 18:05
.exacto, el bloque 100 solo conoce al 99
Pol Espinasa 27/05/2026 18:05
si a nivel de blockchain si, no sabia que en memoria lo organizabamos igual 🙂
👍 1
arejula27 27/05/2026 18:06
recorremos el batch desde el mas grande y hacemos el indice en orden real/historico
👍 1
27/05/2026 18:06
seguimos?
👍 3
furszy 27/05/2026 18:06
en el siguiente PR, el de paralelización, se mejora esto
👀 2 🔥 2