Skip to main content

Overview

Automated freeze enforcement requires two capabilities: your asset must expose an interface that can prevent an address from transferring funds, and an authorized party (Predicate) must be able to invoke it. The steps below walk you through adding this interface to your contract/program, granting Predicate the necessary authorization, and enrolling your asset so that enforcement runs automatically.

Prerequisites

IFreezable

Your asset contract must implement the IFreezable interface. This interface provides freeze functionality with role-based access control.

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 asset contract.
The Predicate authorized freezer across all EVM chains is 0x363c256D368277BBFaf6EaF65beE123a7AdbA464
# Grant freeze manager role to Predicate
cast send <YOUR_ASSET_ADDRESS> \
  "grantRole(bytes32,address)" \
  $(cast keccak "FREEZE_MANAGER_ROLE") \
  0x363c256D368277BBFaf6EaF65beE123a7AdbA464 \
  --rpc-url <RPC_URL> \
  --private-key <PRIVATE_KEY>
// In your contract's initialization or admin function
_grantRole(FREEZE_MANAGER_ROLE, 0x363c256D368277BBFaf6EaF65beE123a7AdbA464);
2

Enroll in Dashboard

Complete enrollment through the Predicate application.
  • Request Access: Contact the Predicate team for an invitation.
  • Add Your Asset: 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.