C&I Energy Settlement
End-to-end walkthrough — verify multi-source power contracts for open-access C&I buyers with Bridge Kernel.
C&I Energy Settlement
This walkthrough demonstrates how Bridge Kernel verifies energy settlement for a commercial and industrial (C&I) buyer with multiple power sources.
Scenario
SteelWorks Ltd is an open-access C&I buyer in Maharashtra, India. They purchase power from:
- A 2 MW rooftop solar installation (metered via SunSpec inverters)
- A third-party wind farm (metered via Modbus power meters)
- The local distribution company (MSEDCL) as backup
Each billing period, SteelWorks needs to reconcile actual consumption against contracted supply from each source. Today this takes 2-3 weeks of manual spreadsheet work. Disputes are common.
What Bridge Kernel does
- Ingests meter reads from all three sources every 15 minutes.
- Signs each reading with Ed25519, creating a ProofEnvelope.
- Evaluates policy rules to ensure readings are within expected ranges.
- Persists verified readings to the immutable ledger.
- At billing time, exports a signed evidence pack for reconciliation.
Step 1: Configure adapters
sense:
adapters:
# Rooftop solar via SunSpec
- type: modbus-tcp
host: 192.168.1.10
port: 502
unit_id: 1
registers:
- address: 40001
count: 2
name: solar_generation_kw
type: float32
- address: 40005
count: 2
name: solar_energy_kwh
type: float32
poll_interval_ms: 900000 # 15 minutes
source: "solar-rooftop-01"
sector: power
event_type: meter_reading
# Wind farm via Modbus power meter
- type: modbus-tcp
host: 10.0.1.50
port: 502
unit_id: 3
registers:
- address: 30001
count: 2
name: wind_generation_kw
type: float32
- address: 30005
count: 2
name: wind_energy_kwh
type: float32
poll_interval_ms: 900000
source: "wind-farm-contract-01"
sector: power
event_type: meter_reading
# Grid backup via JSONL file (from MSEDCL portal export)
- type: jsonl-file
path: ./input/msedcl-readings.jsonl
tail: true
source: "msedcl-grid-backup"
sector: power
event_type: meter_readingStep 2: Configure policy
Only allow meter readings from known sources, reject oversized payloads:
{
"version": "2026-03-01",
"default_action": "deny",
"rules": [
{
"name": "allow-solar-readings",
"action": "allow",
"sector": "power",
"event_type": "meter_reading",
"source": "solar-rooftop-01"
},
{
"name": "allow-wind-readings",
"action": "allow",
"sector": "power",
"event_type": "meter_reading",
"source": "wind-farm-contract-01"
},
{
"name": "allow-grid-readings",
"action": "allow",
"sector": "power",
"event_type": "meter_reading",
"source": "msedcl-grid-backup"
},
{
"name": "deny-oversize",
"action": "deny",
"max_payload_bytes": 65536
}
]
}Step 3: Run and verify
# Start a single ingest cycle
bridge-node ctl run-once --config bridge.yaml
# Check status
bridge-node ctl status --config bridge.yaml
# View ledger
bridge-node ctl ledger --config bridge.yamlExpected output after one cycle:
Total events: 3
Unsynced events: 3Each event has a full ProofEnvelope with SHA-256 hash and Ed25519 signature.
Step 4: Export evidence pack
At billing time, query the ledger for the billing period:
bridge-node ctl ledger --from 2026-03-01 --to 2026-03-31 --format json > evidence-pack-march-2026.jsonThe evidence pack contains every meter reading with its cryptographic proof. Finance teams can verify any reading independently by checking the hash and signature.
Result
- Settlement cycle: Reduced from 2-3 weeks to hours.
- Disputes: Eliminated — every reading has a cryptographic receipt.
- Audit trail: Complete, immutable, and independently verifiable.