What is Compliance Shield?
Compliance Shield is Engram’s built-in sanctions screening service. It checks blockchain addresses against multiple global sanctions databases and returns verifiable results — backed by cryptographic Merkle proofs anchored to a smart contract.Multi-source screening
OFAC SDN, OpenSanctions, and community reports — all in one call. Every available dataset is used automatically.
Merkle-verified
Every sanctioned address is part of an on-chain Merkle tree. Proofs can be verified atomically inside smart contract transactions.
Any chain
Works with Ethereum, Bitcoin, Solana, Stellar, Tron, and more. One API, every chain.
Agent consensus
AI agents can report suspicious addresses. When enough agents independently flag the same wallet, it’s auto-flagged on-chain.
Data Sources
| Source | Coverage | Update Frequency |
|---|---|---|
| OFAC SDN | US Treasury sanctions (788 crypto addresses) | Every server restart |
| OpenSanctions | Global sanctions (1,497 crypto addresses) | Every server restart |
| Community | Agent-submitted reports with consensus | Real-time |
Architecture (v0.5.0)
Compliance Shield uses a Merkle tree to represent the entire sanctions dataset. The tree root is pushed to a smart contract after each ingestion. This gives you two verification paths:On-Chain (Smart Contract)
DeFi applications call the contract directly to verify proofs atomically inside their own transactions:Off-Chain (REST API)
AI agents and off-chain apps call the Engram API:Agent Consensus
Any agent can report a suspicious address viareport_address(). Reports are tracked on-chain with deduplication:
- Each reporter can only flag a given address once
- When the number of unique reporters reaches the threshold (default: 10), the address is auto-flagged on-chain
- DeFi apps can check
is_flagged(address)pre-emptively, or usereports_for(address)to see the current count
Agents don’t need to wait for the threshold.
reports_for() returns the live count from report #1, so agents can implement their own risk scoring.Quick Start
DApp Integration (On-Chain)
Any smart contract or DApp on Stellar/Soroban can call the Compliance Oracle contract directly — no API key needed.Contract Address
Public Functions (Anyone Can Call)
| Function | Description | Cost |
|---|---|---|
verify_merkle_proof(addr, proof, leaf_index) → bool | Verify a single address is in the sanctions dataset | Free |
verify_batch_proofs(addrs, proofs, indices) → Vec<bool> | Batch verify up to 200 addresses | Free |
merkle_root() → BytesN<32> | Get the current Merkle root hash | Free |
data_hash() → BytesN<32> | SHA-256 of the full off-chain dataset | Free |
entity_count() → u32 | Total sanctioned addresses in the tree | Free |
last_updated() → u64 | Ledger timestamp of the last root update | Free |
is_flagged(addr) → bool | Check if an address was auto-flagged by agent consensus | Free |
reports_for(addr) → u32 | Number of unique reporters for an address | Free |
report_address(reporter, target, reason) → u32 | Submit a community report (requires auth) | Free |
DeFi Pre-Transaction Check
Useverify_merkle_proof() atomically inside your own transactions to block sanctioned addresses:
Leaf Encoding
The Merkle tree uses this leaf hash:Typical DApp Flow
Pricing
| Tier | Cost |
|---|---|
| Merkle proofs (single + batch) | Always free |
| Merkle root status | Always free |
| On-chain contract calls | Always free (gas only) |
| Community reports | Always free |
| Stats & proof lookups | Always free |
| Full screening (first 10/hour) | Free |
| Full screening (additional) | 1 credit each |

