Getting Started
ThesisLock is a proof-of-existence service for documents. You prove a file existed at a point in time without ever revealing the file itself.
What is ThesisLock
ThesisLock anchors a SHA-256 hash of any document on the Stacks blockchain, which settles on Bitcoin. The hash is a one-way fingerprint: it identifies the file uniquely, but the file cannot be reconstructed from it. Once a hash is anchored, anyone can confirm when it was recorded, by which wallet, and what label was attached, all without access to the original document.
How it works
The lifecycle of an anchor has three steps:
- Hash. Your browser computes the SHA-256 digest of the file locally. The file never leaves your device; only its fingerprint is used.
- Anchor. You sign a Stacks transaction with your wallet that writes the hash, an optional label, and the current block heights to a Clarity contract on chain.
- Verify. Anyone can later re-hash a file and check it against the chain, or visit a verification URL, to confirm the anchor and its timestamp.
Prerequisites
To anchor a document you need a Stacks wallet and a small amount of STX to cover the transaction fee. ThesisLock supports the major wallets through Stacks Connect:
Verifying an existing anchor needs no wallet at all. It is a read-only lookup against the public Hiro API.
Anchor your first document in 60 seconds
- Open the anchor page and connect your wallet.
- Drop a file onto the page, or pick one. It is hashed in place.
- Add an optional label (up to 64 ASCII characters) to describe it.
- Sign the transaction in your wallet. ThesisLock polls for confirmation and shows a toast when the anchor lands on chain.
- Share the verification link, which has the form
/v/<hash>, so anyone can confirm the anchor.
Verify on chain
You do not need the frontend to verify. Any hash can be checked directly against the Hiro mainnet API, or with the SDK, CLI, or GitHub Action. The quickest manual check is a read-only contract call:
HASH=0000000000000000000000000000000000000000000000000000000000000000
curl -sX POST \
https://api.mainnet.hiro.so/v2/contracts/call-read/SP3QS6X01XKTYC84BHA0J567CZTAH67BJHN88FNVM/thesislock/is-anchored \
-H 'Content-Type: application/json' \
--data "{\"sender\":\"SP3QS6X01XKTYC84BHA0J567CZTAH67BJHN88FNVM\",\"arguments\":[\"0x0200000020${HASH}\"]}"See the Contracts and API Reference pages for the full set of read paths.