# Address Block List

Source: https://docs.settlemint.com/docs/architecture/security/compliance/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](/docs/architecture/security/compliance), [Identity Lists](/docs/architecture/security/compliance/identity-lists), [Country Restrictions](/docs/architecture/security/compliance/country), and [Asset Creation](/docs/user-guides/asset-creation/create-asset).

## Where this module applies [#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]

| 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 [#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](/docs/architecture/security/compliance/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 [#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 [#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.

```json
["0x742d35Cc6634C0532925a3b844Bc9e7595f6eD2"]
```

For API-style configuration, use the address block list compliance type with an array of addresses as `values`.

```json
{
  "typeId": "address-block-list-v2",
  "values": ["0x742d35Cc6634C0532925a3b844Bc9e7595f6eD2"],
  "module": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F"
}
```

## Key invariants [#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 [#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 [#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 [#see-also]

* [Compliance Overview](/docs/architecture/security/compliance): module architecture and policy selection
* [Identity Lists](/docs/architecture/security/compliance/identity-lists): identity-level allow and block lists
* [Country Restrictions](/docs/architecture/security/compliance/country): jurisdiction-level controls
* [Create Asset](/docs/user-guides/asset-creation/create-asset): selecting compliance modules during asset creation
