| .. | ||
| ai.json | ||
| authorization.json | ||
| block.json | ||
| compliance.json | ||
| data.json | ||
| device.json | ||
| execution.json | ||
| identity.json | ||
| KINDS.json | ||
| location.json | ||
| ownership.json | ||
| payment.json | ||
| provenance.json | ||
| README.md | ||
| runtime.json | ||
| settlement.json | ||
| time.json | ||
AERE Proof Protocol: proof kinds and their conformance vectors (AIP-23)
AIP-23 constrains only the envelope: a statement, its statementHash, an optional signature and an optional notarization. Each
kind of proof keeps its own statement fields. This folder lists the kinds AERE produces today, with one envelope per kind, so that an
independent implementation can produce and check them without us. The machine-readable list is KINDS.json.
Check conformance
For each <kind>.json:
- take the
statementobject; - serialize it canonically:
JSON.stringify(statement), keys in the order they appear in the file, UTF-8; - SHA-256 over those bytes, prefixed with
0x; - the result MUST equal
statementHash.
The same with the reference verifier, which also checks form, signature and finality when present:
node verify-proof.mjs data.json --json # verify-proof.mjs is published in aere-node/tools/
Every envelope here is VALID offline (form and integrity pass; it carries no signature and no notarization, so those levels are ABSENT). Change one field of a statement and it is INVALID at the integrity level.
Kinds
| kind | statement kind | required fields | what it attests |
|---|---|---|---|
| data | aere-proof-of-data |
sha256, name, createdAt |
a file or dataset had exactly this content (its SHA-256) under this name |
| execution | aere-proof-of-execution |
program, inputHash, outputHash, createdAt |
a program ran on this input and produced this output (digests), with this exit code |
| identity | aere-proof-of-identity |
subjectId, publicKeyHash, createdAt |
a subject identifier is bound to this public key (digest), by this method |
| compliance | aere-proof-of-compliance |
subject, policy, result, createdAt |
a subject was checked against a named policy with this result; the evidence is referenced by digest |
| runtime | aere-proof-of-runtime |
host, artifactSha256, createdAt |
a host runs this artifact (digest), and whether it matches the attested one |
| location | aere-proof-of-location |
subject, region, createdAt |
a subject is in this region, by this method; the evidence is referenced by digest |
| device | aere-proof-of-device |
deviceId, attestationHash, createdAt |
a device identifier carries this attestation and key (digests) and this posture |
| payment | aere-proof-of-payment |
from, to, amount, createdAt |
a payment of this amount and asset from one party to another, with its transaction (digest) |
| ownership | aere-proof-of-ownership |
owner, assetId, createdAt |
an owner holds this asset identifier; the asset is referenced by digest |
| time | aere-proof-of-time |
subjectHash, at, createdAt |
a subject (digest) existed at this time, from this time source |
| block | aere-proof-of-block |
blockHash, stateRoot, certificateDigest, createdAt |
a block hash and state root, with the post-quantum anchor certificate digest that covers them |
| authorization (added 2026-09-28) | aere-proof-of-authorization |
grantor, grantee, scope, createdAt |
a grantor gave a grantee the right to act within a scope, under a policy (digest), until an expiry |
| settlement (added 2026-09-28) | aere-proof-of-settlement |
chainId, txHash, blockHash, amount, asset, createdAt |
a settlement on a chain: its transaction and block (32-byte hashes carried as they are, never re-hashed), amount and asset |
| provenance (added 2026-09-28) | aere-proof-of-provenance |
subjectHash, parents, createdAt |
an artifact (digest) was produced from a non-empty list of parents (digests), by a process (digest), by an actor |
| ai | aere-proof-of-ai |
model.name, createdAt |
an AI action: which model and version, which prompt, input and output (digests), which tools, which agent, who asked |
Field types in KINDS.json: digest is the SHA-256 of some content (0x + 64 hex), so nothing sensitive enters the statement in
the clear; hash is a value that is already a 32-byte hash (a transaction or block hash) and is refused if it has another form;
list is a non-empty list of digests; plain is carried as given. Proof of Software has its own statement, and its conformance
vector is aere-node/tools/proof-vectors/01-proof-of-software.json.
What an envelope does not prove
An envelope binds a claim to its hash and, when signed, to its signer; with a notarization, to a time certified post-quantum on chain. It does not make the claim true in the world: the truth of a "location" or a "device" depends on who attests it and how. Read the signer, not only the verdict.