Перейти к основному содержанию
Каждый $1, потраченный на покупку, поднимает ваш лимит дохода на $2. Каждый доллар ценности, который вы выводите при продаже, сжигает лимит — иногда 1:1, иногда пропорционально. Когда лимит дохода обнуляется, вы не можете извлечь из протокола больше ценности, пока не купите ещё или не обменяете GWT на дополнительный headroom. Это второй основной защитный механизм шаблона dpnm (первый — дневной лимит покупки).

Математика

Накопление

on buy(usdtIn):
  income_limit[caller] += usdtIn * incomeLimitMultiplier
Для $FLOW множитель равен 2. Покупка на $50 поднимает ваш лимит дохода на $100.

Burn при продаже

Два кейса, разбираются в каждой sell-транзакции: Кейс A — value <= income_limit
income_limit[caller] -= value
Burn 1:1. Продали на $80 ценности — теряете $80 headroom. Кейс B — value > income_limit
absorbed = income_limit[caller]                    // сжигаем то, что осталось
overflow = value - income_limit[caller]            // превышение
penalty  = overflow * (overflow / value)           // пропорциональное наказание
income_limit[caller] = 0
// штраф НЕ списывается с кошелька — он урезает эффективную стоимость продажи
effective_value_out = value - penalty
Пропорциональный burn. Чем глубже вы заходите за лимит, тем большая доля срезается.
На практике контракт следит, чтобы продажа сверх лимита дохода возвращала меньше USDT, чем токены стоили бы по текущей цене. «Потерянная» ценность остаётся в пуле и поднимает цену для всех остальных.

Пример

Вы покупаете $FLOW на $100. Лимит дохода уходит с 0 на $200. Цена удваивается. Ваш $FLOW теперь стоит $200. Сценарий 1: вы продаёте половину (на $100).
  • Кейс A — value ($100) ≤ income limit ($200).
  • Получаете $100 * 0.95 = $95 USDT (sell fee 10%, половина в пуле, половина в treasury).
  • Остаток лимита: $200 - $100 = $100.
Сценарий 2: продаёте всё (на $200) сразу.
  • Кейс A — value ($200) = income limit ($200).
  • Получаете $200 * 0.95 = $190 USDT.
  • Остаток лимита: 0.
Сценарий 3: цена утраивается, $FLOW стоит $300. Продаёте всё.
  • Кейс B — value ($300) > income limit ($200).
  • absorbed = 200, overflow = 100, penalty = 100 * (100/300) = $33.33.
  • Эффективная value out (до sell fee): $300 - $33.33 = $266.67.
  • После sell fee 10% получаете примерно $240.
  • Остаток лимита: 0.
Вы вышли в плюсе, но меньше, чем подсказывала бы голая цена. $33 штрафа осели в пуле и повысят цену для следующего покупателя.

Зачем это нужно

Без лимита дохода один ранний покупатель мог бы вечно ехать на кривой «цена только растёт» и забрать весь будущий рост. Лимит ограничивает пожизненное извлечение по одной позиции 2x от вложенного капитала — это значит, что у поздних покупателей всегда есть место для заработка. В сочетании с дневным лимитом покупки это превращает закрытую систему в экономику честной эмиссии: можно продолжать покупать, чтобы продолжать зарабатывать, но каждый новый доллар открывает новый headroom.

Обмен GWT на лимит дохода

Если вы хотите продолжать зарабатывать сверх потолка 1:2 без покупки нового $FLOW, можно обменять GWT (токен компенсации комиссий) на лимит дохода:
1 GWT = $1.25 лимита дохода
fee  = $2 USDT за вызов redemption
max  = 10% от пожизненно полученного дохода за один redemption
См. GWT — там полный поток обмена.

Чтение лимита дохода

const limit = await flowProtocol.incomeLimit(myAddress);
console.log("Остаток лимита дохода (USDT):", formatUnits(limit, 18));
Или REST-эндпоинт:
curl https://api.agentflow.website/me/flow-onchain \
  -H "Cookie: af_session=..."
В ответе incomeLimit в USDT-номинале.