Как устроены займы
Tako одалживает Gram пула валидаторам на один раунд валидации. Ставку может сделать любой валидатор; пул финансирует те ставки, что платят ему больше всего на каждый Gram.
sequenceDiagram
participant V as Валидатор
participant T as Казначейство
participant L as Loan
participant E as Elector
V->>T: RequestLoan (залог, подписанная заявка на стейк)
Note over T: заявки ждут окна решения
T->>L: StakeLoan (займ + залог)
L->>E: new_stake
Note over E: раунд валидации, затем стейк заморожен
L->>E: recover_stake (запустить может любой)
E->>L: стейк + награда
L->>T: LoanReturned
T->>V: выплата: залог и доля валидатора
1. Ставка
Заголовок раздела «1. Ставка»Перед каждыми выборами вы отправляете в казначейство RequestLoan:
- amount — нужный займ, между минимумом и максимумом пула;
- minAmount — наименьший займ, который вы примете, если пул профинансирует вас частично;
- minPayment — минимум, который вы обещаете пулу за раунд, не меньше
minRateBpsот суммы; - залог — приложенная сумма, ваш собственный стейк, который идёт в Elector вместе с займом;
- подписанная заявка на стейк для Elector, подписанная на адрес вашего контракта займа. Адрес вычисляется заранее, поэтому подписать можно до того, как займ появится.
Новая заявка заменяет предыдущую и возвращает её залог. Когда раунд заполнен, лучшая заявка вытесняет худшую, и её залог возвращается.
2. Решение
Заголовок раздела «2. Решение»В окне перед дедлайном Elector кто угодно отправляет DecideRound и получает за это вознаграждение. Казначейство финансирует заявки от самой высокой minPayment / amount вниз, пока не кончится бюджет. Последнюю могут профинансировать частично. Остальным возвращается залог.
Бюджет — меньшее из свободных Gram пула и примерно половины пула. Стейк работает один раунд и замораживается на следующий, поэтому пул одалживает половину в нечётные раунды и половину в чётные.
Займ плюс залог никогда не превышают max_stake Elector, потому что Elector не вернул бы излишек.
3. Стейк
Заголовок раздела «3. Стейк»Казначейство разворачивает для вас контракт Loan в мастерчейне и отправляет туда займ и залог. Loan отправляет вашу заявку в Elector. Elector, как и у всех, оставляет себе 1 Gram залога за подтверждение.
4. Расчёт
Заголовок раздела «4. Расчёт»После раунда и заморозки кто угодно может запустить возврат и получить вознаграждение. Loan забирает стейк у Elector и отправляет всё в казначейство, которое делит:
reward = вернулось − займ − залогearned = reward × займ / (займ + залог) ← часть займапулу = max(minPayment, earned × poolShare) ← poolShare в тестнете 97,25%вам = всё остальноеНаграда за ваш залог — целиком ваша. При собственных 700 000 Gram и займе 150 000 пул берёт 97,25% от доли награды 150/850, а не от всей награды.
| Исход | Результат |
|---|---|
| Обычный раунд | пул получает свою долю от заработанного займом, не меньше minPayment; остальное вам |
| Elector отклонил стейк | minPayment берётся из залога, остальное возвращается |
| Штраф меньше залога | он списывается с залога |
| Штраф больше залога | сначала излишек покрывает страховой фонд, потом его делят держатели и заявки |
Что нужно
Заголовок раздела «Что нужно»- Нода валидатора с mytonctrl в режиме validator.
- Кошелёк в мастерчейне с залогом и деньгами на комиссии.
- Режим Tako для mytonctrl, который делает всё это на каждых выборах.