Documentación

Registry y Resolver

El diseño de dos contratos es la columna vertebral de EnergyAS. Entender cómo interactúan el Registry y el Resolver es esencial para trabajar con el protocolo.

EnergyRegistry

El registry es el contrato de estado permanente. Almacena todos los watchers, proyectos, atestadores, acumuladores de energía y bloqueos de período. Nunca se reemplaza ni se migra.

Responsabilidades

FunciónDescripción
Gestión de watchersRegistro y transferencia de propiedad
Gestión de proyectosRegistro, baja y transferencia entre watchers
Gestión de atestadoresLista blanca por proyecto y para todo el watcher
Bloqueo de períodosEvita atestaciones duplicadas para la misma ventana de tiempo
Cadena lineal obligatoriaGarantiza que las atestaciones formen una línea de tiempo continua por proyecto
Acumuladores de energíaTotales acumulados por proyecto y por watcher
Autorización de resolversControla qué resolvers pueden escribir en el registry
Registro de tipos de energíaRegistro on-chain de tipos de fuente de energía válidos
Seguimiento de reemplazosRastrea las cadenas de corrección entre atestaciones

EnergyAttestationResolver

El resolver es una capa de validación sin estado. Implementa la interfaz de resolver de EAS y EAS lo invoca automáticamente en cada intento de atestación y revocación.

Responsabilidades

FunciónDescripción
Decodificación de datosDecodifica los datos de la atestación codificados en ABI (7 campos)
Validación estructuralVerifica readingCount, el intervalo, la longitud del arreglo de lecturas y method
Verificación de permisosComprueba que el atestador esté en la lista blanca del proyecto o del watcher
Cálculo de valores derivadosCalcula toTimestamp y el energyWh total a partir de las lecturas
Validación de reemplazosVerifica que las atestaciones de reemplazo coincidan con el proyecto y el período del original
Delegación al registryLlama a recordAttestation() o recordReplacement() en el registry
Bloqueo de revocacionesRechaza las revocaciones directas para preservar la pista de auditoría

Cómo interactúan

El resolver lee del registry (para comprobar el estado del proyecto, la autorización del atestador, etc.) y escribe en él (para registrar atestaciones y reemplazos). El registry solo acepta escrituras de resolvers autorizados.

Registry.authorizeResolver(resolverAddress)
  → Resolver can now call registry.recordAttestation()
  → Resolver can now call registry.recordReplacement()

Registry.deauthorizeResolver(resolverAddress)
  → Resolver can no longer write to registry
Nota

Pueden autorizarse varios resolvers al mismo tiempo. Esto permite migraciones sin tiempo de inactividad, en las que el resolver antiguo y el nuevo funcionan en paralelo durante un período de transición.