Skip to main content

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

CurrencyClass A Token / Class B TokenClass A Index FeedsClass B Index Feeds
USDTkUSD-fx / kUSD-fullFX swap fees (custom tier)FX swap fees (30%) + Yield profits
IDRXkIDR-fx / kIDR-fullFX swap fees (custom tier)FX swap fees (30%) + Yield profits
tnSGDkSGD-fx / kSGD-fullFX swap fees (custom tier)FX swap fees (30%) + Yield profits
MYRCkMYR-fx / kMYR-fullFX 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:

  1. Calculate total TVL for the currency pool: TVL_total = TVL_classA + TVL_classB.
  2. Class A share = (TVL_classA / TVL_total) × LP_fee_amount × ClassA_fee_tier_multiplier.
  3. Class B share = (TVL_classB / TVL_total) × LP_fee_amount × 1.0 (standard rate).
  4. Call updateIndex(classA_share) on the kXXX-fx Vault.
  5. 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.