Address Block List
Block specific wallet addresses from sending or receiving an asset. Includes configuration, transfer behavior, and identity-list boundaries.
The Address Block List compliance module blocks transfers for configured wallet addresses. A transfer fails when either the sender or recipient wallet is on the list.
Use this module when a restriction must apply to a wallet address, not to an investor identity or country claim.
Related pages: Compliance Overview, Identity Lists, Country Restrictions, and Asset Creation.
Where this module applies
| Concern | AddressBlockList behavior |
|---|---|
| Minting | Checks recipient wallet address |
| Transfers | Checks sender and recipient wallet address |
| Burns | Not applicable |
| Forced transfers | Not applicable |
Module
| Module | Granularity | Purpose | Configuration |
|---|---|---|---|
| AddressBlockList | Per wallet address | Block configured wallets from participating. | Array of EVM wallet addresses. |
AddressBlockList stores an array of blocked EVM addresses. During a transfer check, the module compares the sender and recipient against that list. If either address is blocked, the compliance check fails with the reason Address blocked.
When to use address blocking
Use AddressBlockList for immediate wallet-level controls, such as:
- Blocking a wallet that appears on a sanctions, fraud, or incident-response list
- Preventing a compromised wallet from sending or receiving an asset
- Stopping a known counterparty address without changing identity-level policy
Use Identity Lists when a restriction should follow an investor across wallets.
AddressBlockList is wallet-specific. A new wallet address is outside the block list until it is added explicitly.
Interface capabilities
| Capability | Who can call | Inputs | On-chain effect | Emits | Notes |
|---|---|---|---|---|---|
updateConfig | Engine admin delegation | Array of wallet addresses | Replaces the stored blocked-address list. | None | Empty list blocks none. |
canTransfer | Compliance engine | Token, sender, recipient, amount | Rejects if sender or recipient is blocked. | None | Fails with Address blocked. |
transferred | Compliance engine | Token, sender, recipient, amount | No state change. | None | Lifecycle hook only. |
created | Compliance engine | Token, recipient, amount | No state change. | None | Lifecycle hook only. |
destroyed | Compliance engine | Token, holder, amount | No state change. | None | Lifecycle hook only. |
Configuration
Configure the module with the wallet addresses that must be blocked for this asset. The address list may be empty; an empty list means no wallet is blocked by this module.
["0x742d35Cc6634C0532925a3b844Bc9e7595f6eD2"]For API-style configuration, use the address block list compliance type with an array of addresses as values.
{
"typeId": "address-block-list-v2",
"values": ["0x742d35Cc6634C0532925a3b844Bc9e7595f6eD2"],
"module": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F"
}Key invariants
- AddressBlockList checks wallet addresses directly; it does not resolve or inspect an OnchainID identity.
- Transfers fail when either the sender or the recipient is in the blocked-address list.
- Updating the configuration replaces the module's stored address list.
- An empty address block list blocks no transfers by itself.
- Multiple compliance modules combine with AND semantics: every enabled module must pass before a transaction succeeds.
Operational signals
The module does not emit dedicated events. Monitor failed transactions for compliance failures with the Address blocked reason when a blocked sender or recipient attempts to participate in a transfer.
Failure modes and edge cases
- Blocking one wallet does not block other wallets controlled by the same investor. Use identity-level blocking when the policy must follow the investor.
- Adding a wallet after it received tokens does not burn or freeze the balance. The wallet is blocked when it tries to send, or when another address tries to send to it.
- Address-level blocking works without identity lookup, so it can be used for wallets that do not have a registered identity.
See also
- Compliance Overview: module architecture and policy selection
- Identity Lists: identity-level allow and block lists
- Country Restrictions: jurisdiction-level controls
- Create Asset: selecting compliance modules during asset creation
Identity Lists
IdentityAllowList, IdentityBlockList, and AddressBlockList modules for granular access control. Covers private placement whitelists, sanctions screening, and the distinction between identity-level and address-level blocking.
Identity Verification
SMARTIdentityVerification module with full RPN expression system. Covers KYC/AML/ACCREDITED/CONTRACT claim topics, AND/OR/NOT operators, exemption support, and real-world expression examples.