Errores
Ambos contratos usan errores personalizados para que los reverts consuman menos gas. Esta referencia enumera todos los errores, sus parámetros y cuándo se lanzan.
Errores de EnergyRegistry
Solidity
error WatcherNotRegistered(uint64 watcherId);
error UnauthorizedWatcherOwner(address caller, uint64 watcherId);
error ProjectNotRegistered(uint64 projectId);
error AttesterAlreadyAuthorized(address attester, uint64 projectId);
error AttesterNotAuthorized(address attester, uint64 projectId);
error EmptyAttesterArray();
error UnauthorizedResolver(address caller);
error PeriodAlreadyAttested(uint64 projectId, uint64 fromTimestamp, uint64 toTimestamp);
error PeriodStartAlreadyAttested(uint64 projectId, uint64 fromTimestamp);
error NonSequentialAttestation(uint64 projectId, uint64 expectedFrom, uint64 actualFrom);
error InvalidEnergyType(uint8 energyType);
error UnauthorizedEnergyTypeAdmin(address caller);
error EnergyTypeNotRegistered(uint8 id);
error DirectRevocationBlocked(uint64 projectId);
error ReplacementPeriodMismatch(uint64 projectId, uint64 expectedFrom, uint64 actualFrom, uint64 expectedTo, uint64 actualTo);
error AttestationNotFound(bytes32 uid);
error AttestationAlreadyReplaced(bytes32 uid);Errores de EnergyAttestationResolver
Solidity
error UnauthorizedAttester(address attester);
error ProjectNotRegistered(uint64 projectId);
error InvalidTimestamps();
error InvalidReadingCount();
error InvalidReadingInterval();
error InvalidReadingsLength(uint32 readingCount, uint256 readingsLength);
error TimestampOverflow();
error InvalidMethod();
error ReplacementPeriodMismatch();
error ReplacementProjectMismatch();
error DirectRevocationBlocked();Causas comunes
| Error | Causa común |
|---|---|
| UnauthorizedAttester | La wallet firmante no está en la lista de autorizados para este proyecto o watcher |
| PeriodAlreadyAttested | Esta ventana de tiempo ya fue atestada: usa un reemplazo para corregirla |
| PeriodStartAlreadyAttested | Otra atestación ya comienza en este fromTimestamp |
| NonSequentialAttestation | El fromTimestamp de la atestación no coincide con el último toTimestamp del proyecto |
| InvalidReadingsLength | La longitud del arreglo readings no coincide con readingCount |
| TimestampOverflow | El toTimestamp derivado supera el valor máximo de uint64 |
| ProjectNotRegistered | El ID del proyecto no existe o fue dado de baja |
| InvalidEnergyType | El ID del tipo de energía no está registrado (solo generadores) |
| DirectRevocationBlocked | No se permiten revocaciones directas: usa atestaciones de reemplazo |
| ReplacementPeriodMismatch | La atestación de reemplazo debe cubrir el mismo período de tiempo que la original |
| ReplacementProjectMismatch | La atestación de reemplazo debe referenciar el mismo proyecto que la original |
| AttestationNotFound | El UID de atestación referenciado no existe en el registro |
| AttestationAlreadyReplaced | La atestación ya fue reemplazada por otra atestación |