This project implements a Tokenized Campus Energy Trade system for NIT Jalandhar that enables peer-to-peer energy trading with:
- Blockchain-based provenance for guaranteed origin (GoO) tokens
- CBDC (eβΉ) settlement rails supporting both retail (eβΉ-R) and wholesale (eβΉ-W) flows
- IS-15959:2011 compliant meter data frames with Ed25519 cryptographic signing
- Real-time policy engine with ToU tariffs, PPA contracts, and carbon pricing
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CAMPUS ENERGY TRADING SYSTEM β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Smart Meters βββββΆβ Edge SDK βββββΆβ Blockchain β β
β β IS-15959 β β Ed25519 β β (Hardhat) β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Fraud β β Policy β β GoO β β
β β Detection β β Engine β β Tokens β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β β β
β βΌ βΌ β
β ββββββββββββββββ ββββββββββββββββ β
β β CBDC Rails ββββββ Settlement β β
β β eβΉ-R/eβΉ-W β β Service β β
β ββββββββββββββββ ββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Feature | Description |
|---|---|
| IS15959Parser | Generates/parses BIS IS-15959:2011 meter data frames |
| Ed25519Signer | Cryptographic signing with Ed25519 algorithm |
| MeterSimulator | Simulates SOLAR, GRID, EV_CHARGER, BATTERY meters |
| FraudDetector | Replay attack, clock skew, sequence validation |
| Component | Function |
|---|---|
| ToUTariffManager | Time-of-Use tariffs based on PSPCL rates |
| PPAContractManager | Power Purchase Agreement validation |
| CarbonTagManager | COβ tracking and REC certificate generation |
| Rail | Purpose |
|---|---|
| eβΉ-R (Retail) | Consumer payments with escrow/allowance |
| eβΉ-W (Wholesale) | Institutional batch netting |
| KPI | Target | Achieved | Status |
|---|---|---|---|
| Provenance Integrity | β₯99% | 100% | β PASS |
| Settlement Latency (p50) | <3000ms | 847ms | β PASS |
| Energy Accuracy Error | β€0.1% | 0.064% | β PASS |
| Renewable Share | >50% | 53.3% | β PASS |
| Carbon Reduction | Net Negative | -47.4 kg | β PASS |
Node.js >= 18.0.0
npm >= 9.0.0# Clone repository
git clone https://github.com/sumansingh20/Blockchain-.git
cd blockchain/campus-energy
# Install dependencies
npm install
# Start local blockchain
npx hardhat node
# Deploy contracts (new terminal)
npx hardhat run scripts/deploy.js --network localhost
# Run demo
node scripts/demo.js
# Start API server
node server.jsPRIVATE_KEY=<deployer-private-key>
CONTRACT_ADDRESS=0x5FbDB2315678afecb367f032d93F642f64180aa3
RPC_URL=http://127.0.0.1:8545campus-energy/
βββ contracts/
β βββ EnergyLedger.sol # Smart contract with OpenZeppelin
βββ sdk/
β βββ EdgeSDK.js # IS-15959 parser, Ed25519 signer
β βββ PolicyEngine.js # ToU tariffs, PPA, carbon pricing
β βββ CBDCSettlement.js # eβΉ-R/eβΉ-W settlement rails
βββ api/
β βββ transactions.js # Transaction API
β βββ wallets.js # CBDC wallets API
β βββ statistics.js # Statistics API
β βββ metrics.js # Advanced KPI metrics API
βββ public/
β βββ index.html # Professional dashboard
βββ scripts/
β βββ deploy.js # Contract deployment
β βββ demo.js # Demo transactions
βββ server.js # Express API server
βββ hardhat.config.js # Hardhat configuration
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import "@openzeppelin/contracts/utils/Pausable.sol";
contract EnergyLedger is Ownable, ReentrancyGuard, Pausable {
struct EnergyTransaction {
address producer;
address consumer;
uint256 energyAmount; // Wh (watt-hours)
uint256 settlementAmount; // Paise
uint256 timestamp;
string carbonTag; // SOLAR, GRID, HYBRID
bytes32 meterSignature;
bytes32 gooId; // Guarantee of Origin
}
// Events
event EnergyTraded(uint256 indexed txId, ...);
// Functions
function recordTrade(...) external whenNotPaused nonReentrant;
function getTransaction(uint256 txId) external view returns (...);
function getTotalStats() external view returns (...);
}Security Features:
- β OpenZeppelin Ownable (access control)
- β ReentrancyGuard (reentrancy protection)
- β Pausable (emergency stop)
- β Input validation
- β Event logging for transparency
| Endpoint | Method | Description |
|---|---|---|
/api/transactions |
GET | List all energy transactions |
/api/wallets |
GET | List CBDC wallets |
/api/statistics |
GET | Get trading statistics |
/api/metrics?type=kpi |
GET | Get KPI summary |
/api/metrics?type=hourly |
GET | Get hourly energy data |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CBDC SETTLEMENT FLOW β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 1. Consumer (eβΉ-R) 2. Escrow Creation β
β βββββββββββββββββββ βββββββββββββββββββ β
β β Balance: βΉ10,000β βββββββΆ β Locked: βΉ500 β β
β β KYC: Verified β β Purpose: ENERGY β β
β βββββββββββββββββββ βββββββββββββββββββ β
β β β
β 3. Policy Validation βΌ β
β βββββββββββββββββββ βββββββββββββββββββ β
β β ToU Tariff: β
β β Escrow Released β β
β β PPA Valid: β
β βββββββ β to Treasury β β
β β Carbon: SOLAR β βββββββββββββββββββ β
β βββββββββββββββββββ β β
β βΌ β
β 4. Wholesale Netting (eβΉ-W) 5. Final Settlement β
β βββββββββββββββββββ βββββββββββββββββββ β
β β NITJ Treasury β βββββββΆ β PSPCL Grid β β
β β Net: -βΉ847.22 β β Net: +βΉ847.22 β β
β βββββββββββββββββββ βββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Source | COβ Factor | Example |
|---|---|---|
| SOLAR | 0.0 kg/kWh | 197.8 kWh β 0 kg COβ |
| GRID | 0.82 kg/kWh | 132.6 kWh β 108.7 kg COβ |
| HYBRID | 0.41 kg/kWh | Blended rate |
Net Carbon Impact: -47.4 kg COβ (Carbon Negative β )
const PSPCL_TARIFF = {
baseRate: 6.79, // βΉ/kWh
peakMultiplier: 1.20, // 6 PM - 10 PM
offPeakMultiplier: 0.85, // 10 PM - 6 AM
summerSurcharge: 1.05, // April - September
winterDiscount: 0.95 // October - March
};| Period | Hours | Multiplier |
|---|---|---|
| Peak | 18:00 - 22:00 | 1.20x |
| Standard | 06:00 - 18:00 | 1.00x |
| Off-Peak | 22:00 - 06:00 | 0.85x |
# Run unit tests
npx hardhat test
# Run with coverage
npx hardhat coverage
# Gas report
REPORT_GAS=true npx hardhat test# Install Vercel CLI
npm i -g vercel
# Deploy
vercel --prodFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]| Standard | Description | Status |
|---|---|---|
| IS-15959:2011 | Indian meter data standard | β Implemented |
| CEA Guidelines | Central Electricity Authority | β Compliant |
| RBI CBDC Pilot | Digital Rupee framework | β Simulated |
| OpenZeppelin | Security best practices | β Integrated |
- NIT Jalandhar - Research & Development
This project is licensed under the MIT License - see the LICENSE file for details.
- BIS IS-15959:2011 - Data Exchange for Electricity Metering
- RBI CBDC Concept Note (2022)
- CEA Regulations on P2P Energy Trading
- PSPCL Tariff Schedule 2024
- OpenZeppelin Contracts v5.0
Live Dashboard: Vercel Deployment
Contract Address: 0x5FbDB2315678afecb367f032d93F642f64180aa3
Chain: Hardhat Local (31337) / Ethereum Compatible