msg.sender via the CallFrom precompile—your monitoring must attribute these to
the original sender. Subscribe to Blocklisted and UnBlocklisted events to
maintain a local copy of the blocklist.
Prerequisites
Before you begin:- Access to an Arc RPC endpoint (
https://rpc.testnet.arc.io) or WebSocket (wss://rpc.testnet.arc.io) - Familiarity with Ethereum event log filtering and transaction tracing
- A local database or cache for storing blocklisted addresses
- Understanding of your regulatory obligations (AML/CFT screening requirements)
Contracts and addresses
Steps
Step 1. Understand the three enforcement stages
Arc enforces the USDC blocklist at every point in a transaction’s lifecycle:The pre-mempool check means blocklisted addresses cannot submit any
transaction to Arc, not just USDC transfers. The runtime checks provide
defense-in-depth for edge cases where blocklist state changes between
submission and execution.
Step 2. Monitor blocklist events
Subscribe to theBlocklisted and UnBlocklisted events on the USDC contract
to maintain a real-time view of restricted addresses.
Step 3. Include Memo and Multicall3From in your monitoring scope
The Memo and Multicall3From contracts use the CallFrom precompile to execute calls on behalf of the original sender. The blocklist is still enforced (the CallFrom precompile checks the original sender’s blocklist status), but compliance monitors must attribute activity correctly.Step 4. Build a transaction decision tree
Use the following logic to determine whether a transaction involves a blocklisted address:Step 5. Integrate compliance vendor APIs
Connect your monitoring pipeline to Elliptic or TRM Labs for automated risk scoring and sanctions screening. These vendors provide Arc-compatible APIs for real-time transaction analysis.See also
- Compliance vendors—Elliptic and TRM Labs integration details
- Infrastructure overview—Arc architectural differences relevant to compliance monitoring