Evidence, not claims

Verify solar evidence
yourself.

An evidence package is a set of data files, a manifest that lists the SHA-256 hash of each file, and an Ed25519 signature over that manifest. This page checks all three in your browser. Nothing is uploaded.

Check a package

Drop the whole package into the box: manifest.json, manifest.sig and the data files. Or drop one file to get its SHA-256. Your browser does the work with WebCrypto. Ed25519 support in WebCrypto differs between browsers and versions; if the checker reports that Ed25519 is missing, use the OpenSSL steps further down.

Drop the package files here or click to browse
manifest.json + manifest.sig + data files · nothing is uploaded


Sample package ILLUSTRATIVE

Download the four files, then drop them into the box above. The sample is a battery storage (BESS) example: one illustrative asset, SAMPLE-BESS-CL-001. It is not a real plant, and its values are not measurements. A solar-specific signed package is pending, so this sample shows the format only.

manifest.json ↓ manifest.sig ↓ telemetry-extract.csv ↓ asset-summary.json ↓

Nothing has been checked yet. The result appears here, file by file, once you choose or drop a package.

Reading the result

A valid, an invalid and an altered package

The checker answers two questions. Was the manifest signed by the published key and left unchanged? Does each file match the SHA-256 that the manifest lists? Read both answers together. The boxes below show the wording the checker uses. They are examples, not results of a real check.

A valid package

✓ Ed25519 signature VALIDThe manifest was signed by LIFETIMEBESS's published key (key_id ltb-2026-10) and has not been altered.
✓ telemetry-extract.csv

matches the manifest

✓ asset-summary.json

matches the manifest

Every file is exactly what the manifest lists, and the manifest is exactly what the key holder signed. Nothing was added, removed or changed after signing.

An invalid package

✗ Signature INVALIDThe signature does not match this manifest under the published key. The manifest was altered, or the signature is not ours.

Either the manifest changed after it was signed, or it was signed with a different key. Treat the package as unverified, even when every file row matches, because the manifest itself is not trusted.

An altered package

✓ Ed25519 signature VALIDThe manifest was signed by LIFETIMEBESS's published key (key_id ltb-2026-10) and has not been altered.
✗ asset-summary.json

does NOT match — the file was modified

A changed byte in a data file changes its SHA-256 hash, so that file fails. The signature can still be valid, because the manifest itself was not touched. Read the ✗ row, not only the banner. If someone also edits the manifest so that the row matches, the signature turns INVALID.

Two more cases. A file that the manifest lists but you did not drop shows as "listed in the manifest, not provided". A file you drop that the manifest does not list shows as "not listed in the manifest". Treat the package as incomplete until every listed file has a matching row.
Open format

LTB-Evidence-Manifest/0.1, an open format

The format uses JSON, SHA-256 and Ed25519. It needs no blockchain and no proprietary viewer. Anyone can implement it, and anyone can check a package without this page.

What a manifest contains

specLTB-Evidence-Manifest/0.1
files[]path, SHA-256 and size in bytes of each file in the package
assetthe asset that the evidence covers. The sample uses a battery storage (BESS) identifier, SAMPLE-BESS-CL-001
engine / seedwhere a model produced a value: the model version and the random seed, so the value can be reproduced
key_idwhich published key the signer used (ltb-2026-10)
createdwhen the signer produced the package. The signer writes this date, and it is not yet independently timestamped
manifest.sigdetached Ed25519 signature over the exact bytes of manifest.json, stored as base64 text

Verify with OpenSSL, if you prefer

You do not need this page. You need OpenSSL 3.x and the published public key. Run these three steps in the folder that holds the package:

base64 -d < manifest.sig > manifest.sig.bin printf '%s\n' '-----BEGIN PUBLIC KEY-----' \ 'MCowBQYDK2VwAyEAggCg4K6ADrzNTxsERRHNZP8S3B0dPmo8GrxBMjdrqhQ=' \ '-----END PUBLIC KEY-----' > ltb-pub.pem openssl pkeyutl -verify -pubin -inkey ltb-pub.pem -rawin -in manifest.json -sigfile manifest.sig.bin

The result is "Signature Verified Successfully" or "Signature Verification Failure". The second step writes the published key as a PEM public key. The base64 line is the standard SubjectPublicKeyInfo encoding of the same 32-byte key: a fixed 12-byte Ed25519 header followed by the raw key. The key itself does not change.

Published public key (Ed25519, raw, base64), key_id ltb-2026-10:

ggCg4K6ADrzNTxsERRHNZP8S3B0dPmo8GrxBMjdrqhQ=

Published public key (Ed25519, raw, base64), key_id ltb-2026-08:

DxjoM0/6xTb0EhP4UYrutsJ1qspmCREvYnMrelVWMdE=

Two keys are published. ltb-2026-10 signs packages from October 2026, including this sample. ltb-2026-08 stays valid for packages signed before that date.

Not implemented yet: RFC 3161 timestamps. Packages carry an Ed25519 signature only. They do not yet carry a trusted timestamp from an independent time-stamping authority, so the date inside the manifest is the signer's own claim.
Limits

What a valid result does not prove

A valid package proves integrity and origin. These files, as listed, were signed with the published LIFETIMEBESS key and have not changed since signing. A valid package does not prove:

  • that the readings are correct, or that the meters and loggers that produced them were calibrated;
  • that the plant exists as described, or that it is in the state its summary says;
  • that a figure is a measurement. Check the label on each figure: VERIFIED means published by the source, ESTIMATED means our calculation with its assumptions, and ILLUSTRATIVE means an example.
The sample is illustrative. The sample package exists to show the format. It is a battery storage (BESS) example, not a real plant and not a measurement of any real asset. A solar-specific signed package is pending.

Start with the free PV Health Score.

Check the monitoring data of one system first. For a signed evidence package on one asset, write to us.

Get the free PV Health Score Email about a package