kToken Architecture — Dual Index Model
To enforce clean separation between Class A and Class B economics, the protocol maintains two kToken variants per currency, each with its own Liquidity Index.
1. kToken Variants
| Currency | Class A Token / Class B Token | Class A Index Feeds | Class B Index Feeds |
|---|---|---|---|
| USDT | kUSD-fx / kUSD-full | FX swap fees (custom tier) | FX swap fees (30%) + Yield profits |
| IDRX | kIDR-fx / kIDR-full | FX swap fees (custom tier) | FX swap fees (30%) + Yield profits |
| tnSGD | kSGD-fx / kSGD-full | FX swap fees (custom tier) | FX swap fees (30%) + Yield profits |
| MYRC | kMYR-fx / kMYR-full | FX swap fees (custom tier) | FX swap fees (30%) + Yield profits |
2. Index Update Mechanics
FX Swap Fee Distribution
When an FX swap executes and generates the 30% LP share, the fee is distributed proportionally by TVL across both classes, but at different rates:
- Calculate total TVL for the currency pool:
TVL_total = TVL_classA + TVL_classB. - Class A share =
(TVL_classA / TVL_total) × LP_fee_amount × ClassA_fee_tier_multiplier. - Class B share =
(TVL_classB / TVL_total) × LP_fee_amount × 1.0(standard rate). - Call
updateIndex(classA_share)on the kXXX-fx Vault. - Call
updateIndex(classB_share)on the kXXX-full Vault.
Partner Fee Tier Multiplier
The ClassA_fee_tier_multiplier is a configurable parameter per partner. An issuer like IDRX might have a multiplier of 0.5 (earning 50% of the standard rate) because their primary value is strategic liquidity, not yield-seeking. Another Class A partner might have 1.0 if the commercial terms differ.
Yield Profit Distribution
When the Yield Engine harvests profits from deployed strategies:
- Yield profits are calculated per currency pool.
- 100% of yield profits go to
updateIndex()on the kXXX-full Vault only. - The kXXX-fx index is never updated by yield events. Class A LPs are completely firewalled.
Yield Loss Firewall
If a yield strategy underperforms or loses capital:
- The loss is absorbed entirely by the kXXX-full Liquidity Index (Class B holders).
- The kXXX-fx index is unaffected. Class A LPs see zero impact.
- The Yield Pool balance decreases, but this does NOT propagate to Reserve Pool balance calculations.
- If Yield Pool recall is triggered (Smart Rebalancing), the system only recalls the net positive portion. Underwater positions are written down within Yield Pool, not transferred to Reserve.