Skip to main content

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 POST content: SHA-256 of the UTF-8 encoded body string
  • For FILE content: 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:

FieldTypeDescription
contentHashbytes32Content Hash of the Content Unit
publisherAddressaddressEthereum address of the publisher
timestampuint64Unix 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 publisherAddress at the time of signing
  • Integrity — the contentHash commits 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.