XP, Yield matching, Carry YELD payout

Bu bölüm, mevcut backend'deki Yield mekaniklerini açıklar (dahili teknik modül adı yield'dır).

1) Terimler (mevcut sistemde)

  • XP: Bu dokümanda XP olarak adlandırıyoruz. Backend'de dahili adı xp'dir (models/fields: XPCredit, carryLeftXP, carryRightXP).
  • USDOL/USDOR: Bunlar LEFT/RIGHT dallarıdır (yield sides).
  • Carry YELD: Backend'de carryYeldUsdo (USDO-base) olarak saklanır ve yield matching'den biriken payout havuzu anlamına gelir; daha sonra haftalık caps ile ödenir.

2) Yatırımdan XP hesaplama

  • Her yatırım için XP şu şekilde hesaplanır:
    • xpBase = amountBase * xpPercent / 100
    • xpPercent, Block ayarlarından gelir (varsayılan: %20)

3) XP'nin ağaçta yayılması

Bir yatırımın, investmentInviteCode'a bağlı bir placement side'ı vardır (LEFT veya RIGHT):

  • Placement kullanıcısı aynı tarafta bir XP kredisi alabilir
  • Ardından XP kredisi, referredByUserId zinciriyle root'a kadar “yukarı taşınır” (max depth guard=100)

4) Önemli sınırlama: XP kredilerini yalnızca TIP3 kullanıcılar alır

Mevcut sistemde:

  • XP kredisi yalnızca alıcı kullanıcının programTier === TIP3 olması durumunda oluşturulur.
  • Aynı kontrol yield worker'da da vardır (dahili modül yield): kredi alıcısı TIP3 değilse, kredi carry değişmeden sadece işlendi olarak işaretlenir.

Bu şu anlama gelir:

  • TIP1/TIP2 kullanıcıları carryLeft/carryRight biriktirmez (yield carry).
  • TIP1/TIP2 yatırımları XP “oluşturabilir”, ancak gerçek XP kredisi yalnızca TIP3 olan ancestor/placement düğümüne gider.

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

Yield worker, XPCredit kayıtları üzerinde çalışır (dahili ad: xp).

  • Her kredi carryLeft veya carryRight artırır.
  • Çift boyutu sabittir: 10 XP.
  • Eşleşen her çift için payout sabittir: 10 USDO.
  • Matching sonrası carry değerleri azalır ve payout carryYeldUsdo'ya eklenir.

6) Haftalık payout cap (Reward levels)

carryYeldUsdo anında “bakiye”ye dönüşmez. Ödeme payoutCarryYeld job'ı ile yapılır:

  • Her kullanıcının userRewardStatus içinde bir reward level'ı vardır (1..4).
  • Her level'ın haftalık max payout'u vardır (varsayılanlar):
    • L1: 2000 USDO/hafta
    • L2: 4000 USDO/hafta
    • L3: 6000 USDO/hafta
    • L4: 8000 USDO/hafta
  • Kullanıcının carryYeld'i kalan haftalık limite aşarsa, taşan kısım burned olur (ödenmez).
  • Haftalık payout ilerlemesi yieldAccount.weeklyPayoutUsdo + weekKey ile saklanır.

7) Auto payout schedule

  • Block ayarlarında yieldAutoPayoutEnabled=true ise, queue'ya cron pattern (dayOfWeek/hour/minute) ile tekrarlayan payoutCarryYeld job'ı eklenir.
  • Devre dışıysa, repeat job best-effort şekilde kaldırılır.

8) TIP yükseltmesinin carry üzerindeki etkisi

Bir kullanıcının genel tier'ı arttığında:

  • Bekleyen XP kredileri, eski durumdan payout olmaması için işlendi olarak işaretlenir.
  • yieldAccount.carryLeftXP/carryRightXP değerleri 0'a sıfırlanır.
  • Yatırım oluşturma akışında carryYeldUsdo da 0'a sıfırlanır (upgrade endpoint'i hariç; orada sadece left/right carry sıfırlanır).