GiftableToken
ERC-20 voucher: mint, optional expiry, writer minters.
Proxy: yes.
initialize(name, symbol, decimals, owner, expiresAt) // expiresAt=0 → never
mintTo(to, amount) // owner or writer
burn(amount) // owner, from own balance
applyExpiry() // anyone; no-op if expiresAt=0
addWriter / deleteWriter / isWriterBehaviour
- After expiry, every transfer including mint reverts
TokenExpired. - Expiry flips on the first transfer at
block.timestamp >= expiresAt, or viaapplyExpiry(). - Public:
expired,totalMinted,totalBurned.
Events: Mint, Burn, Expired, WriterAdded, WriterRemoved.
Many instances, one implementation (0x34445d13…df2d8). Deploy a proxy per voucher. Symbol must be unique in each TokenUniqueSymbolIndex you register it into.