- Nueva estructura de carpetas según Skynet v7 - Añadidos schemas SQL completos - Documentación de entidades, componentes e integraciones - Modelo de seguridad actualizado - Infraestructura y operaciones reorganizadas
120 lines
3.5 KiB
Markdown
120 lines
3.5 KiB
Markdown
# Inmutabilidad
|
|
|
|
**Versión:** 1.0
|
|
**Estado:** Definición
|
|
|
|
---
|
|
|
|
## Principio
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ │
|
|
│ Los datos de entrada y salida nunca se modifican. │
|
|
│ La trazabilidad siempre es posible. │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Componentes Inmutables
|
|
|
|
| Componente | Mutabilidad | Eliminación |
|
|
|------------|-------------|-------------|
|
|
| Secretaría (Clara/Margaret) | **Inmutable** | Prohibida |
|
|
| Contable (Feldman) | **Inmutable** | Prohibida |
|
|
|
|
---
|
|
|
|
## Componentes Editables
|
|
|
|
| Componente | Mutabilidad | Eliminación |
|
|
|------------|-------------|-------------|
|
|
| Producción (Alfred/Jared) | Editable | Permitida |
|
|
| Administración (Mason) | Editable | Siempre (tras consolidar) |
|
|
|
|
---
|
|
|
|
## Cadena de Hashes
|
|
|
|
### Encadenamiento
|
|
|
|
```
|
|
Bloque 1 Bloque 2 Bloque 3
|
|
┌────────────┐ ┌────────────┐ ┌────────────┐
|
|
│h_bloque: A │──────►│hash_prev: A│──────►│hash_prev: B│
|
|
│content: X │ │h_bloque: B │ │h_bloque: C │
|
|
│ │ │content: Y │ │content: Z │
|
|
└────────────┘ └────────────┘ └────────────┘
|
|
```
|
|
|
|
### Verificación
|
|
|
|
```python
|
|
def verificar_cadena_completa():
|
|
bloques = obtener_todos_bloques_ordenados()
|
|
|
|
for i, bloque in enumerate(bloques):
|
|
# Verificar hash de contenido
|
|
if not verificar_integridad(bloque):
|
|
return False, f"Integridad fallida en bloque {i}"
|
|
|
|
# Verificar encadenamiento
|
|
if i > 0:
|
|
if bloque.hash_previo != bloques[i-1].h_bloque:
|
|
return False, f"Encadenamiento roto en bloque {i}"
|
|
|
|
return True, "Cadena válida"
|
|
```
|
|
|
|
---
|
|
|
|
## Reglas de Validación
|
|
|
|
| Regla | Nombre | Descripción |
|
|
|-------|--------|-------------|
|
|
| M-001 | Hash único | h_bloque no existe previamente |
|
|
| M-002 | Encadenamiento | hash_previo apunta a bloque existente |
|
|
| M-003 | Integridad | hash_contenido = SHA-256(contenido) |
|
|
|
|
---
|
|
|
|
## Trazabilidad
|
|
|
|
Cualquier registro en Feldman puede rastrearse hasta Secretaría:
|
|
|
|
```
|
|
Bloque (Feldman)
|
|
│
|
|
└── h_entrada ──► Contenedor (Secretaría)
|
|
│
|
|
├── timestamp
|
|
├── origen
|
|
├── usuario
|
|
└── archivos_hashes ──► R2
|
|
```
|
|
|
|
---
|
|
|
|
## Auditoría
|
|
|
|
Sentinel verifica periódicamente:
|
|
|
|
| Modo | Frecuencia | Verificación |
|
|
|------|------------|--------------|
|
|
| LIGHT | 5 min | Últimos bloques |
|
|
| DEEP | 1 hora | Cadena completa |
|
|
|
|
---
|
|
|
|
## Blockchain Ready
|
|
|
|
La estructura de bloques encadenados está preparada para:
|
|
|
|
- Publicación en blockchain (Polygon)
|
|
- Merkle tree para verificación
|
|
- Smart contracts para sellado
|
|
|
|
**Estado:** Preparado pero no implementado.
|