Skip to content

Latest commit

 

History

History
82 lines (54 loc) · 2.99 KB

proofs.mdx

File metadata and controls

82 lines (54 loc) · 2.99 KB
title Proofs
description Create, reuse, and share verifiable proof instead of checking twice.
icon shield-check

A proof is the saved result of a completed check, permission, or action. Keep the receipt, then read its current status whenever a decision depends on it.

What a proof records

What was checked, who or what it describes, the outcome, who issued it, its current status and expiry, its visibility, and any scope needed to evaluate it.

Outcome and status are separate. A proof that passed earlier never overrides expiry or revocation.

A receipt is the same kind of record for a completed action, payment, or job run.

Proof ID

The API field for the proof ID is qHash. Store it with the user or record it belongs to.

contentHash identifies the checked content or file. It is not the proof ID.

Read a proof

From How
A browser https://proofable.me/proof/{qHash}
The SDK client.getProof(qHash), or client.getPrivateProof(qHash, wallet) for a private proof
The API GET https://api.proofable.me/api/v1/proofs/{qHash}
MCP proofable_proofs_get

Visibility

Mode privacyLevel publicDisplay Who can read it
Private private false The owner, and anyone they grant access. The default.
Unlisted public false Anyone with the proof ID. Not listed.
Listed public true Anyone. Discoverable.

Unlisted proofs are public to anyone who has the proof ID. To share a private proof without making it public, create a signed access grant with POST /api/v1/verification/access/grant.

client.verify() and VerifyGate create private proofs unless you choose otherwise.

Storage

Proofs are stored offchain by default. A blockchain record is optional: request it with options.publishToHub: true or targetChains. IPFS pinning is optional with enableIpfs: true. Neither changes who can read the proof, and neither replaces a status check.

Reuse

Before a protected action, check the current proof instead of repeating the original check. Reuse verification

Revoke

await client.revokeOwnProof(qHash, wallet);

Or call POST /api/v1/proofs/revoke-self/{qHash}. A revoked proof stops satisfying any gate.

Portable proofs

Wallet-signed requests return a portable envelope another system can check without calling Proofable:

import { verifyPortableProofEnvelope } from '@proofable/sdk';

const result = await verifyPortableProofEnvelope(envelope);
if (!result.valid) throw new Error(result.errors.join('; '));

The envelope proves who signed the request. Current status still comes from Proofable. Portable Proof

Guides

Status, freshness, and revocation. Typed links and version chains.