Tres almacenes
Bloque confirmado
Almacén del libro mayortransacciones · salidas · eventos · escrituras · acumuladores · metadatos
Reejecución y auditoría
Almacén KV de estadovalores actuales e históricos, dieciséis fragmentos, estado caliente en su nivel
Consultas y ejecución
Almacén Merkle de estadoun árbol Merkle disperso versionado y los índices de nodos reemplazados
Verificación — pruebas
Una lectura que solo necesita un valor no paga recorrer el árbol, y una prueba no se reconstruye desde un almacén optimizado para consultas puntuales.
Autenticación
Dos estructuras de Merkle hacen trabajos distintos.Árbol Merkle disperso versionado
Acumuladores
Tu clave y su valor
hash hermano
hash hermano
Raíz de estado, confirmada por consenso
Tu transacción, o un evento
Acumulador de transacciones · de eventoscada uno fija todo lo incluido hasta ahí, y su orden
Raíz del libro mayor, confirmada por consenso
El árbol prueba cuál era un valor; los acumuladores prueban qué ocurrió y en qué orden. Juntos hacen demostrable “esta transacción está en la cadena en esta posición” sin guardar la cadena.
Estado especulativo
Los resultados de un bloque existen antes de confirmarse. En lugar de escribirlos en el árbol duradero y deshacerlo si el bloque no se confirma, el estado sin confirmar se mantiene en una capa Merkle dispersa en memoria sobre la última versión confirmada. La ejecución lee a través de esa capa y ve una vista consistente. Si el bloque se confirma, la capa se materializa. Si no, la capa se descarta y nunca se tocó nada duradero. Esto es lo que impide que la ejecución especulativa deje restos en el almacenamiento.Cachés
Los nodos del árbol se cachean en dos niveles: una caché consciente de las versiones, que mantiene direccionables las versiones recientes, y una caché LRU por debajo. El patrón de acceso de una cadena de trading (un conjunto pequeño de claves calientes que se tocan en cada bloque, frente a una larga cola que se toca rara vez) es exactamente la forma para la que sirven.Poda
Conservar todas las versiones para siempre es una elección, no un requisito. Tres podadores independientes se ejecutan sobre los tres almacenes, cada uno con su propia política de retención: uno sobre el libro mayor, uno sobre los valores de estado y otro sobre los nodos Merkle. Los podadores de Merkle y de valores de estado se guían por índices de obsolescencia que se escriben al mismo tiempo que los datos. Cuando una versión reemplaza un nodo o un valor, la entrada reemplazada se registra como obsoleta en esa versión. La poda es entonces un recorrido por rangos sobre un índice y no una búsqueda de basura: quien escribió ya dijo qué iba a ser recolectable y cuándo.La retención es una decisión del operador con consecuencias reales. Un nodo podado de forma agresiva sirve el estado actual con eficiencia y no puede responder consultas históricas ni servir sincronización de estado a un nodo que arranque desde más atrás. Un nodo de archivo lo guarda todo y lo paga. Consulta Ejecutar un nodo.
Copias de seguridad y restauración
Los almacenes se pueden respaldar y restaurar de forma independiente del nodo en ejecución, que es lo que hace posible levantar un nodo desde una instantánea en lugar de reejecutar desde el génesis, y verificar el estado de un nodo restaurado contra las raíces confirmadas en lugar de confiar en la copia.Qué leer a continuación
Sincronización de estado
Cómo se pone al día un nodo con la cadena sin reejecutarla entera.
Modelo de estado
Qué se está almacenando y qué representación tiene la autoridad.
Indexador
Reconstruir el historial a partir de registros confirmados.
Ejecutar un nodo
Los roles de nodo y cómo solicitar información para operar uno.