How Sign Protocol Works¶
Sign Protocol stores structured, signed records and makes them easy to find again. It has two primitives, schemas and attestations, and an indexer, SignScan, that serves them across every supported chain and storage layer.
Schemas¶
A schema defines the fields an attestation contains and how they are encoded, so that the party writing a record and the party reading it agree on its format. Schemas are registered once, on-chain or on Arweave, and anyone can reuse a registered schema. Registered schemas form a public registry that you can search on SignScan before designing a new one.
Besides its field definitions, a schema records who registered it, whether attestations under it can be revoked, how long they can stay valid, where their data is stored, and an optional schema hook contract that runs on every attestation and revocation. The Schema struct lists each field.
Create a schema with the no-code Schema Builder, the SDK, or the ISP contract.
Attestations¶
An attestation is a signed record that follows a schema: a KYC result, an audit report, a signed agreement, a contribution to a project. It names its attester and recipients and can carry an expiry time, a link to an earlier attestation, and a revocation status. The Attestation struct lists each field.
The attester is normally the account that sends the transaction. With a delegate signature, another account, such as your backend, can submit the attestation on the attester's behalf and pay the gas (tutorial). Attestations are never edited: to change one, revoke it and, if needed, issue a new one that links to it.
Sign Protocol does not check data against the schema by default. A schema hook can validate it, whitelist attesters, or charge a fee, and a reverting hook cancels the attestation.
Where data is stored¶
Data can live fully on-chain (EVM, Starknet, Solana, TON), fully on Arweave, or in a hybrid of the two, with an on-chain record that points to an off-chain payload. Data Storage explains when to use each.
Reading data¶
You can read schemas and attestations directly from the contracts and from Arweave, but direct reads cannot filter or aggregate. Most applications use SignScan instead: it indexes every supported chain and storage layer, and it serves the results through the REST and GraphQL APIs, the SDK, and the explorer at scan.sign.global.
Going further¶
- Schema Hooks: custom Solidity logic on every attestation and revocation
- ZK Attestations: checking a zero-knowledge proof in a schema hook