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:
| Clase | Propósito |
|---|---|
EnergyQuery | Lee datos del subgraph (no requiere wallet) |
EnergySDK | Escribe 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
npm install energy-attestation-sdkEl 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 red | Cadena | Estado |
|---|---|---|
"amoy" | Polygon Amoy (testnet) | Desplegada |
"polygon" | Polygon Mainnet | Desplegada |
"celo" | Celo Mainnet | Desplegada |
"alfajores" | Celo Alfajores (testnet) | Solo EAS |
Pasa el nombre de la red como string al construir cualquiera de las dos clases.
Ejemplo rápido
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:
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 redContractRevertError: el contrato rechazó la transacción, con un código de error decodificado del catálogo de errores del contratoTransactionError: la transacción se envió pero falló durante su ejecución