> ## Documentation Index
> Fetch the complete documentation index at: https://docs.predicate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Design

> How Predicate policy enforcement works

## One Abstraction

Predicate provides a single integration that abstracts away all compliance and policy enforcement complexity. Once integrated, you can get back to building what matters most—your core product—while Predicate automatically handles policy enforcement in the background.

As your organization scales across different geographies with varying regulations, or as your business requirements evolve, your team can create and modify policies without touching your smart contracts or disrupting your development workflow.

We offer two solutions:

<Tabs>
  <Tab title="For Applications">
    <img className="block dark:hidden" src="https://mintcdn.com/aethos/xFQko6f71IQeLxjv/images/system.png?fit=max&auto=format&n=xFQko6f71IQeLxjv&q=85&s=386f8f152933be3f1dec54ce8a90b35c" alt="Light mode system diagram" width="1600" height="720" data-path="images/system.png" />

    <img className="hidden dark:block" src="https://mintcdn.com/aethos/xFQko6f71IQeLxjv/images/system-dark.png?fit=max&auto=format&n=xFQko6f71IQeLxjv&q=85&s=44aa83fa8d12f6619b82489e4b8233e7" alt="Dark mode system diagram" width="1600" height="720" data-path="images/system-dark.png" />

    ### Core Components

    **Web Application**: The server hosting the application business logic that calls the Predicate API before processing each transaction

    **Predicate API**: Performant RESTful service that evaluates a transaction against a policy and returns a signed compliance attestation for onchain enforcement

    **Onchain Application**: The smart contract(s) containing your application business logic (e.g. vault) with one or more *predicated* functions

    **Predicate Registry**: Predicate-owned smart contract used to verify compliance attestations on behalf of the onchain application

    ### The E2E Attestation Process

    1. The app backend sends transaction context to the Predicate API.
    2. The Predicate API resolves the policy for the target contract and chain, then evaluates compliance.
    3. The API returns `is_compliant` and a signed attestation.
    4. The attestation is included in the onchain transaction and verified by the Predicate Registry before execution.

    <img className="block dark:hidden" src="https://mintcdn.com/aethos/qz-wtxIt_2jZVTke/images/sequence.png?fit=max&auto=format&n=qz-wtxIt_2jZVTke&q=85&s=881f9e0f1b7ad5ea77dbbcdcf3b6e783" alt="Light mode sequence diagram" width="1520" height="1092" data-path="images/sequence.png" />

    <img className="hidden dark:block" src="https://mintcdn.com/aethos/qz-wtxIt_2jZVTke/images/sequence-dark.png?fit=max&auto=format&n=qz-wtxIt_2jZVTke&q=85&s=fe09013a28b2f7bbaf7c6e6d789ccab8" alt="Dark mode sequence diagram" width="1520" height="1098" data-path="images/sequence-dark.png" />

    <Note>
      Low latency is critical to ensuring a seamless user experience.

      We’ve heavily optimized the Predicate API to deliver fast responses,
      with the average round-trip time for an attestation request consistently under 400ms.
    </Note>
  </Tab>

  <Tab title="For Assets">
    Predicate provides automated, policy-driven enforcement for regulated tokens. Your policy determines which data sources trigger which actions—from sanctions list monitoring to custom compliance criteria.

    ### Enforcement Mechanisms

    **Freezing**: Automatically freeze addresses on sanctions lists referenced in your policy

    **Pauses & Transfer Restrictions**: Restrict activity for high-risk addresses identified through your compliance criteria

    ### Core Components

    **Automated Monitoring**: Continuous monitoring of sanctions lists and data sources defined in your policy

    **Onchain Enforcement**: Actions are executed automatically on your enrolled token contracts with secure key management and transaction resilience

    **Audit Trail**: Complete history of all enforcement actions available in the dashboard
  </Tab>
</Tabs>
