← Protocols
ERC-2980 — Swiss Compliant Asset Token
Standard / EIP·EVM

ERC-2980 — Swiss Compliant Asset Token

01Description

Stagnant ERC-20-compatible token specification designed to satisfy Swiss DLT-Act regulatory requirements via on-chain whitelists, frozen-account lists, and issuer-controlled forced transfers / revocation. Status: Stagnant (never reached broad adoption — most issuers prefer ERC-1400 or ERC-3643).

02Best for
  • 01Swiss DLT-Act compliant securities (legacy)
  • 02regulated asset tokens with whitelist + freeze controls
  • 03issuer-controlled forced transfers
05Prompt snippet
ERC-2980 layers compliance hooks on top of ERC-20. Maintain on-chain `whitelist(address)` and `frozenlist(address)` mappings and enforce them in `_beforeTokenTransfer`. Expose issuer-only mutators: `addAddressToWhitelist`, `removeAddressFromWhitelist`, `freeze(address)`, `unfreeze(address)`, plus `revoke(address from, address to, uint256 amount)` for court-ordered or regulator-mandated forced transfers. Emit `AddedToWhitelist`, `RemovedFromWhitelist`, `Frozen`, `Unfrozen`, `Revoked` events. Because the standard is Stagnant, treat it as a reference shape rather than a target — for new builds prefer ERC-3643 (T-REX) or ERC-1400, which have active tooling and audit trails.
06Gotchas
  • Status is Stagnant — no canonical OpenZeppelin or audited reference implementation exists. Rolling your own compliance contract for regulated securities is high-risk; consider ERC-3643 or ERC-1400 instead.
  • The `revoke` (forced-transfer) primitive concentrates extreme power in the issuer key — multisig + timelock + on-chain governance review is essential, otherwise a stolen issuer key drains every holder.
  • Whitelist/freeze checks add gas to every transfer — a naive mapping lookup adds ~2.6k gas per check; combined-list libraries (Iterable Mapping) help with enumeration but increase write costs.
  • ERC-2980 does not specify partition/tranche semantics — if your security needs lockup classes or share-class accounting, you must layer ERC-1400 partitions on top or fork the spec.
  • Most wallets and explorers render ERC-2980 tokens as plain ERC-20, hiding compliance state — users won't see why a transfer reverted unless you surface whitelist/freeze status in your dApp UI.
07Alternatives