09CompaniesCompliance controls
Every action leaves a reason.
Per-raise freeze, clawback and an audit log anyone can read.
Every raise names a compliance account, either the company itself or its transfer agent. That account, and only that account, can act on that raise's holders. dvdnd has no such power.

What the compliance account can do
- Freeze a holder (
freeze_holder), for example after a move to the US or a court order. The balance stays; transfers stop. - Unfreeze them (
unfreeze_holder). A lock-up freeze can't be lifted early this way. - Claw back tokens from a wallet (
clawback), for a court order or a lost wallet. - Hand the role on to a transfer agent (
set_raise_compliance).
Each action requires a reason, emitted on-chain in a ComplianceAction event and shown in the console's audit log.
On-chain
- Holders come from Horizon (every account with a trustline, with its authorization flags) plus vault positions.
- The audit log is rebuilt from the compliance accounts' transaction history, so anyone can audit it independently.
Legal
- Keeping gatekeeping with the issuer or its registered transfer agent is part of what keeps dvdnd from acting as a broker or transfer agent.
- Recorded reasons give regulators and holders a complete history of every intervention.