Overview
Pluggable runtime extensions to DALPAsset. Fees, governance, lifecycle, and convertible instrument features — each configurable without redeployment via the ISMARTFeature interface.
In development: Token features are behind a feature flag and under active development. Interfaces and behavior may change before general availability.
Purpose: Landing page for the DALPAsset token feature system — what features are, how to choose them, how they execute, and where to find each feature's detail page.
- Doc type: Reference
- What you'll find here:
- Selection guide (features vs compliance modules vs capabilities)
- How features execute (hooks, ordering, rewriting)
- Categorized feature index with links to detail pages
- Access control summary
- Related:
What token features are
Token features are runtime-configurable extensions to DALPAsset via the ISMARTFeature interface. They extend token economics — fees, yield, governance, and lifecycle — without redeployment.
DALPAsset only. Specialized legacy types (Bond, Equity, Fund, Deposit, RealEstate) have their capabilities compiled in at deployment and cannot use this system.
Features run via lifecycle hooks in the order configured by the caller. Ordering is explicitly the caller's responsibility — there are no on-chain weights.
Selection guide
Before choosing a token feature, confirm the right tool:
| Need | Right tool |
|---|---|
| Restrict, approve, or reject transfers at legal/compliance level | Compliance Modules |
| Standalone operational workflow — distribution, treasury, settlement | Capabilities (Airdrop, Vault, XvP) |
| Extend token economics — fees, yield, governance, lifecycle | Token Features (this section) |
How features work
Features integrate through six lifecycle hooks:
| Hook | Trigger | Notes |
|---|---|---|
canUpdate(from, to, value, ...) | Pre-check before any operation | View only — reverts to block the operation |
onMinted(to, amount) | After minting | |
onBurned(from, amount) | After burning | |
onTransferred(from, to, amount) | After transfers | |
onRedeemed(from, amount) | After redemptions | |
onAttached() | After feature registration via setFeatures() |
Features with supportsRewriting() = true can modify the transfer amount in-flight (e.g., deduct a fee before the amount reaches the recipient). Features execute in configured array order.
Recommended ordering: transfer-restriction features first → fee collection → external fee hooks → analytics and governance last. Transaction Fee and External Transaction Fee rewrite amounts, so analytics features must run after them to snapshot post-fee balances. AUM Fee mints new tokens via collectFee(), so analytics features must also run after it to observe post-collection supply.
| Position | Category | Features |
|---|---|---|
| First | Transfer restriction | Maturity Redemption, Conversion (loan-side) |
| After restrictions | Fee collection | AUM Fee, Transaction Fee, Transaction Fee Accounting |
| After fee collection | External fee hooks | External Transaction Fee |
| Last | Analytics & governance | Historical Balances, Voting Power |
| Order irrelevant | No-hook utilities | Permit, Conversion Minter |
Feature index
Fees & charges
| Feature | Purpose | Detail |
|---|---|---|
| AUM Fee | Time-based management fee as % of AUM; inflationary — mints new tokens to recipient | AUM Fee |
| Transaction Fee | Per-transaction fee deducted from transfer amount; supportsRewriting = true | Transaction Fee |
| Transaction Fee Accounting | Tracks fees per transaction for off-chain reconciliation; no on-chain collection | Transaction Fee Accounting |
| External Transaction Fee | Fixed fee in a separate ERC-20 (e.g., USDC) charged on every operation | External Transaction Fee |
Governance & snapshots
| Feature | Purpose | Detail |
|---|---|---|
| Voting Power | Delegated voting with historical tracking; compatible with Governor contracts | Voting Power |
| Historical Balances | Point-in-time balance and total supply queries via checkpoints; required by Fixed Treasury Yield | Historical Balances |
| Permit | EIP-2612 gasless approvals — sign off-chain, submit on-chain; no hooks | Permit |
Lifecycle & yield
| Feature | Purpose | Detail |
|---|---|---|
| Maturity Redemption | Bond maturity lifecycle — blocks transfers post-maturity; holders redeem for denomination asset | Maturity Redemption |
| Fixed Treasury Yield | Fixed-rate yield at intervals from treasury; pull-based (holders claim); requires Historical Balances | Fixed Treasury Yield |
Transformation
| Feature | Purpose | Detail |
|---|---|---|
| Conversion (Loan) + Conversion Minter (Equity) | Convertible instrument pair — triggers, burns loan tokens, mints equity; cooperative two-contract design | Conversion |
Access control summary
| Role | Scope |
|---|---|
GOVERNANCE_ROLE | Configuration and policy changes — fee rates, triggers, schedules, treasury addresses |
CUSTODIAN_ROLE | Operational actions on behalf of holders — forced conversion, early maturity |
Deployment Architecture
Factory deployment pattern for all asset types. Covers CREATE2 deterministic addressing, initialization invariants, deployment failure modes, and custodian administrative controls.
AUM Fee
Time-based management fee on DALPAsset. Accrues over time based on total supply and is collected by minting new tokens to the fee recipient — an inflationary mechanism.