Documentación

Despliegue del protocolo

Despliega el Energy Attestation Service (EnergyAS) en cualquier cadena compatible con EVM donde EAS esté disponible. El proceso de despliegue crea dos contratos y registra el schema de atestación.

Requisitos previos

  • Node.js 18+ y npm instalados
  • Una wallet de despliegue con fondos (suficientes para ~3 despliegues de contratos)
  • EAS ya debe estar desplegado en la red de destino

1. Compilar los contratos

Terminal
npx hardhat compile

Compila EnergyRegistry, EnergyAttestationResolver y los contratos de EAS necesarios. Solidity 0.8.28 con el optimizador activado (200 runs, viaIR, EVM Cancun).

2. Desplegar los contratos principales

Terminal
npx hardhat run scripts/deploy.ts --network <network>

Este script despliega ambos contratos y autoriza al resolver en un solo paso:

  1. Despliega EnergyRegistry (contrato de estado permanente)
  2. Despliega EnergyAttestationResolver (apunta a EAS y al registro)
  3. Llama a registry.authorizeResolver(resolverAddress)
  4. Guarda las direcciones en deployments/<network>.json

Agrega las direcciones desplegadas a tu .env:

Environment
REGISTRY_ADDRESS=0x...
RESOLVER_ADDRESS=0x...

3. Registrar el schema

Terminal
npx hardhat run scripts/register-schema.ts --network <network>

Registra el schema de atestación en el SchemaRegistry de EAS junto con la dirección del resolver. El schema admite correcciones mediante atestaciones de reemplazo (definiendo refUID con el UID original). Guarda el Schema UID devuelto.

Environment
SCHEMA_UID=0x...

4. Verificar el despliegue

Tras el despliegue, comparte lo siguiente con los watchers que usarán el protocolo:

  • REGISTRY_ADDRESS: los watchers interactúan con esta dirección para la configuración
  • SCHEMA_UID: los watchers lo usan al enviar atestaciones
  • Nombre de la red y chain ID
Nota

Advertencia: La wallet de despliegue se convierte en el propietario del contrato. Usa un multisig en los despliegues de producción para poder autorizar siempre nuevos resolvers y gestionar pausas de emergencia.