Earn vaults
了解 EarnVaultV24 的标记 NAV、受保护退出、收割行为与费用。
本页描述 EarnVaultV24 和 SingleLpStrategyV24,即当前已提交的协议基线。合约支持不代表 Earn Vault 已在你的网络上线。本基线中,v24 合约记录为已在公共测试网部署并通过验证,但未进行生产切换。仅在当前部署清单提供已验证地址和实时链上数据时使用 Earn Vault。
EarnVaultV24 是一个可选的 ERC-4626 vault,接受一种抵押品代币,并通过 SingleLpStrategyV24 将部分抵押品作为流动性投入一个价格市场池。Vault 份额是对 vault 的按比例权益,不是对原始存款的固定权益。
存款、投资与闲置缓冲
你先授权 vault 的资产代币,再调用标准 ERC-4626 的 deposit 或 mint,或使用带保护的 depositWithGuards(携带 minSharesOut 和 expectedMarkNonce)。抵押品先进入闲置缓冲。
常规投资和撤资由配置的 keeper 执行:invest 添加流动性,divest 移除流动性并回补缓冲。所有者或 guardian 另可调用受保护的 emergencyWithdrawAll 路径。你的提现不会自动触发 divest。闲置抵押品不产生底层 LP 收益。
标准 withdraw 和 redeem 从闲置缓冲支付,并受 maxWithdraw 和 maxRedeem 约束。超出限额的请求会回退,需要增加闲置流动性(例如成功 divest)才能提高现金支付能力。
抵押资产如何流动
实线箭头表示相应检查通过后的抵押资产转移。Vault 份额是记账权益;提现不会自动从池中撤出流动性。
所有者或 guardian 另有受保护的 emergencyWithdrawAll 路径。常规或紧急撤资均不保证池能立即支付全部权益。
标记 NAV 与 mark nonce
Vault 使用存储的标记为份额定价,而不是每次视图调用都读取池预言机:
totalAssets = idleAssets + investedMark成功的 syncMark 会按池的资金费感知 LP 估值刷新 investedMark,并递增 markNonce。任何人都可以刷新标记。lastMarkAt 记录刷新时间,maxNavStaleness 限制标记的有效时长。
存在策略且 lastMarkAt == 0 或超过 maxNavStaleness 时,标记视为过期。lastMarkAt == 0 表示标记无效;investedMark == 0 本身不表示过期,成功的新估值可以确实为零,零估值也不能豁免时间戳过期检查。
过期 NAV 与 Emergency Pause 下的退出
当标记过期,或底层池处于 EmergencyPause 时,标准退出通道关闭:
- 标记过期时,新的
deposit和mint以StaleNav回退。 withdraw和redeem回退,maxWithdraw和maxRedeem返回0。- NAV 过期时,
previewRedeem和previewWithdraw使用仅闲置基准。若只是 EmergencyPause 而标记仍新鲜,预览不会切换:即使标准退出被阻止,仍可能显示完整 NAV。不要把这个完整净值预览作为redeemIdleOnly的付款金额。
这些状态下的显式退出是 redeemIdleOnly(shares, receiver, owner, minAssetsOut, expectedMarkNonce):
- 只按比例支付闲置抵押品,从不调用池。
- 放弃被销毁份额对已投资价值的权益。如果策略之后恢复,该价值归剩余份额持有人。
- 计提管理费,但从不结算业绩费。
- 当仍存在已投资价值或无效标记时,最后一名份额持有人不能使用该退出,因为没有其他人持有恢复权益。
对比退出条件
正常且标记新鲜时,也可调用 redeemIdleOnly。它始终只支付比例闲置抵押品,并放弃被销毁份额对应的投资权益。
| 条件 | 标准退出上限 | previewWithdraw / previewRedeem 基准 | 显式 redeemIdleOnly |
|---|---|---|---|
| 正常且标记新鲜 | 受持有人份额和闲置支付能力限制 | 完整 NAV | 满足其保护条件才可执行 |
| NAV 过期 | maxWithdraw = maxRedeem = 0 | 仅闲置资产 | 满足其保护条件才可执行 |
池处于 EmergencyPause,标记新鲜 | maxWithdraw = maxRedeem = 0 | 完整 NAV,不是仅闲置付款报价 | 满足其保护条件才可执行 |
所有仅闲置退出均保留 nonce、授权、余额及最低输出检查。若赎回全部供应量且(investedMark > 0 或 lastMarkAt == 0),退出会被拒绝。
实线分支表示现金结果,虚线分支表示权益后果,不是另一笔代币转移。
收割
Keeper 的 harvest 通过两条相互独立的通道将策略收益领取到闲置缓冲:
- 交易手续费奖励由池的 LP fee reserve 全额支撑,即使 LP 估值不可用也可以领取。
- LP Funding 是质量权益,当池处于
EmergencyPause、Funding 被阻止或资金费状态无法安全读取时跳过。
如果收割后无法刷新标记,Vault 会保守记录已转入的价值,将 lastMarkAt 置零并递增 markNonce。在新的标记恢复之前,只保留显式的仅闲置退出。
Vault 费用
- 管理费按标记资产线性计提,上限为每年 5%。
- 业绩费只对超过历史最高份额价格的部分收取,上限为超出部分的 30%。
- 费用通过向费用接收方铸造份额支付,会稀释现有份额持有人。
- 费用结算需要新标记。过期状态下的仅闲置退出不结算业绩费。
策略轮换
Vault 的策略可以被替换,但轮换是延迟且受约束的:
- 所有者提出轮换,指定策略部署者、数据哈希和至少在未来配置最短延迟之后的
eta。 - 延迟到期后由所有者接受。旧策略必须完全清空:本金、已累计和递延的 Funding、手续费奖励以及任何残余都必须为零,且
investedMark必须为零。 - 替换策略必须面向同一个池和 market key,使用经批准的版本和 schema,并在创建时经济上干净。
- Guardian 可以取消待生效的轮换。
轮换从不在策略之间携带权益。递延 Funding 必须收割到零,不能被丢弃。
使用 Earn Vault 前
- 从当前部署来源解析 vault、factory、资产、策略和池。
- 读取
idleAssets、totalAssets、pricePerShare、markNonce、lastMarkAt和maxNavStaleness。 - 签名前检查
maxDeposit、maxWithdraw和maxRedeem。 - 读取费率、费用接收方、owner、keeper 和策略地址。
- 在价格市场流动性中了解底层池的预言机、市场状态、阶段和 LP 风险。