> For the complete documentation index, see [llms.txt](https://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://docs.aftermath.finance/ru/farming/architecture/vault.md).

# Хранилище

## Пакет vault

Этот пакет предоставляет интерфейс для работы с хранилищем. Основная точка входа — структура AfterburnerVault: хранилище, в которое пользователи могут стейкать монеты типа `Coin<STAKE>`. В хранилище можно добавить любое количество наград, которые выпускаются стейкерам со скоростью, заданной графиком эмиссии для каждой награды. Входя в хранилище, пользователи могут заблокировать свои позиции, чтобы получать бонусные награды. Награды затем можно получать с любой периодичностью в реализации Strict или после окончания периода блокировки в реализации Relaxed.

## Реализации Strict и Relaxed

Хранилища Afterburner позволяют пользователям заблокировать позицию, чтобы использовать множитель и получать больше наград. Недостаток блокировки в том, что, пока активы пользователя заблокированы, для его капитала может появиться более выгодная возможность.

Вариант хранилища Relaxed решает эту проблему: пользователь может разблокировать позицию до окончания периода блокировки. В этом случае бонусные награды начисляются только за время, пока позиция была заблокирована.

В версии Strict пользователь может разблокировать, а значит и вывести, позицию только после окончания периода блокировки.

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

В реализации Strict пользователь может получить награды в любой момент.

В реализации Relaxed пользователь может получить награды только после разблокировки позиции.

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

## Создание хранилища

За создание хранилища отвечает метод new\<STAKE>. Он создаёт новое хранилище без эмиссии. Один из параметров — lock\_enforcement, который позволяет создать хранилище Strict (lock\_enforcement = 0) или Relaxed (lock\_enforcement = 1). После создания хранилище нужно сделать общим, выполнив функцию share\_vault\<stake>.

Чтобы хранилище работало, владелец хранилища должен инициализировать эмиссию наград. Для этого он вызывает метод initialize\_reward\<STAKE, REWARD>, который позволяет задать график эмиссии, скорость эмиссии и задержку эмиссии.

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

График эмиссии: интервал времени в миллисекундах между последовательными событиями эмиссии.

Скорость эмиссии: количество монет, выпускаемых при каждом событии эмиссии.

Задержка эмиссии: период времени до начала эмиссии.

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

## Добавление и увеличение наград

Владелец может добавить в хранилище дополнительные награды с помощью метода add\_reward\<STAKE, REWARD> или увеличить эмиссию наград с помощью функции increase\_emissions\_for\<STAKE, REWARD>.
