Skip to main content
The Chainalysis policy screens an address for sanctions and risk categories. It is useful for vault deposits, withdrawals, curator operations, or any flow where the vault needs address-level compliance and AML controls.

Deployment

FieldValue
Pack idchainalysis
PolicyData addressesVaultKit address table
Canonical deploymentsdeployments.json

Secrets

SecretRequired?Where to get it
CHAINALYSIS_SANCTIONS_KEYRequired by schemachainalysis.com
CHAINALYSIS_SCREENING_KEYRequired only for paid risk screening APIschainalysis.com
The sanctions endpoint is public/keyless, so a placeholder can satisfy schemas that require CHAINALYSIS_SANCTIONS_KEY. Use CHAINALYSIS_SCREENING_KEY only when your deployed policy calls the paid risk API.

Data Inputs

The Chainalysis data oracle returns values such as:
  • sanctioned
  • is_high_risk
  • risk_categories

Rego Checks

Use these exact Rego checks to enforce each guardrail.

Sanctioned Address

deny contains "chainalysis_sanctioned" if {
    t.deny_on_sanctioned
    v.sanctioned
}

High-Risk Address

deny contains "high_risk_address" if {
    t.deny_on_high_risk_category
    v.is_high_risk
}

Blocklisted Risk Category

deny contains "risk_category_blocklisted" if {
    some cat in v.risk_categories
    cat in t.risk_categories_blocklist
}

Final Allow Rule

allow if count(deny) == 0

Complete Policy

package chainalysis_address_screening

import future.keywords

default allow := false

t := data.params.chainalysis
v := data.wasm.chainalysis

deny contains "chainalysis_sanctioned" if {
    t.deny_on_sanctioned
    v.sanctioned
}

deny contains "high_risk_address" if {
    t.deny_on_high_risk_category
    v.is_high_risk
}

deny contains "risk_category_blocklisted" if {
    some cat in v.risk_categories
    cat in t.risk_categories_blocklist
}

allow if count(deny) == 0