ERC4626 vaults
Each Pool's underlying assets are custodied in an ERC4626 vault. This standard interface means XPower Banq vaults compose cleanly with the broader vault ecosystem.
What ERC4626 provides
ERC4626 is the tokenised vault standard. It defines:
asset()— the underlying token.totalAssets()— total underlying held.convertToShares(assets)andconvertToAssets(shares)— conversion.deposit(assets, receiver),mint(shares, receiver)— entries.withdraw(assets, receiver, owner),redeem(shares, receiver, owner)— exits.maxDeposit,maxMint,maxWithdraw,maxRedeem— limits.previewDeposit,previewMint,previewWithdraw,previewRedeem— quote functions.
Direct interaction
Most users never call the Vault directly — Pool operations route through it transparently. But the Vault is an ordinary ERC4626 contract, so you can interact with it directly if you have a use case for that (e.g., bypassing the Pool for some specific composition).
Direct vault access bypasses the Pool's health checks
If you call Vault.withdraw() directly while having a debt position, you can leave yourself liquidatable. The Pool's redeem() function performs the H ≥ 100% check; the Vault doesn't. Direct vault access is for advanced use only.
Composing with vault aggregators
Many yield aggregators expect to deposit into ERC4626 vaults. XPower Banq's vault tokens are deposit-eligible for such aggregators — but you'd be giving up the Pool's borrowing functionality.
If your goal is yield-only with no leverage, the Vault directly is fine. If you want to borrow, go through the Pool.
Vault and Pool relationship
- Vault holds the underlying tokens.
- Pool reads the Vault's totalAssets() and routes deposits/withdrawals through it.
- The Pool is the authorised caller for operations that move tokens into and out of the Vault.
Vault bindings are permanent. Pool.enlist(...) requires unlisted(token) and emits Listed.enlisted — there is no inverse function and no way to swap a token's Vault after enlistment. Migrating to a different Vault implementation would require deploying a new Pool.
Where to go next
- Architecture overview — the contract relationships
- Vault parameters — vault-specific defaults