Skip to main content

Before you start

Application compliance requires a deployed contract that inherits PredicateClient. A policyID set on the contract binds it to your offchain policy configuration — this is what allows anyone with a valid attestation to access your application. The Predicate API uses the contract address to look up the associated policy and evaluate attestation requests against it.
Offchain-only enforcement? A deployed contract is still required to associate a policy. If you don’t need onchain enforcement right now, deploy the minimal PredicateHolding contract to any supported chain then skip to step 2.

Integration Steps

1

Onchain Integration

Require users to provide an authentic attestation from Predicate in order to access your business logic
2

Dashboard Setup

Configure your organization, set your policy, and generate an API key
Requires an invitation from the Predicate team, please contract us to request access
3

Offchain Integration

Fetch and embed Predicate attestations into transactions on behalf of yourself or your users so that they can be enforced onchain.

Supported Blockchains

Application Compliance is available on any chain where the Predicate Registry has been officially deployed.

Predicate Registry

The Predicate Registry is the core onchain contract which applications leverage to verify compliance attestations. It has two primary responsibilities:
  • Attester management — Stores authorized attester addresses that can sign attestations
  • Attestation verification — Validates the authenticity of attestations

FAQ

Predicate Labs owns and operates the registry.
The registry uses the ERC-1967 upgradeable proxy pattern:
  • Proxy contract — The address you interact with, which delegates calls to the implementation
  • Implementation contract — Contains the logic and can be upgraded by the owner
  • Two-step ownership — Uses Ownable2StepUpgradeable so ownership transfers require explicit acceptance
Keys are rotated on a frequent basis. New keys are registered before old keys are deregistered, ensuring zero downtime during rotation.
ECDSA on EVM chains, Ed25519 on Solana.
Each attestation includes a unique UUID that is marked as spent after validation. The chain ID is also included in the signed hash to prevent cross-chain replay.