⚠️ 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:
certutil -hashfile contract.pdf SHA256shasum -a 256 contract.pdfsha256sum contract.pdfFor 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
- Paste the anchor’s transaction ID, from the certificate or the data download, into any DigiByte block explorer.
- 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. - 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:
- Start with the leaf: SHA-256 of the byte
0x00followed by the 32 bytes of the proof’s fingerprint. - For each step in order: if the sibling is on the
left, take SHA-256 of0x01, then the sibling, then your running hash. If it is on theright, take SHA-256 of0x01, then your running hash, then the sibling. - 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
Related articles
- Saving a proof to the blockchainHow a published proof is stamped on DigiByte: paying the fee, the batch transaction, and confirmations.
- Signing with your walletHow signing links a proof to a DigiByte address, the two ways to sign, what is signed, and how anyone can check it.
- GlossaryThe words Proof uses, explained simply.
- Privacy and what is publicWhat Proof keeps, what anyone can see, and what is written to the blockchain for good.