XP, Yield matching, Carry YELD payout
Этот раздел описывает механику Yield в текущем backend (внутренний технический модуль называется yield).
1) Термины (в текущей системе)
- XP: в этом документе используется XP. Во внутреннем backend имя —
xp(models/fields:XPCredit,carryLeftXP,carryRightXP). - USDOL/USDOR: LEFT/RIGHT branches в Yield.
- Carry YELD: хранится в backend как
carryYeldUsdo(USDO-base) и означает payout pool, накопленный через Yield matching, который затем выплачивается с weekly caps.
2) Расчет XP из инвестиции
- Для каждой инвестиции XP считается так:
xpBase = amountBase * xpPercent / 100xpPercentберется из Block settings (по умолчанию: 20%)
3) Распространение XP вверх по дереву
Инвестиция имеет placement side (LEFT или RIGHT) на основе investmentInviteCode:
- Placement user может получить XP credit на той же стороне
- Далее XP credit поднимается по цепочке
referredByUserIdдо root (max depth guard=100)
4) Важное ограничение: XP credits получают только TIP3
- В текущей системе XP credit создается только если у получателя
programTier === TIP3. - Такая же проверка есть в yield worker (внутренний модуль
yield): если получатель XP credit не TIP3, credit просто отмечается processed без изменения carry.
Это означает:
- Пользователи TIP1/TIP2 не накапливают carryLeft/carryRight (yield carry).
- Инвестиции TIP1/TIP2 могут «создавать» XP, но фактический XP credit получает только ancestor/placement node с TIP3.
5) Yield matching (10 XP + 10 XP → 10 USDO)
Yield worker работает с XPCredit:
- Каждый credit увеличивает
carryLeftилиcarryRight. - Размер пары фиксирован: 10 XP.
- Для каждой matched pair payout фиксирован: 10 USDO.
- После matching carry уменьшается, а payout добавляется в
carryYeldUsdo.
6) Weekly payout cap (Reward levels)
carryYeldUsdo не становится балансом мгновенно. Выплату выполняет job payoutCarryYeld:
- У каждого пользователя есть reward level (1..4) в
userRewardStatus. - Weekly max payout по умолчанию:
- L1: 2000 USDO/week
- L2: 4000 USDO/week
- L3: 6000 USDO/week
- L4: 8000 USDO/week
- Если
carryYeldпревышает оставшийся weekly allowance, overflow burned (не выплачивается). - Прогресс weekly payout хранится через
yieldAccount.weeklyPayoutUsdo+weekKey.
7) Auto payout schedule
- При
yieldAutoPayoutEnabled=trueдобавляется repeat jobpayoutCarryYeldс cron pattern. - При выключении repeat job удаляется по best-effort.
8) Эффект TIP upgrade на carry
При повышении tier:
- Pending XP credits помечаются processed.
yieldAccount.carryLeftXP/carryRightXPсбрасываются в 0.- В investment create flow
carryYeldUsdoтакже сбрасывается в 0 (кроме upgrade endpoint, где сбрасывается только left/right carry).