testnet
GitHub

Guide: PCL Policy Types In-Depth

integration intermediate

A detailed look at each of Maroo's built-in PCL policy templates, including their purpose, parameter schemas, and example configurations.

Prerequisites

  • Understanding of the PCL Policy Structure concept.

DENYLIST_POLICY

Blocks transactions from a list of addresses.

Schema: {"denylist": ["address"]}
{
  "template_id": "DENYLIST_POLICY",
  "parameters": "ewogICJkZW55bGlzdCI6IFsKICAgICJtYXJvbzFzZjlqZ2M3bWVlZnhxZzVzZzR3dGNwZ25oZ21xZ3h0cW55eGgiLAogICAgIm1hcm9vMWw0eGNzY3h5Z3J5a3J1Z2N0Z3JzZ3J1cHpzZzVjZzJ4cW54eCIKICBdCn0="
  // Decoded JSON: 
  // {
  //   "denylist": [
  //     "maroo1sf9jgc7meefxqg5sg4wtcpgnhgmqgxtqnyxh",
  //     "maroo1l4xcscxygrykrugctgrsgruspzg5cg2xqnxq"
  //   ]
  // }
}
Note: This policy is checked against the transaction's sender. It's a simple and effective way to block specific accounts.

VOLUME_POLICY

Enforces minimum or maximum transfer amounts for specified denominations.

Schema: {"<denom>": {"min_limit": "int,nullable", "max_limit": "int,nullable"}}
{
  "template_id": "VOLUME_POLICY",
  "parameters": "ewogICJva3J3IjogewogICAgIm1heF9saW1pdCI6ICIxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIC8vIDEwMDAgT0tSVwogICAgIm1pbl9saW1pdCI6ICIxMDAwMDAwMDAwMDAwMDAwMCIsICAgICAgLy8gMC4xIE9LUlcKICB9LAogICJ1c3Rha2UiOiB7CiAgICAibWF4X2xpbWl0IjogIjUwMDAwMDAwMDAiCiAgfQp9"
  // Decoded JSON: 
  // {
  //   "okrw": {
  //     "max_limit": "1000000000000000000000", // 1000 OKRW
  //     "min_limit": "100000000000000000"      // 0.1 OKRW
  //   },
  //   "ustake": {
  //     "max_limit": "5000000000"
  //   }
  // }
}
Tip: You can specify limits for multiple denoms in a single policy. `min_limit` and `max_limit` are both optional.

EAS_POLICY

Requires the sender to have a specific EAS attestation.

Schema: {"eas_contract": "string", "index_contract": "string", "schema_uid": "string"}
{
  "template_id": "EAS_POLICY",
  "parameters": "ewogICJlYXNfY29udHJhY3QiOiAiMHg0MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIxIiwKICAiaW5kZXhfY29udHJhY3QiOiAiMHhBYjU4MDFlN0YyZjljNzliOGQ3NkY4YjgyYTViN0U3OTlkZ0Y5NjYiLAogICJzY2hlbWFfdWlkIjogIjB4Y2E4YjQyZDBjYjI2ZTI4ZTU2Y2QxYjQ2YjE5Y2Y4Y2Y4YjM3Y2Y3YjQxYjI3YjQzYjU3YjU3YjU3YjU3YjU3YjU3IgogfQ=="
  // Decoded JSON: 
  // {
  //   "eas_contract": "0x4200000000000000000000000000000000000021",
  //   "index_contract": "0xAb5801e7F2f9c7b8d76f8b82a5b7E799d0f966",
  //   "schema_uid": "0xca8b42d0cb26e28e56cd1b46b19cf8cf8b37cf7b41b27b43b57b57b57b57b57"
  // }
}
Warning: Ensure the EAS and Indexer contract addresses are correct for your target network (mainnet, testnet, or local).

OKRW_EAS_TRANSFER_LIMIT_POLICY

Allows non-attested users to transact up to a certain limit.

Schema: {"eas_contract": "string", "index_contract": "string", "schema_uid": "string", "transfer_limit_amount": "string"}
{
  "template_id": "OKRW_EAS_TRANSFER_LIMIT_POLICY",
  "parameters": "ewogICJlYXNfY29udHJhY3QiOiAiMHg0MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIxIiwKICAiaW5kZXhfY29udHJhY3QiOiAiMHhBYjU4MDFlN0YyZjljNzliOGQ3NkY4YjgyYTViN0U3OTlkZ0Y5NjYiLAogICJzY2hlbWFfdWlkIjogIjB4Y2E4YjQyZDBjYjI2ZTI4ZTU2Y2QxYjQ2YjE5Y2Y4Y2Y4YjM3Y2Y3YjQxYjI3YjQzYjU3YjU3YjU3YjU3YjU3YjU3IiwKICAidHJhbnNmZXJfbGltaXRfYW1vdW50IjogIjEwMDAwMDAwMDAwMDAwMDAwMDAwMCIKfQ=="
  // Decoded JSON: 
  // {
  //   "eas_contract": "0x4200000000000000000000000000000000000021",
  //   "index_contract": "0xAb5801e7F2f9c7b8d76f8b82a5b7E799d0f966",
  //   "schema_uid": "0xca8b42d0cb26e28e56cd1b46b19cf8cf8b37cf7b41b27b43b57b57b57b57b57",
  //   "transfer_limit_amount": "10000000000000000000"
  // }
}
Note: This policy only applies to transfers of the native denomination (OKRW). The `transfer_limit_amount` is the maximum value a non-attested user can send.
Source: maroo
ESC
Type to search