- A policy is a collection of
ruleswith defined criteria. - Each rule contains a specified
action,operation, andcriteria:- An
actioncan eitheracceptorrejecta transaction if the criteria in the rule are met. criteriais an array of logical expressions. All parameters must evaluate to true for the action to be applied.- An
operationcorresponds to a CDP v2 API:signEvmTransactionorsignSolTransactionfor signing transactions (to set a transaction limit)sendEvmTransactionfor signing a transaction and sending it to a supported network
- An
- A rule indicates how an operation should behave, specifying whether a request with defined criteria should be accepted or rejected. Only
signEvmTransactionandsignSolTransactionoperations are currently supported.
Policy Scope
Policies can be applied at the project and/or account level:- Project-level policy: A
project-level policy applies to all accounts in a CDP Project. Only one project-level policy can be applied to accounts within a CDP Project at any given time. - Account-level policy: An
account-level policy applies to one or more accounts. An account can have at most one account-level policy at any given time. Thus, a single account can be assigned at most two policies at any given time: one project-level policy and one account-level policy.
scope field of a policy:
Policy Evaluation
Project-level policies are evaluated first, followed by account-level policies. The Policy Engine will process the request against each rule in the order it is defined within therules array:
- If the rule’s
criteria(processed as a logical AND operation applied to a list of independently evaluated boolean expressions) are met,acceptorrejectbehavior is applied immediately and the engine stops further evaluation of the policy. - If after policy evaluation, no rule’s
criteriaare met, the engine moves to processing the next policy (i.e., anaccount-level policy). - If no further policies exist, the request is rejected.
- Evaluate the first rule: For a
signEvmTransactionrequest, accept the request if the transaction is less than or equal to 1000000000000000000 wei OR - Evaluate the second rule: If the request is a
signEvmTransactionrequest, accept the request if the transaction is less than or equal to 2000000000000000000 wei AND the request is made to the address0xEeeeeeEeeeEeEeeEeEeeEEEeeeeEeeeeeeeEEeE. - If the request does not meet the criteria of either rule, the engine will move on to evaluate an
account-level policy (if one exists). - Otherwise, the request is rejected.
Policy Application
Project-level policies are applied to all accounts in a CDP Project. They will apply retroactively even if the project-level policy is created after the account was created. To disable a project-level policy, you must remove the project-level policy from the CDP Project using thedeletePolicy operation.
Account-level policies can be applied in two ways:
- By specifying the
policiesfield in the request body of thecreateEvmAccountandcreateSolAccountoperations. - By specifying the
policiesfield in the request body of theupdateEvmAccountandupdateSolanaAccountoperations.
Criteria
The following criteria are supported:SignEvmTransaction Criteria
ethValue A criterion based on the value of the transaction. The transaction’svalue field is compared to the criterion’s ethValue field using the operator field.
evmAddress
A criterion based on the recipient address of the transaction. The transaction’s to field is compared to the criterion’s addresses field using the operator field.
SignSolTransaction Criteria
solAddress A criterion based on the recipient addresses of the transaction. The criterion’saddress field is compared to the list of addresses in the transaction’s accountKeys (for legacy transactions) or staticAccountKeys (for V0 transactions) array using the operator field.