Evidence and trust model
ProofRails uses separate integrity checks because each one answers a different question.
| Layer | Check | What it establishes |
|---|---|---|
| Payment reference | Compare chain, transaction, token, amount and parties with chain data. | The cited settlement facts match the network record. |
| Resource hash | SHA-256 the delivered bytes. | The available resource matches the bytes bound to the receipt. |
| File hashes | Recompute entries in manifest.json. |
Individual evidence files have not changed. |
| Manifest signature | Verify Ed25519 signature with public_key.pem. |
The manifest was signed by the corresponding private key. |
| Bundle hash | SHA-256 the final ZIP bytes. | The downloaded bundle has a stable digest. |
| Onchain anchor | Decode EvidenceAnchored and compare bundleHash. |
The same digest was committed by the event timestamp. |
External assumptions
ProofRails cannot derive these facts from hashes:
- legal identity behind a wallet;
- authority to pay or sell;
- accuracy of supplied descriptions or references;
- whether delivered content met a contract;
- tax, accounting or regulatory treatment;
- institutional acceptance of an ISO 20022-style artifact.
Integrations should preserve the original source data and record how it was obtained. Evidence integrity is strongest when a verifier can recompute payment, resource, file, signature, bundle and anchor checks independently.