Documentación

Resumen del SDK

El SDK de JavaScript de EnergyAS es la forma recomendada de interactuar con EnergyAS desde cualquier entorno Node.js o navegador. Cubre tanto la lectura de datos como el envío de registros de energía on-chain.

El SDK expone dos clases independientes:

ClasePropósito
EnergyQueryLee datos del subgraph (no requiere wallet)
EnergySDKEscribe en los contratos: registra organizaciones, proyectos y atestadores, y envía registros de energía

Si solo necesitas mostrar o analizar datos, EnergyQuery es todo lo que necesitas. Si estás construyendo un pipeline de reportes automatizado o un backend que envía lecturas, usarás EnergySDK.

Instalación

Terminal
npm install energy-attestation-sdk

El SDK requiere Node.js 18+ y tiene ethers v6 como única peer dependency para las operaciones de escritura. EnergyQuery usa la API estándar fetch y no tiene dependencias adicionales.

Redes compatibles

El SDK incluye configuración integrada para las siguientes redes:

Valor de redCadenaEstado
"amoy"Polygon Amoy (testnet)Desplegada
"polygon"Polygon MainnetDesplegada
"celo"Celo MainnetDesplegada
"alfajores"Celo Alfajores (testnet)Solo EAS

Pasa el nombre de la red como string al construir cualquiera de las dos clases.

Ejemplo rápido

JavaScript
import { EnergyQuery, EnergySDK } from 'energy-attestation-sdk';

// Read protocol stats — no wallet needed
const query = new EnergyQuery({
  network: 'polygon',
  apiKey: 'YOUR_THEGRAPH_API_KEY',
});

const protocol = await query.getProtocol();
console.log(`${protocol.totalProjects} projects, ${protocol.totalAttestations} records`);

// Submit a reading — requires a wallet
const sdk = await EnergySDK.fromPrivateKey({
  network: 'polygon',
  privateKey: process.env.PRIVATE_KEY,
});

const { uid } = await sdk.attestations.attest({
  projectId: 1,
  readings: [500_000n, 510_000n, 495_000n],  // Wh per interval
  readingIntervalMinutes: 60,
  fromTimestamp: Math.floor(Date.now() / 1000) - 3 * 3600,
  method: 'smart-meter-api',
});

console.log('Record submitted:', uid);

Manejo de errores

Ambas clases lanzan errores tipados que puedes capturar e inspeccionar:

JavaScript
import { EnergySDKError, ConfigurationError, ContractRevertError } from 'energy-attestation-sdk';

try {
  await sdk.attestations.attest(params);
} catch (err) {
  if (err instanceof ContractRevertError) {
    console.error('Contract rejected the transaction:', err.code, err.message);
  } else if (err instanceof ConfigurationError) {
    console.error('Bad configuration:', err.message);
  } else {
    throw err;
  }
}
  • ConfigurationError: argumentos inválidos o configuración faltante antes de cualquier llamada a la red
  • ContractRevertError: el contrato rechazó la transacción, con un código de error decodificado del catálogo de errores del contrato
  • TransactionError: la transacción se envió pero falló durante su ejecución