> For the complete documentation index, see [llms.txt](https://ch-docs.aftermath.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ch-docs.aftermath.finance/nong-chang/architecture/vault.md).

# 金库

## Vault 包

该包提供操作金库的接口。主要入口是 AfterburnerVault 结构体——用户可将类型为 `Coin<STAKE>` 的代币质押进该金库。金库可添加任意数量的奖励，并按每种奖励各自的发放计划向质押者发放。用户进入金库时可以锁定仓位以获得额外奖励。在 Strict 实现下，奖励可随时领取；在 Relaxed 实现下，则需等锁定期结束后才能领取。

## Strict 与 Relaxed 实现对比

Afterburner 金库允许用户锁定仓位，借助乘数获得更多奖励。但在瞬息万变的 DeFi 环境中，锁定的常见弊端是：市场上可能出现回报更高的资金去处，而资产被锁定的用户只能错过。

为解决这一问题，我们提出了金库的 Relaxed 变体——允许用户在锁定期结束前解锁仓位的实现。在这种情况下，用户只能获得仓位实际处于锁定状态期间的额外奖励。

与之相对，Afterburner 金库也提供 Strict 版本——用户只有在锁定期结束后才能解锁并提取仓位的实现。

\~\~\~\~\~\~\~

Strict 实现下，用户可随时领取奖励。

Relaxed 实现下，用户只有在仓位解锁后才能领取奖励。

\~\~\~\~\~\~\~

## 创建金库

方法 new\<STAKE> 负责创建金库。它会创建一个不含任何发放计划的新金库。参数之一是 lock\_enforcement，用于选择创建 Strict（lock\_enforcement = 0）或 Relaxed（lock\_enforcement = 1）金库。金库创建后，必须执行 share\_vault\<stake> 函数将其共享。

金库要正常运作，需要由金库所有者初始化奖励发放。调用 initialize\_reward\<STAKE, REWARD> 方法即可完成，该方法可设置发放计划、发放速率和发放延迟。

\~\~\~\~\~\~\~\~

发放计划（Emission schedule）——相邻两次发放事件之间的时间间隔，以毫秒计。

发放速率（Emission rate）——每次发放事件发放的代币数量。

发放延迟（Emission delay）——发放开始前的等待时间。

\~\~\~\~\~\~\~\~

## 追加与上调奖励

所有者可以使用 add\_reward\<STAKE, REWARD> 方法向金库追加奖励，或使用 increase\_emissions\_for\<STAKE, REWARD> 函数上调奖励发放速率。
