Skip to main content
All YieldPoint vault state lives on Base (the hub). Spoke chains only hold token balances and allowances — the familiar ERC-20 surface. This page lists exactly which data lives where, and which operations execute on which chain.

Hub vs spoke state

Local ERC-20 state (balances, allowances) lives on each spoke chain because the OFT contracts track it there. Everything else — supply, share price, withdrawal queue — lives on the hub because those values are global to the protocol and must be consistent regardless of which chain you query from.
DataLocationRationale
balanceOf(user)SpokeOFT tracks local balances per chain.
allowance(owner, spender)SpokeERC-20 allowances are local.
totalSupply()HubTotal minted supply (includes tokens locked in the OFT adapter on the hub).
totalAssets()HubVault’s total managed assets, including custodian-held UTY.
convertToAssets(shares)HubRequires the global share price, which is a hub-side computation.
convertToShares(assets)HubRequires the global share price.
previewDeposit(assets)HubVault math lives on the hub.
previewRedeem(shares)HubVault math lives on the hub.
maxDeposit(receiver)HubVault limits are hub state.
maxRedeem(owner)HubVault limits are hub state.
pendingRedeemRequest(id, controller)HubWithdrawal queue state.
claimableRedeemRequest(id, controller)HubWithdrawal queue state.
getWithdrawalRequests(controller)HubUser’s pending requests.

Operation routing

Reading a balance or approving a spender is a local call on whatever chain you’re on. Depositing, redeeming, or requesting a redemption routes to the hub — either directly (if you’re on Base) or via the spoke VaultInterface and the LayerZero composer (if you’re on a spoke).
OperationTypeExecutes onNotes
balanceOf(user)ReadSpokeLocal OFT balance.
approve(spender, amount)WriteSpokeLocal ERC-20 allowance.
transfer(to, amount)WriteSpokeOFT handles cross-chain if needed.
deposit(assets, receiver) (UTY)WriteHubBase only — no cross-chain UTY minting.
deposit(assets, receiver) (yUTY)WriteHubVia spoke VaultInterface → composer when called from a spoke chain.
requestRedeem / redeem (UTY)WriteHubBase only — no cross-chain UTY redemption.
requestRedeem / redeem (yUTY)WriteHubVia spoke VaultInterface → composer when called from a spoke chain.
redeemById(requestId, receiver)WriteHubDirect claim by withdrawal request ID.