SettleMint
SecurityCompliance Modules

Address Block List

Block specific wallet addresses from sending or receiving an asset. Includes configuration, transfer behavior, and identity-list boundaries.

Use the Address Block List compliance module when a rule must target a specific EVM wallet. DALP rejects a matching compliance check when either the sender or recipient is on the stored list.

Choose Address Block List for wallet-level blocking. If a rule must follow an investor across wallets, use Identity lists. If a rule is jurisdiction-based, use Country restrictions.

For broader policy design, see Asset policy, Compliance overview, and Asset creation.

Where this module applies

ConcernBehavior
MintingChecks the recipient address.
TransfersChecks both sender and recipient addresses.
BurnsNo address block check in the destroy hook.
Forced transfersNo separate forced-transfer rule in this module.

Module behaviour

ModuleGranularityPurposeConfiguration
AddressBlockListPer walletBlock 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 these wallet-level controls:

  • 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

CapabilityWho can callInputsOn-chain effectEmitsNotes
updateConfigCompliance engine or module adminABI-encoded array of wallet addressesReplaces the stored blocked-address list.NoneEmpty list blocks none.
canTransferCompliance engineToken, sender, recipient, amountRejects if sender or recipient is blocked.NoneFails with Address blocked.
transferredCompliance engineToken, sender, recipient, amountNo state change.NoneLifecycle hook only.
createdCompliance engineToken, recipient, amountNo state change.NoneLifecycle hook only.
destroyedCompliance engineToken, holder, amountNo state change.NoneLifecycle hook only.

Configuration

Configure the module with the EVM addresses that must be blocked for this asset. The contract stores the list as an array.

Updating the configuration replaces the full stored list. Include every address that must remain blocked in the new configuration. An empty list is valid and blocks no addresses.

["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"
}

Before you submit an update, decide whether the restriction belongs at wallet level or identity level:

Policy decisionUse AddressBlockList?Better fit
Block one compromised walletYesAddress Block List
Block a sanctions-listed wallet addressYesAddress Block List
Block an investor across all registered walletsNoIdentity Lists
Block a jurisdictionNoCountry Restrictions

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

On this page