Provendly

Verify a record

Paste the share reference from an Evidence Pack to re-derive every hash in its integrity chain from the stored content, and check that the links still reproduce.

How the chain is built

Each completed scan of a monitored site is reduced to a canonical JSON payload: which third parties were contacted, in which consent state, at what offset from page load, with which findings, plus SHA-256 digests of every captured screenshot and artifact.

That payload is serialised with object keys sorted and no insignificant whitespace, so that any two implementations produce byte-identical input. Its SHA-256 is the record_hash.

Each record is then linked to the one before it: chain_hash = SHA-256(prev_chain_hash || record_hash), with both operands written as lowercase hex. The first record in a chain links from 0000000000000000000000000000000000000000000000000000000000000000.

Altering a stored record changes its record_hash, which changes its chain_hash, which breaks every link after it. Deleting a record from the middle leaves a sequence gap. Both are reported by the check above.

Why the chain alone is not the whole story

A party who controls the database could in principle recompute an entire chain from altered content, and it would verify. That is why chain heads are anchored daily, together with a merkle root over every site’s head. An anchor recorded before a dispute arose fixes the state of the record at that time: a rebuilt chain would not reproduce a root that had already been committed. When assessing a record, look at whether the anchors predate the period in dispute.

Checking without using this page

The appendix of every Evidence Pack prints each canonical payload verbatim alongside its three hashes. Any SHA-256 implementation reproduces them. For example, taking the canonical JSON of record #0 from the appendix:

# record_hash
printf '%s' "$CANONICAL_JSON" | shasum -a 256

# chain_hash for record 0 (prev is the genesis value)
printf '%s%s' "0000000000000000000000000000000000000000000000000000000000000000" "$RECORD_HASH" | shasum -a 256