[TOC]
This rule checks an ERC-3643 Identity Registry to verify that transfer participants are registered and verified. When an identity registry is configured, the sender, recipient, and spender (in transferFrom) are all checked via isVerified().
| Parameter | Description |
|---|---|
admin |
Address granted DEFAULT_ADMIN_ROLE (implicitly holds all roles) |
identityRegistry_ |
Address of the identity registry contract (address(0) to start without a registry) |
If no identity registry is configured (address(0)), all transfers pass this rule. The registry can be set post-deployment with setIdentityRegistry.
| Constant | Code | Meaning |
|---|---|---|
CODE_ADDRESS_FROM_NOT_VERIFIED |
55 | Sender is not verified in the identity registry |
CODE_ADDRESS_TO_NOT_VERIFIED |
56 | Recipient is not verified in the identity registry |
CODE_ADDRESS_SPENDER_NOT_VERIFIED |
57 | Spender is not verified in the identity registry |
| Role | Description |
|---|---|
DEFAULT_ADMIN_ROLE |
May set or clear the identity registry address |
Sets the identity registry contract. Reverts if the address is zero. Restricted to DEFAULT_ADMIN_ROLE. Emits IdentityRegistryUpdated.
Removes the identity registry (sets it to address(0)), disabling verification checks. Restricted to DEFAULT_ADMIN_ROLE. Emits IdentityRegistryUpdated.
Returns the current identity registry address. Returns address(0) if none is set.
- If no registry is set → all transfers pass.
- Burns (
to == address(0)) always pass, even if the sender is not verified. - For all other transfers:
fromis checked if non-zero (mints wherefrom == address(0)skip the sender check).tois always checked.spenderis checked intransferFromif non-zero.
The operator deploys RuleIdentityRegistry and calls setIdentityRegistry(registry). The registry is maintained by a compliance provider who verifies investor identities. When Alice (unverified) attempts to receive tokens, isVerified(alice) returns false and the transfer is rejected with code 56. After the registry marks Alice as verified, the transfer succeeds. Calling clearIdentityRegistry() disables checks entirely.

