Proof Of Existence
Authors/Creators
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
notarizerornullifieraddresses—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,isNotarizedfor on-chain and explorer visibility. -
providerandtimestampfor each state change.
-
-
Interface Additions:
-
certify,cancel, and their*DocumentOnlyvariants. -
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
Software
- Repository URL
- https://gitlab.com/dt-iot/enershare/proof-of-existence
- Programming language
- Solidity
- Development Status
- Active