Content Provenance
Content Unit and Content Hash
A Content Unit is raw content: either a UTF-8 Markdown text body (POST kind) or a binary file (FILE kind).
The Content Hash is computed as:
ContentHash = "0x" || hex( SHA-256( ContentUnit ) )
- For
POSTcontent: SHA-256 of the UTF-8 encoded body string - For
FILEcontent: SHA-256 of the raw file bytes
The Content Hash is the globally unique, content-addressed identifier for any work in epress world.
Statement of Source (SoS)
A Statement of Source is an immutable structured declaration of a publication's provenance:
| Field | Type | Description |
|---|---|---|
contentHash | bytes32 | Content Hash of the Content Unit |
publisherAddress | address | Ethereum address of the publisher |
timestamp | uint64 | Unix timestamp (seconds) of publication |
The SoS is permanent. Once signed, none of its fields change.
Proof of Source (PoS)
A Proof of Source is a Statement of Source combined with the publisher's EIP-712 signature:
PoS = SoS + EIP-712 signature
= { contentHash, publisherAddress, timestamp, signature }
The PoS proves:
- Authorship — the publisher held the private key for
publisherAddressat the time of signing - Integrity — the
contentHashcommits to an exact Content Unit - Timestamp — the publication occurred at
timestamp
Signed Publication
A Signed Publication is a Content Unit paired with its PoS. Signing is the sole mechanism that causes content to enter network circulation. Content that has not been signed exists only as a local, private draft and MUST NOT be replicated.
Content Quoting
A signed publication MAY reference another signed publication by including the referenced work's Content Hash in a Markdown blockquote. This enables a verifiable, decentralized conversation graph.