Decentralized document timestamping on the Verus blockchain. Prove any document existed at a specific point in time — without uploading it anywhere.
Live App · Verify a Timestamp · How It Works · Compare
Status: Alpha MVP — functional on mainnet and testnet. Feedback and contributions welcome.
vtimestamp creates cryptographic proof that a document existed at a specific point in time. Your browser computes a SHA-256 hash of your file locally — the document never leaves your device, is never uploaded, and is never stored anywhere. Only the hash is published to the Verus blockchain, permanently tied to your VerusID.
The result is a timestamp that:
Your proof lives on the blockchain. If vtimestamp disappears tomorrow, your timestamps are still there and still verifiable by anyone running a Verus node.
Timestamping proves one thing: this data existed before this moment.
Traditional timestamping requires trusting a third party — a notary, a service, a company. If that party disappears, your proof disappears. vtimestamp removes the middleman.
Your browser computes a SHA-256 hash using the Web Crypto API. This happens entirely on your device. The document is never transmitted.
You provide a title (required) and optionally a description. Filename and file size are captured automatically for file uploads.
vtimestamp constructs an identity update request containing your hash and metadata as VDXF data. You approve it in Verus Mobile — your wallet builds and broadcasts the updateidentity transaction.
Once included in a block, your timestamp is permanent. The block provides the height, hash, consensus-verified time, and transaction ID. These values are immutable.
Anyone can verify — no login needed. Upload the same file (or paste the same text), enter the identity name, and the system searches the identity's blockchain history for a matching hash. If found, it returns the block time, height, and transaction details.
If the document has been modified by even a single byte, the hash won't match. This is by design.
| vtimestamp | Traditional Notary | Centralized Service | Bitcoin OP_RETURN | |
|---|---|---|---|---|
| Document privacy | Hash only, never uploaded | Seen by notary | Often uploaded | Hash only |
| Proof ownership | Your VerusID | Paper certificate | Service account | Bitcoin address |
| Verification | Anyone, anytime, free | Requires notary records | Requires service to exist | Anyone with a node |
| Metadata | Title, description, filename on-chain | Notary's records | Service database | Raw hash only |
| Identity | Self-sovereign VerusID | Government ID | Email/password | Pseudonymous address |
| Cost | Verus tx fee (~0.0001 VRSC) | $5-50+ | Subscription/per-stamp | Bitcoin tx fee |
| Durability | Blockchain permanent | Paper degrades | Company may shut down | Blockchain permanent |
| Human readable | Yes (metadata + identity name) | Yes (paper) | Depends on service | No (raw hex) |
| Verus (vtimestamp) | Ethereum | Solana | Cardano | |
|---|---|---|---|---|
| Mechanism | Native identity update | Smart contract | Memo Program | Transaction metadata |
| Smart contract needed? | No | Yes | No (but 566 byte limit) | No |
| Identity | VerusID (native, protocol-level) | ENS (separate smart contract) | SNS (separate program) | ADA Handle (native token) |
| Cost | ~0.0001 VRSC (stable) | Variable gas (volatile) | ~0.000005 SOL | ~0.18 ADA |
| Structured metadata | Yes (VDXF DataDescriptors) | You design your own | 566 bytes unstructured | Yes (native JSON) |
| Data lives on | Your VerusID (you own it) | A smart contract | Transaction logs | Transaction record |
The key difference: on other chains, identity is an add-on. On Verus, identity is the foundation. Your timestamp is stored on your VerusID — a self-sovereign identity with a human-readable name. Verification looks up alice@, not 0x7a3b....
Timestamps are stored under the proof.basic VDXF key on your VerusID's contentmultimap. Each timestamp is a group of DataDescriptor entries:
| Field | VDXF Label | Required | Description |
|---|---|---|---|
| Hash | .sha256 |
Yes | SHA-256 hex hash (64 characters) |
| Title | .title |
Yes | Human-readable label |
| Description | .description |
No | Additional context |
| Filename | .filename |
No | Original filename |
| File Size | .filesize |
No | File size in bytes |
Block time and height are derived from the blockchain — they are not stored in the data but come from the block that contains the transaction.
git clone https://github.com/vdappdev2/vtimestamp.git
cd vtimestamp
cp .env.example .env # Configure RPC endpoints and service identity
yarn install
yarn dev
Open http://localhost:5173.
See .env.example for required configuration:
You don't need vtimestamp (or any website) to verify a timestamp. Using the Verus CLI directly:
# 1. Get the identity's full history
./verus getidentityhistory "alice@" 0 999999999 0 999999999
# 2. Look for contentmultimap entries with the proof.basic VDXF key
# 3. Find the .sha256 label and compare with your document's hash
# 4. Get the block time from the blockhash in the history entry
./verus getblock "<blockhash>"
The proof is on the public blockchain. Any Verus node can verify it.
| Public (on-chain) | Private (never leaves your device) |
|---|---|
| SHA-256 hash | The actual document |
| Title you chose | Full document contents |
| Description you wrote | Any data not in the hash |
| Filename (if provided) | |
| File size (if provided) | |
| Block time and height | |
| Your VerusID name |
The hash is a one-way function. Given the hash, no one can determine whether the original was a PDF, a photo, a text file, or a novel.
Issues and pull requests welcome. See the issues page for open items.
To contribute:
git checkout -b feature/your-feature)Built on Verus — a decentralized blockchain with native self-sovereign identity.