Skip to content
DigiStamp Proof, home

⚠️ NOTICE: Deployment Testing in Progress We have recently deployed a major platform update and are currently performing post-deployment testing and validation. Please do not use this website or submit any transactions until testing is complete. Some features may be unavailable or behave unexpectedly. Thank you for your patience as we work to ensure everything is functioning correctly.

Help center

Checking a proof

How anyone checks a proof against the original, what the downloads contain, and how to check every part without trusting DigiStamp.

The certificate page

Every published proof has a public certificate page at its own link, and a QR code that opens it. Anyone with the link can open it without signing in. It shows:

  • under What this certifies: the fingerprint, whether it is text or a file (with the file’s name), the stored text if the owner chose to store it, and when it was published;
  • under Wallet signature, for a signed proof: the address under Signed by, the exact message and the signature, with a link to See all proofs by this identity;
  • under Blockchain anchor, for a stamped proof: the anchor transaction, the batch’s Merkle root and the proof’s inclusion path;
  • at the top, what the chain says now: the certificate checks the anchor against the chain each time it is opened, and says Anchored on chain only when the inclusion path rebuilds the root and that root is in the anchor transaction with enough confirmations.

Checking the original against it

On a certificate, under Check your own copy, paste the original text or choose the original file. Your browser works out its fingerprint and compares it with the certificate’s; nothing is sent.

Match
The content is exactly the same as what was proved.
No match
The content is different, even if only by one character or byte. It is not necessarily the wrong document: a re-saved or converted copy also fails.

Without a link, use Verify: paste text, choose a file or enter a fingerprint, and it lists every published proof with that fingerprint. Only the fingerprint is looked up; the content stays in your browser.

Why a copy can fail is explained in Keep your original.

Downloads

Every certificate has a Downloads panel:

Download Data
A JSON file with the proof's details: fingerprint, dates, the signer's address, the signature and signed message, the anchor transaction ID and, for a stamped proof, the Merkle root and Merkle proof.
Download Summary
The same details as plain text, with short instructions for checking the signature.
Download QR Code
A PNG image of the QR code that opens the certificate.
Download QR (Print)
The same QR code as an SVG, for printing at any size.

Once a proof is stamped, its certificate also offers Embed a badge: a small image, with HTML and Markdown to copy, that links to the certificate. Stored text is never included in the downloads.

Printing the certificate

Print certificate, at the top of the certificate, prints the page as a record to file, or to save as a PDF from your browser’s print dialog.

The certificate is a convenient summary. The evidence is the fingerprint, the signature and the transaction, and each can be checked without DigiStamp, as below.

Checking the fingerprint yourself

SHA-256 is a standard, so any computer can work out a file’s fingerprint and compare it with the one on the certificate. For example:

Windows (Command Prompt or PowerShell)
certutil -hashfile contract.pdf SHA256
macOS
shasum -a 256 contract.pdf
Linux
sha256sum contract.pdf

For a text proof, the fingerprint is the SHA-256 of the text’s UTF-8 bytes, exactly as entered. A line break or space at the end changes it.

Checking the signature yourself

The certificate, the data download and the summary include the signer’s address, the signature and the exact signed message. With DigiByte Core, anyone can check them:

verifymessage "<signer address>" "<signature>" "<signed message>"

It returns true if that address made that signature over that message. What the message says is in What your wallet signs.

Checking the blockchain record

  1. Paste the anchor’s transaction ID, from the certificate or the data download, into any DigiByte block explorer.
  2. Find its OP_RETURN output. Its data is the text prooflink.digistamp.co:b: followed by the 32-byte Merkle root of the batch; in hex, the root is the last 64 characters.
  3. Check that those characters are the certificate’s Merkle root, and note the block and its time.

Some proofs carried over from the original Proof were stamped on their own before batches existed. Their data is the text prooflink.digistamp.co: followed by the proof’s own fingerprint.

Checking a batched proof

A batched proof’s transaction holds the batch’s Merkle root, not its own fingerprint. The certificate’s Inclusion path, and merkleProof in the data download, is a list of steps, each a sibling hash and the side it sits on. To rebuild the root yourself:

  1. Start with the leaf: SHA-256 of the byte 0x00 followed by the 32 bytes of the proof’s fingerprint.
  2. For each step in order: if the sibling is on the left, take SHA-256 of 0x01, then the sibling, then your running hash. If it is on the right, take SHA-256 of 0x01, then your running hash, then the sibling.
  3. The result must equal the Merkle root, and the 32 bytes after prooflink.digistamp.co:b: in the transaction.

A proof that was the odd one out at some level of the batch simply has fewer steps. All hashes are SHA-256 of raw bytes, not of hex text.

Why this is enough

It is not practical to find different fingerprints that rebuild the same root, so a matching root shows the proof’s fingerprint was in the batch when the transaction was made.