evU - tower
CW4626 Escher Vault β Overview
Purpose
The CW4626 Escher Vault is a CosmWasm vault (ERC-4626 inspired) designed for the U token as its underlying. It automates liquidity provisioning, staking, incentive claiming, and redemptions, while exposing a familiar deposit/mint/withdraw/redeem interface.
Roles
Manager
Bonds underlying U into LP/staking.
Executes add/remove liquidity.
Swaps and claims incentives.
Oracle
Updates the price map for LP other-side assets and incentive tokens.
Marketing
Uses CW20-baseβs built-in marketing messages (e.g., name, symbol, logo).
Key Components
Underlying Token β Native U, basis for deposits/withdrawals and accounting.
Share Token β CW20 vault shares (same decimals as U).
Pool β The vault strategy centers on the eU pool, where U is converted to eU and deployed for liquidity and staking.
Incentives β The vault earns rewards in U, eU, and BABY.
Oracle Prices β Map of
token_address β Decimal price
in terms of U.Must include:
eU
U
BABY
Fees
Entry Fee β Applied on
deposit
/mint
.A percentage of gross shares is minted to the fee recipient.
PreviewDeposit
returns net user shares after fee deduction.
Core Flows
Deposit / Mint
User deposits U.
Vault calculates gross shares from
total_assets / total_shares
.Shares are split into:
user_shares
β depositor.fee_shares
β fee recipient.
Bond
Manager moves a portion of U into the eU pool (via hub).
Converts U into eU and LP positions with slippage control and unique salt.
Add Liquidity
Manager pairs U/eU as needed.
Mints LP shares and deposits them into the incentives contract.
Claim Incentives
Manager claims accumulated rewards (U, eU, BABY) back into the vault.
Redemption (Two-Step)
request_redeem
Locks user shares.
Returns preview of expected asset distribution (U + eU + BABY), valued via oracle.
complete_redemption
Manager unwinds positions.
Assets distributed to user.
Locked shares burned.
Queries
Standard:
Asset
,TotalAssets
,ConvertToShares/Assets
,MaxDeposit/Mint/Withdraw/Redeem
PreviewDeposit
(net),PreviewMint
,ExchangeRate
Oracle:
OraclePrices
,OracleTokensList
Positions & Incentives:
LPPosition
,AllPendingIncentives
Redemptions:
Request by ID
User redemption requests
Redemption stats
Exchange Rate
exchange_rate = total_assets / total_shares
Includes U + eU + BABY rewards (valued via oracle).
Excludes locked shares to maintain fair PPS.
Access Control
manager and oracle role vectors maintained on-chain.
Only authorized addresses may call privileged endpoints.
Safety & Validation
Oracle prices must be strictly positive and cover U, eU, and BABY.
Slippage tolerance enforced in liquidity operations.
salt
validated to prevent replay.
Instantiate Fields (Examples)
managers
,oracles
underlying_token
= Ushare_name/symbol/marketing
pool
= eUincentives[]
= [U, eU, BABY]tower_incentives
,lp
,slippage_tolerance
,staking_contract
entry_fee_rate
,entry_fee_recipient
Events (Examples)
oracle_update_prices
deposit
(withuser_shares_minted
,fee_shares_minted
,entry_fee_rate
)bond
/add_liquidity
/remove_liquidity
request_redemption
/complete_redemption
claim_incentives
Operational Notes
Oracle must initialize prices for U, eU, and BABY before vault operations.
Preview endpoints simulate expected outcomes; real results may differ slightly.
If
entry_fee_recipient
= depositor, all shares accrue to the same account.
Last updated