Documentación

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

ErrorCausa común
UnauthorizedAttesterLa wallet firmante no está en la lista de autorizados para este proyecto o watcher
PeriodAlreadyAttestedEsta ventana de tiempo ya fue atestada: usa un reemplazo para corregirla
PeriodStartAlreadyAttestedOtra atestación ya comienza en este fromTimestamp
NonSequentialAttestationEl fromTimestamp de la atestación no coincide con el último toTimestamp del proyecto
InvalidReadingsLengthLa longitud del arreglo readings no coincide con readingCount
TimestampOverflowEl toTimestamp derivado supera el valor máximo de uint64
ProjectNotRegisteredEl ID del proyecto no existe o fue dado de baja
InvalidEnergyTypeEl ID del tipo de energía no está registrado (solo generadores)
DirectRevocationBlockedNo se permiten revocaciones directas: usa atestaciones de reemplazo
ReplacementPeriodMismatchLa atestación de reemplazo debe cubrir el mismo período de tiempo que la original
ReplacementProjectMismatchLa atestación de reemplazo debe referenciar el mismo proyecto que la original
AttestationNotFoundEl UID de atestación referenciado no existe en el registro
AttestationAlreadyReplacedLa atestación ya fue reemplazada por otra atestación