Compliance Guides
Common compliance patterns using the Sinai Standard SDK
Compliance Guides
Step-by-step guides for common regulatory patterns. Each guide shows how to configure the SDK for a specific compliance scenario.
Patterns
| Pattern | Use Case |
|---|---|
| KYC-Only Token | Only verified investors can hold or transfer |
| Taxed Token | Collect a fee on every transfer |
| Hold Period | Mandatory lock-up before transfers |
| Max Balance | Per-wallet balance caps for concentration limits |
| Confidential Transfers | Privacy-preserving transfers with auditor access |
| Full Compliance | KYC + Tax + Hold + Max Balance via Router Hook |
| Denylist | Block sanctioned addresses |
| Pause & Freeze | Emergency controls |
Initialization Order
When setting up a new compliant token, follow this order:
- Create token via
AksumKit.createToken() - Initialize hook configs (AllowlistRegistry, TaxConfig, HoldConfig, MaxBalanceConfig, RouterConfig)
- Initialize ExtraAccountMetas for each hook (required for TransferHook CPI)
- Configure hooks (add wallets, set rates, record acquisitions)
- Mint supply and distribute to investor ATAs
Critical: ExtraAccountMetas must be initialized before any
transfer_checkedcall, or the transaction will fail.
Limits
| Limit | Value | Notes |
|---|---|---|
Wallets per addWallets batch | 20 | Multiple batches supported |
| Total wallets in AllowlistRegistry | ~300 | CPI 10KB account limit |
| Tax rate max | Configurable via maxTaxBps | Hard cap set at creation |
| Hold period | Any positive i64 seconds | Typically 30–365 days |
| Exempt wallets per TaxConfig | ~300 | Same 10KB limit |