Перейти к содержимому

Как устроены займы

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: выплата: залог и доля валидатора

Перед каждыми выборами вы отправляете в казначейство RequestLoan:

  • amount — нужный займ, между минимумом и максимумом пула;
  • minAmount — наименьший займ, который вы примете, если пул профинансирует вас частично;
  • minPayment — минимум, который вы обещаете пулу за раунд, не меньше minRateBps от суммы;
  • залог — приложенная сумма, ваш собственный стейк, который идёт в Elector вместе с займом;
  • подписанная заявка на стейк для Elector, подписанная на адрес вашего контракта займа. Адрес вычисляется заранее, поэтому подписать можно до того, как займ появится.

Новая заявка заменяет предыдущую и возвращает её залог. Когда раунд заполнен, лучшая заявка вытесняет худшую, и её залог возвращается.

В окне перед дедлайном Elector кто угодно отправляет DecideRound и получает за это вознаграждение. Казначейство финансирует заявки от самой высокой minPayment / amount вниз, пока не кончится бюджет. Последнюю могут профинансировать частично. Остальным возвращается залог.

Бюджет — меньшее из свободных Gram пула и примерно половины пула. Стейк работает один раунд и замораживается на следующий, поэтому пул одалживает половину в нечётные раунды и половину в чётные.

Займ плюс залог никогда не превышают max_stake Elector, потому что Elector не вернул бы излишек.

Казначейство разворачивает для вас контракт Loan в мастерчейне и отправляет туда займ и залог. Loan отправляет вашу заявку в Elector. Elector, как и у всех, оставляет себе 1 Gram залога за подтверждение.

После раунда и заморозки кто угодно может запустить возврат и получить вознаграждение. 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, который делает всё это на каждых выборах.