[TOC]
This rule restricts only spender-initiated transfers (transferFrom): the spender must be listed in an internal whitelist. Regular transfers (transfer) are always accepted by this rule.
| Parameter | Description |
|---|---|
admin / owner |
Access-control authority (AccessControlEnumerable or Ownable2Step variant) |
forwarderIrrevocable |
ERC-2771 trusted forwarder address for meta-transactions (use address(0) to disable) |
| Constant | Code | Meaning |
|---|---|---|
CODE_ADDRESS_SPENDER_NOT_WHITELISTED |
66 | transferFrom spender is not in the whitelist |
| Role | Description |
|---|---|
DEFAULT_ADMIN_ROLE |
Manages all roles |
ADDRESS_LIST_ADD_ROLE |
May add spenders (addAddress, addAddresses) |
ADDRESS_LIST_REMOVE_ROLE |
May remove spenders (removeAddress, removeAddresses) |
Owner can manage the spender list and transfer ownership with two-step acceptance.
detectTransferRestriction(from, to, value) always returns TRANSFER_OK.
transferred(from, to, value) is a no-op and never reverts.
detectTransferRestrictionFrom(spender, from, to, value) returns:
66ifspenderis not listed0otherwise
transferred(spender, from, to, value) reverts with RuleSpenderWhitelist_InvalidTransferFrom when the spender is not listed.
- The rule does not validate
fromortoaddresses. - The rule also supports ERC-7943 tokenId/context overloads through
RuleNFTAdapter. - Batch add/remove follows the project convention: skips duplicates/missing entries without reverting.

