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 / 100xpPercent는 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 jobpayoutCarryYeld가 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).