Published May 22, 2025 | Version 3.0.0
Software Open

Proof Of Existence

Contributors

  • 1. ROR icon Engineering (Italy)

Description

Proof of Existence (PoE) is a decentralized mechanism for document notarization on the blockchain. It allows users to prove that specific data existed at a given point in time, without revealing the content itself. By using cryptographic hashes stored immutably on-chain, PoE provides a trustless, verifiable, and timestamped record of existence.

1. PoEv5

A minimal document notarization system for the Ethereum blockchain.

  • Functionality:

    • Hashes document content using keccak256 (SHA-3).

    • Associates a hash with a Proof (description, sender, timestamp).

    • Allows one-time notarization per hash; immutable.

    • Enables verification and retrieval of notarized hashes.

  • Limitations:

    • No revocation or modification.

    • No historical tracking or metadata updates.

2. PoEv7

A mid-level extension of the base contract with enhanced flexibility, allowing uncontrolled notarization and nullification, without strict access control.

  • Key Features:

    • Allows notarization and nullification via content or direct hash.

    • Accepts custom notarizer or nullifier addresses—no sender ownership check.

    • Adds metadata (plaintext) to both notarization and nullification events.

    • Tracks proof changes (timestamp, block number, state).

    • Emits appropriate events (Notarized / Nullified).

  • Differences from Base:

    • Includes proof revocation (nullify).

    • Supports metadata tagging for both creation and revocation.

    • Does not enforce that the original sender revokes the proof.

  • Trade-offs:

    • Less secure due to absence of sender-based restrictions.

    • More suitable for open or delegated notarization scenarios (e.g., by a third party or organization).

3. PoEv9

A fully featured version introducing state history, access control, and full auditability.

  • Advanced Features:

    • Tracks all changes to a proof as an array (Proof[]) per hash.

    • Differentiates between notarized and nullified states.

    • Restricts nullification to the original sender only.

    • Enforces non-empty content and non-null hashes.

  • Proof Fields Extended:

    • blockNumber, isNotarized for on-chain and explorer visibility.

    • provider and timestamp for each state change.

  • Interface Additions:

    • certify, cancel, and their *DocumentOnly variants.

    • getProof() returns the latest state.

    • getHistory() exposes the full state change log.

  • Security & Traceability:

    • Strong guarantees of integrity, authorship, and revocation rights.

    • Ideal for systems requiring regulatory compliance or audit trails.

Summary Table

Feature PoEv5 PoEv7 PoEv9
One-time Notarization
Revocation (Nullify) ✅ (no restrictions) ✅ (restricted)
Metadata Support
Proof State Tracking
Full History
Access Control (original sender)
Suitable for Auditing Limited

Files

proof-of-existence-main.zip

Files (46.3 kB)

Name Size Download all
md5:bbca9aeee7545070b258c7b81f06be4b
46.3 kB Preview Download

Additional details

Funding

European Commission
ENERSHARE - European commoN EneRgy dataSpace framework enabling data sHaring-driven Across- and beyond- eneRgy sErvices 101069831

Software

Repository URL
https://gitlab.com/dt-iot/enershare/proof-of-existence
Programming language
Solidity
Development Status
Active