> ## 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.

# Get Started

> Integrate Asset Compliance into your token

## EVM (ERC20 Tokens)

### Prerequisites

<Card title="IFreezable" icon="lock" href="https://github.com/predicatelabs/predicate-contracts/blob/main/src/interfaces/IFreezable.sol">
  Your ERC20 token contract must implement the IFreezable interface.
  This interface provides freeze functionality with role-based access control. Reference implementation: [Freezable Contract](https://github.com/predicatelabs/predicate-contracts/blob/main/src/Freezable.sol)
</Card>

### Integration Steps

<Steps>
  <Step title="Grant Freeze Manager Role">
    Grant Predicate's freeze manager address the FREEZE\_MANAGER\_ROLE. This allows Predicate to enforce compliance actions on your token contract.

    <Info>
      The Predicate authorized freezer across all EVM chains is `0x363c256D368277BBFaf6EaF65beE123a7AdbA464`
    </Info>

    <CodeGroup>
      ```bash Foundry (cast) theme={null}
      # Grant freeze manager role to Predicate
      cast send <YOUR_TOKEN_ADDRESS> \
        "grantRole(bytes32,address)" \
        $(cast keccak "FREEZE_MANAGER_ROLE") \
        0x363c256D368277BBFaf6EaF65beE123a7AdbA464 \
        --rpc-url <RPC_URL> \
        --private-key <PRIVATE_KEY>
      ```

      ```solidity Solidity theme={null}
      // In your contract's initialization or admin function
      _grantRole(FREEZE_MANAGER_ROLE, 0x363c256D368277BBFaf6EaF65beE123a7AdbA464);
      ```
    </CodeGroup>
  </Step>

  <Step title="Enroll in Dashboard">
    Complete enrollment through the Predicate application.

    * Request Access: Contact the Predicate team for an invitation.

    * Add Your Token: Add a new project to the Predicate Application by supplying your Asset details

    Once enrolled, Predicate will continuously monitor the data sources defined in your policy and enforce actions as addresses are detected. You can return to the dashboard anytime to review enforcement activity.
  </Step>
</Steps>

## Stellar (Soroban)

### Prerequisites

Your Soroban token contract must implement the `FungibleBlockList` trait from [OpenZeppelin Stellar Contracts](https://docs.openzeppelin.com/contracts-stellar). This provides blocklist functionality with role-based access control, allowing Predicate to block and unblock addresses on your token.

### Integration Steps

<Steps>
  <Step title="Grant Blocker Role">
    Grant Predicate's Stellar account the blocker role on your token contract. This allows Predicate to enforce compliance actions by blocking and unblocking addresses.

    <Info>
      The Predicate authorized account on Stellar is `GCDJXKIZODN7SISUQYLIP2PDIRAGASCGV7P62ABEJE7M7ISAZVHD6SFL`
    </Info>

    When deploying your contract, pass Predicate's address as the `blocker` parameter in your constructor, or grant the role via your contract's access control functions:

    ```rust theme={null}
    // During contract initialization
    access_control::grant_role_no_auth(
        e,
        &predicate_address,
        &symbol_short!("blocker"),
        &admin,
    );
    ```
  </Step>

  <Step title="Enroll in Dashboard">
    Complete enrollment through the Predicate application.

    * Request Access: Contact the Predicate team for an invitation.

    * Add Your Token: Add a new project to the Predicate Application by supplying your Stellar asset details

    Once enrolled, Predicate will continuously monitor the data sources defined in your policy and enforce actions as addresses are detected. You can return to the dashboard anytime to review enforcement activity.
  </Step>
</Steps>
