Identity
IdentityRegistry is the chain's single source of facts about wallets. It answers one question for every other contract: what do we know about this address? It does not decide what an asset allows; that is up to each token.
What is stored
| Field | Meaning |
|---|---|
kycCleared | A registrar has completed KYC/AML for the holder of this wallet |
kycExpiresAt | When that KYC lapses (0 = no expiry). Expired KYC fails every KYC check. |
accredited | The holder qualifies as an accredited / professional investor under the registrar's assessment |
jurisdiction | A short code such as US, DE or US-NY (empty = unknown) |
status | Active or Frozen. A frozen account fails every gate on every token. |
did | Optional W3C DID (did:…) pointing to off-chain credentials |
registrar, createdAt, updatedAt | Who last wrote the record, and when |
No personal data goes on-chain. Names, documents and addresses stay with the registrar. The chain stores only the flags above, which is enough for contracts to enforce rules and for regulators to audit decisions.
complianceOf(address) returns everything a token needs in one call: known, sanctioned, frozen, kycValid, accredited and jurisdiction. kycValid already accounts for existence, freeze and expiry.
Registrars
- Governance appoints registrars with
addRegistrar(address, displayName)and removes them withremoveRegistrar. The number of registrars is capped. - A registrar can set or update any account with
setAccount(subject, did, kycCleared, accredited, jurisdiction, kycExpiresAt), and freeze or unfreeze any account with a reason. - A registrar cannot sanction an address, create tokens or move funds.
All registrars are trusted equally. Any registrar can overwrite a record written by another registrar, or freeze any account. Every write emits AccountSet, AccountFrozen or AccountUnfrozen with the registrar's address, so misuse is visible. Removing a registrar is governance's remedy.
Sanctions
- Only governance can add or remove a sanction:
addSanction(address, listSource, reason)andremoveSanction(address). - The sanctions set is enumerable (
sanctionedCount,sanctionedAt), which is how the sequencer's restricted list is built. See Compliance. - A sanctioned address fails every application gate: token transfers, subscriptions, dividend claims, redemptions, refunds and token creation. It is also blocked from transacting at all by the sequencer filter once the list refreshes.
- Sanctions are public by design, including their history (
SanctionAdded/SanctionRemovedevents).
Using identity as an investor
- Complete onboarding with a registrar (off-chain).
- The registrar writes your record on-chain. The Account page shows exactly what is stored.
- Each asset page shows whether your wallet meets that asset's rules before you act.
- Keep your KYC current. On KYC-gated tokens an expired KYC blocks sending, receiving, claiming dividends and completing redemptions until a registrar renews it.
Events
RegistrarAdded, RegistrarRemoved, AccountSet, AccountFrozen, AccountUnfrozen, SanctionAdded, SanctionRemoved.