Skip to main content

EVM (ERC20 Tokens)

Prerequisites

IFreezable

Your ERC20 token contract must implement the IFreezable interface. This interface provides freeze functionality with role-based access control. Reference implementation: Freezable Contract

Integration Steps

1

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.
The Predicate authorized freezer across all EVM chains is 0x363c256D368277BBFaf6EaF65beE123a7AdbA464
# 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>
2

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.

Stellar (Soroban)

Prerequisites

Your Soroban token contract must implement the FungibleBlockList trait from OpenZeppelin Stellar Contracts. This provides blocklist functionality with role-based access control, allowing Predicate to block and unblock addresses on your token.

Integration Steps

1

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.
The Predicate authorized account on Stellar is GCDJXKIZODN7SISUQYLIP2PDIRAGASCGV7P62ABEJE7M7ISAZVHD6SFL
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:
// During contract initialization
access_control::grant_role_no_auth(
    e,
    &predicate_address,
    &symbol_short!("blocker"),
    &admin,
);
2

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.