Documentación

API de EnergyRegistry

Referencia completa de funciones del contrato EnergyRegistry, la capa de estado permanente del protocolo.

Gestión de watchers

registerWatcher

Solidity
registerWatcher(string name) → uint64 watcherId

Registra un nuevo watcher. Quien llama pasa a ser el propietario. Totalmente sin permisos (permissionless): no requiere aprobación. Emite WatcherRegistered.

transferWatcherOwnership

Solidity
transferWatcherOwnership(uint64 watcherId, address newOwner)

Transfiere la propiedad de un watcher a una nueva dirección. Solo puede llamarla el propietario actual del watcher. Emite WatcherOwnershipTransferred.

getWatcher

Solidity
getWatcher(uint64 watcherId) → Watcher

Devuelve el struct Watcher (owner, registered, name).

isWatcherRegistered

Solidity
isWatcherRegistered(uint64 watcherId) → bool

getNextWatcherId

Solidity
getNextWatcherId() → uint64

Devuelve el próximo ID de watcher que se asignará.

Gestión de proyectos

registerProject

Solidity
registerProject(uint64 watcherId, string name, uint8 energyType) → uint64 projectId

Registra un nuevo proyecto bajo un watcher. El energyType determina el tipo de proyecto: 0 = consumidor (sin fuente de generación), 1–13+ = generador (fuente de energía específica). Solo puede llamarla el propietario del watcher. Emite ProjectRegistered.

deregisterProject

Solidity
deregisterProject(uint64 projectId)

Da de baja un proyecto. Bloquea nuevas atestaciones, pero conserva todos los datos históricos y los acumuladores. Emite ProjectDeregistered.

transferProject

Solidity
transferProject(uint64 projectId, uint64 toWatcherId)

Transfiere un proyecto a otro watcher. Migra los totales de energía acumulada. Debe llamarla el propietario del watcher de origen. Emite ProjectTransferred.

getProject

Solidity
getProject(uint64 projectId) → Project

Devuelve el struct Project (watcherId, registered, energyType, name).

getProjectType

Solidity
getProjectType(uint64 projectId) → uint8

Devuelve el tipo binario del proyecto: 0 = generador (energyType > 0), 1 = consumidor (energyType == 0).

getProjectEnergyType

Solidity
getProjectEnergyType(uint64 projectId) → uint8

Devuelve el ID del tipo de energía almacenado (0 para consumidor, 1–13+ para una fuente de generación específica).

isProjectRegistered

Solidity
isProjectRegistered(uint64 projectId) → bool

getWatcherProjects

Solidity
getWatcherProjects(uint64 watcherId) → uint64[]

Devuelve todos los IDs de proyecto de un watcher (incluidos los dados de baja).

setProjectMetadataURI

Solidity
setProjectMetadataURI(uint64 projectId, string uri)

Define o actualiza el URI de metadatos de un proyecto. Solo el propietario del watcher. Emite ProjectMetadataURISet.

getProjectMetadataURI

Solidity
getProjectMetadataURI(uint64 projectId) → string

Gestión de atestadores

addAttester

Solidity
addAttester(uint64 projectId, address attester)

Autoriza a un atestador para un proyecto específico. Solo el propietario del watcher. Emite AttesterAdded.

removeAttester

Solidity
removeAttester(uint64 projectId, address attester)

Quita a un atestador de un proyecto. Emite AttesterRemoved.

addAttesters

Solidity
addAttesters(uint64 projectId, address[] attesters)

Autoriza en lote a varios atestadores para un proyecto.

removeAttesters

Solidity
removeAttesters(uint64 projectId, address[] attesters)

Quita en lote a varios atestadores de un proyecto.

addWatcherAttester

Solidity
addWatcherAttester(uint64 watcherId, address attester)

Autoriza a un atestador para todos los proyectos de un watcher. Emite WatcherAttesterAdded.

removeWatcherAttester

Solidity
removeWatcherAttester(uint64 watcherId, address attester)

Quita a un atestador a nivel de watcher. Emite WatcherAttesterRemoved.

isProjectAttester

Solidity
isProjectAttester(uint64 projectId, address attester) → bool

isWatcherAttester

Solidity
isWatcherAttester(uint64 watcherId, address attester) → bool

Acumuladores de energía

getTotalGeneratedEnergy

Solidity
getTotalGeneratedEnergy(uint64 projectId) → uint256

Devuelve la energía total generada, en Wh, de un proyecto.

getTotalConsumedEnergy

Solidity
getTotalConsumedEnergy(uint64 projectId) → uint256

getTotalGeneratedEnergyByWatcher

Solidity
getTotalGeneratedEnergyByWatcher(uint64 watcherId) → uint256

getTotalConsumedEnergyByWatcher

Solidity
getTotalConsumedEnergyByWatcher(uint64 watcherId) → uint256

Consulta de períodos y cadenas

getAttestedPeriodUID

Solidity
getAttestedPeriodUID(uint64 projectId, uint64 fromTimestamp, uint64 toTimestamp) → bytes32

Devuelve el UID de la atestación que cubre este período, o bytes32(0) si no está atestado.

getAttestedPeriodStartUID

Solidity
getAttestedPeriodStartUID(uint64 projectId, uint64 fromTimestamp) → bytes32

Devuelve el UID de la atestación que comienza en este timestamp, o bytes32(0).

getProjectLastTimestamp

Solidity
getProjectLastTimestamp(uint64 projectId) → uint64

Devuelve el último toTimestamp de la cadena de atestaciones del proyecto. Las nuevas atestaciones deben comenzar desde este timestamp.

getReplacementUID

Solidity
getReplacementUID(bytes32 uid) → bytes32

Devuelve el UID de la atestación que reemplazó a la indicada, o bytes32(0) si no fue reemplazada. Sigue la cadena para encontrar la versión más reciente.

Gestión de tipos de energía

registerEnergyType

Solidity
registerEnergyType(uint8 id, string name)

Registra un nuevo tipo de fuente de energía. Solo el administrador de tipos de energía. Emite EnergyTypeRegistered.

removeEnergyType

Solidity
removeEnergyType(uint8 id)

Elimina un tipo de energía. Solo el administrador de tipos de energía. Emite EnergyTypeRemoved.

transferEnergyTypeAdmin

Solidity
transferEnergyTypeAdmin(address newAdmin)

Transfiere el rol de administrador de tipos de energía. Solo el administrador actual. Emite EnergyTypeAdminTransferred.

getEnergyTypeAdmin

Solidity
getEnergyTypeAdmin() → address

getEnergyTypeName

Solidity
getEnergyTypeName(uint8 id) → string

isEnergyTypeRegistered

Solidity
isEnergyTypeRegistered(uint8 id) → bool

Autorización de resolvers

authorizeResolver

Solidity
authorizeResolver(address resolver)

Autoriza a un resolver a escribir en el registro. Solo el propietario del contrato.

deauthorizeResolver

Solidity
deauthorizeResolver(address resolver)

isAuthorizedResolver

Solidity
isAuthorizedResolver(address resolver) → bool