XP, Yield matching, Carry YELD payout

이 섹션은 현재 backend의 Yield 메커니즘을 설명합니다 (내부 technical module 명은 yield).

1) Terms (현재 시스템)

  • XP: 이 문서에서는 XP라고 부릅니다. backend 내부 명은 xp (models/fields: XPCredit, carryLeftXP, carryRightXP).
  • USDOL/USDOR: LEFT/RIGHT branches (yield sides)를 의미합니다.
  • Carry YELD: backend에서는 carryYeldUsdo(USDO-base)로 저장되며, yield matching으로 누적된 payout pool을 의미하고, 이후 weekly caps와 함께 지급됩니다.

2) investment에서 XP 계산

  • 각 investment의 XP 계산식:
    • xpBase = amountBase * xpPercent / 100
    • xpPercent는 Block settings에서 옴 (default: 20%)

3) 트리 상향 XP 전파

investment는 investmentInviteCode 기반 placement side(LEFT 또는 RIGHT)를 가집니다:

  • placement user는 같은 side로 XP credit을 받을 수 있음
  • 이후 XP credit은 referredByUserId 체인을 따라 root까지 “상향” 이동 (max depth guard=100)

4) 중요한 제한: TIP3 사용자만 XP credits 수령

현재 시스템에서:

  • XP credit은 recipient user의 programTier === TIP3일 때만 생성됩니다.
  • yield worker (internal module yield)에도 동일 guard가 있으며, credit receiver가 TIP3가 아니면 carry 변경 없이 processed 처리됩니다.

즉:

  • TIP1/TIP2 users는 carryLeft/carryRight (yield carry)를 누적하지 않습니다.
  • TIP1/TIP2 investments가 XP를 “생성”할 수는 있지만, 실제 XP credit은 TIP3인 ancestor/placement node만 수령합니다.

5) Yield matching (10 XP + 10 XP → 10 USDO)

yield worker는 XPCredit records (internal name: xp) 기반으로 동작합니다.

  • 각 credit은 carryLeft 또는 carryRight를 증가시킵니다.
  • Pair size는 고정: 10 XP.
  • 각 matched pair의 payout도 고정: 10 USDO.
  • matching 후 carries는 감소하고 payout은 carryYeldUsdo에 추가됩니다.

6) Weekly payout cap (Reward levels)

carryYeldUsdo는 즉시 “balance”로 전환되지 않습니다. 지급은 payoutCarryYeld job이 수행:

  • 각 user는 userRewardStatus에 reward level (1..4)을 가짐.
  • 각 level의 weekly max payout (defaults):
    • L1: 2000 USDO/week
    • L2: 4000 USDO/week
    • L3: 6000 USDO/week
    • L4: 8000 USDO/week
  • user의 carryYeld가 남은 weekly allowance를 초과하면 overflow는 burn(미지급).
  • Weekly payout progress는 yieldAccount.weeklyPayoutUsdo + weekKey로 저장.

7) Auto payout schedule

  • Block settings에서 yieldAutoPayoutEnabled=true이면, cron pattern(dayOfWeek/hour/minute)으로 repeat job payoutCarryYeld가 queue에 추가됩니다.
  • disabled면 repeat job은 best-effort로 제거됩니다.

8) TIP upgrade가 carry에 미치는 영향

사용자의 overall tier가 상승하면:

  • Pending XP credits는 old state에서 payout이 발생하지 않도록 processed 처리됩니다.
  • yieldAccount.carryLeftXP/carryRightXP는 0으로 reset됩니다.
  • investment create flow에서는 carryYeldUsdo도 0으로 reset됩니다 (upgrade endpoint는 left/right carry만 reset).