Stele Proof
Know exactly what your user agreed to.
Publish the exact version of an agreement, let people accept it with a passkey or a wallet, and keep evidence anyone can verify later — without asking anyone to trust your database.
The problem
“I agree” is usually just a database flag.
It records that someone clicked — not which text they saw, and not in a way anyone outside the company can check.
Without Stele
acceptances ───────────── user_id: 284 accepted: true
With Stele
- DocumentTerms of Service — version 3
- FingerprintSHA-256 9f2c 41aa 07de 5b13…
- Signaturethe user's passkey or wallet
- TimestampSolana slot 312,448,901
- Receiptstele-receipt-….json
1/4Without Stele, the record of an agreement is a row in the company's own database.
How it works
Five steps from document to proof.
01
Publish the exact version
Your document is canonicalized into exact bytes; its fingerprint is committed on Solana. Versions are hash-chained and cannot be edited.
02
The user accepts
With a passkey (Face ID, Touch ID, Windows Hello) or a wallet. No crypto knowledge and no fees for the user.
03
Cryptographic evidence
The user's signature over that exact version is recorded with a time; nobody can sign for a key they don't hold.
04
A receipt
A portable file with the exact text, the signature and the transaction — for the user, for you, for an auditor.
05
Anyone can verify later
The open-source verifier checks it against Solana, with Stele's servers switched off.
1/6The organization publishes Terms of Service, version 3.
What users sign
Human-readable. Bound to one version, one site, one network.
Every acceptance names exactly what is being accepted, where, and for how long. A wallet displays this text; a passkey signs a challenge computed from it while the page shows the hash-verified text.
Stele Protocol v1 - Accept Agreement I accept the exact document version below. Organization: Acme Inc. (verified: acme.example) Document: Acme Terms of Service Version: 3.0 (#3) Fingerprint: 9b367c5dc4269b205d9d7471e43542ae1276652e9914cf9f94ba76e89214253a Account: 8Z8TF2R1GoddfFGFQvK5ePNGg9bzMu1BNL4egTaGGjie Network: Solana Mainnet Issued: 2026-09-21T14:13:20Z Expires: 2026-09-21T14:23:20Z Nonce: 0-1842-5f47f81cb3721019 Requested by: acme.example
Use cases
For any agreement that has to hold up later.
SaaS terms
Which Terms of Service version every customer accepted.
Employee policies
Handbooks, security and conduct policies, acknowledged per version.
Marketplace agreements
Seller and buyer terms that hold up in a dispute.
Financial disclosures
Fee schedules and risk notices — the exact text shown.
Consent forms
Consent to a specific text, signed with a passkey.
Partner agreements
Program terms accepted by each partner account.
E-commerce terms
Return and payment terms at the moment of purchase.
Integrations
Use the page, the widget, the API or the SDK.
No blockchain knowledge is needed to integrate Proof: Stele pays the network fee and your users never see a wallet unless they want one.
Hosted acceptance page
Embedded widget
REST API
SDK
Honest boundaries
What the evidence proves — and what it doesn't.
Stele evidence proves
- This exact text existed, unaltered, under this fingerprint
- It was published by the organization's authorized key at a recorded time
- A specific passkey or wallet accepted that exact version on that site
- The acceptance was recorded on Solana at a specific slot and time
It does not, by itself, prove
- The legal identity of the person controlling the key
- That a key belongs to a person — whoever runs enrollment links keys to accounts
- What a passkey prompt displayed — it shows the site; the page shows the text
- That the person read or understood the document
- That an agreement is enforceable — that depends on law and circumstances
Running a Solana app?
Stele Gate adds enforcement on top of everything here.