Developers
Architecture Overview
Hub-and-Spoke Model
xTokens are omnichain OFTs that use a hub-and-spoke architecture powered by LayerZero V2:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Arbitrum │ │ HyperEVM │ │ Base │
│ (Spoke) │◄───────►│ (Hub) │◄───────►│ (Spoke) │
└─────────────┘ └─────────────┘ └─────────────┘
User xTokens Logic User
Interaction Asset Management Interaction
Share MintingKey Concepts
Share Tokens
Share tokens represent proportional ownership in the vault:
Decimals: Always 18 decimals across all chains
Ticker: Specific to each xToken (e.g., xHYPE, xBTC)
Cross-Chain: Can be transferred between any supported chain via LayerZero
Yield-Bearing: Share value increases as vault assets grow (tracked via NAV)
The "Hub Share" are managed by the ShareManager contract while the cross-chain "Spoke Share" are managed by ShareOFT.
This ensure the ShareManager on the hub (HyperEVM) always hold the total supply of shares available on all supported chain.
The ShareManager (Hub Share) is wrapped by an OFTAdapter for cross-chain capacity and linking with the Spoke Share.
Deposit
Deposits are done through the DepositPipe contracts, there is 1 DepositPipe per asset per xToken.
USDT0
6
1000000 = 1 USDT0
USDC
6
1000000 = 1 USDC
USDH
6
1000000 = 1 USDH
Note: Each XToken may support different assets. Check the specific XToken documentation for supported assets.
Redemption Asset
Redemptions are done through the RedemptionPipe contract, there is only 1 RedemptionPipe per xToken. As of now, shares can only be redeemed for USDT0.
OFT (Omnichain Fungible Tokens)
LayerZero V2 OFT enables cross-chain token transfers:
AssetOFT: Wraps deposit assets (USDC, USDT0, etc.) for cross-chain transfers
ShareOFT: Wraps vault shares for cross-chain transfers
OFTAdapter: For tokens with existing supply (e.g., on the hub chain)
Compose Messages: Trigger vault operations (deposits/redemptions) on message receipt
Oracle
NAV determines the share price:
Share Price = Total NAV / Total Share Supply
Share Price = NAVOracle.getNAV() / ShareManager.totalSupply()18 Decimals: NAV is always tracked in 18 decimals internally
On-Chain Oracle: Real-time NAV available via
NAVOracle.getNAV()Dynamic: Updates with deposits, redemptions, and vault performance
A Pyth price feed is also available for each xTokens.
Last updated