ITADN
morpho-org/vault-v2
morpho-org/vault-v2 · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Vault V2

Vaults V2 允许任何人创建 非托管 金库,将资产分配到不同的市场。 Vault V2 的存款人无需主动管理其仓位,即可从底层市场获得收益。 存款资产的策展由一组不同的角色(所有者、策展人和分配者)负责。 VaultV2Factory 部署 Vaults V2 的实例。 所有合约都是不可变的。

概述

适配器

金库通过称为适配器的独立合约将资产分配到底层市场。 它们代表金库持有仓位。 适配器还用于了解这些投资的市值(利息和损失实现)。

使用 适配器注册表 来限制金库可以拥有和添加哪些适配器。 这在弃权时(参见 时间锁)特别有用,以确保金库将永远向由给定注册表授权的适配器提供流动性。

当前可用的适配器如下:

上限

金库的资金分配受基于 ID 的上限系统约束。 ID 是某些仓位共同风险因素(如抵押品、预言机、协议等)的抽象标识符。 具有共同 ID 的市场上的分配受绝对上限和相对上限的限制。 相对上限仅约束分配,因此可能因从金库中提款而被超过。

流动性

分配器负责确保用户随时可以提取其资产。 这是通过管理可用的闲置流动性和可选的流动性适配器来实现的。

此外,如果存在流动性市场,用户可以利用 forceDeallocate 函数从金库中提取资产,前提是他们愿意支付相应的罚金。 实际上,无许可的 forceDeallocate 函数允许任何人将资产从适配器转移到金库的闲置资产(即金库代币余额)。

当用户提取资产时,优先使用闲置资产。 如果闲置流动性不足,则从流动性适配器中提取流动性。 当定义时,流动性适配器还用于转发存入的资金。

典型的流动性适配器会允许存款/取款通过一个流动性极高的 Market V1 进行。

时间锁

策展人配置更改均可设置时间锁(除了 decreaseAbsoluteCapdecreaseRelativeCap),这意味着执行操作需要先提交,只有当时间锁过期后才能执行(由任何人执行)。 这对于 非托管保证 特别有用,但通常如果策展人希望就某些配置提供保证,这也很有用。 应谨慎使用 increaseTimelock,因为 decreaseTimelock 是功能依赖的:降低某个函数的时间锁受该函数自身时间锁的限制。

此外,配置可以被 弃权,即通过调用 abdicate 使其无法再被设置。

实物赎回

实物赎回是一种机制,用于减少用户在金库中的头寸,并增加其在底层市场中的头寸。 通过实物赎回退出,允许用户在任何时间以底层头寸退出金库,即使没有底层市场具有流动性。 用户可以借助 forceDeallocate 函数进行实物赎回:闪电贷流动性,将其供应到适配器的市场,并在偿还闪电贷之前通过 forceDeallocate 提取流动性。

可以为每个适配器设置使用 forceDeallocate 的惩罚,最高可达 2%。 这旨在抑制对分配的操作,特别是对在提取时未检查的相对上限的操作。 请注意,对于惩罚率为 0% 的适配器,解除分配的唯一摩擦是相关的气体成本。

非托管保证

非托管保证来自 实物赎回时间锁。 这些机制确保用户可以在任何关键配置变更生效之前(如果相应的时间锁不为零)随时提取其资产。

门控

金库 V2 可以使用外部门控合约来控制份额转移、金库资产存入和金库资产提取。 如果未设置门控,则其对应的操作不受限制。

定义了四个门控:

  • 接收份额门控 (receiveSharesGate): 控制接收份额的权限。
  • 发送份额门控 (sendSharesGate): 控制发送份额的权限。
  • 接收资产门控 (receiveAssetsGate): 控制与接收资产相关的权限。
  • 发送资产门控 (sendAssetsGate): 控制与发送资产相关的权限。

参见 WhitelistSendAssetsGate,它提供了发送资产门控的一种可能实现。

最大速率

金库的份额价格增长不会快于分配器设定的 maxRate。 这有助于稳定分配速率,或建立缓冲以能够吸收损失。

费用

VaultV2 存款人需支付绩效费用,即利息的一部分(上限为 50%),以及管理费(上限为 5%/年),即本金的一部分。 每项费用均支付给由策展人设定的相应接收方。

角色

  • 所有者: 所有者的角色是设置策展人和哨兵。 它还可以设置金库的名称和符号。 只有一个地址可以拥有此角色。

  • 策展人: 策展人的角色是配置金库。 他们可以启用和禁用 适配器 以及可选的适配器注册表,通过设置绝对和相对上限来配置 风险限制,设置 门控分配器时间锁费用 以及费用接收方。 除了降低绝对和相对上限外,所有操作均可设置时间锁。 只有一个地址可以拥有此角色。

  • Allocator(s): 分配器的角色是处理金库在底层市场中的资金分配与回收(使用已启用的适配器,并在策展人设定的上限范围内)。 它们还设置流动性适配器最大利率。 它们尤其负责金库的性能和流动性。

  • Sentinel(s): 哨兵角色可用于快速降低金库的风险。 它们能够撤销待处理的操作、将资金分配至闲置状态并降低上限。

ERC-4626 合规性

Vault V2 符合 ERC-4626ERC-2612 标准。

[!WARNING] 金库在 max 函数上具有非传统行为(maxDeposit, maxMint, maxWithdraw, maxRedeem):它们始终返回零。

开发者

使用 forge 进行编译、测试和格式化。 周边合约可在 src/periphery 中找到。

审计

所有审计报告均存储在 audits 文件夹中。

许可证

本仓库中的文件在许可证 GPL-2.0-or-later 下公开可用,参见 LICENSE