XP, Yield matching, Carry YELD payout
Dieser Abschnitt beschreibt die Yield-Mechanik im aktuellen Backend (das interne technische Modul heißt yield).
1) Begriffe (im aktuellen System)
- XP: In diesem Dokument nennen wir es XP. Im Backend lautet der interne Name
xp(models/fields:XPCredit,carryLeftXP,carryRightXP). - USDOL/USDOR: Das sind die LEFT/RIGHT branches (yield sides).
- Carry YELD: Wird im Backend als
carryYeldUsdo(USDO-base) gespeichert und bedeutet den payout-Pool, der aus yield matching akkumuliert wird und später mit weekly caps ausgezahlt wird.
2) XP-Berechnung aus einer Investition
- Für jede Investition wird XP wie folgt berechnet:
xpBase = amountBase * xpPercent / 100xpPercentkommt aus den Block settings (Standard: 20%)
3) XP-Ausbreitung nach oben im Baum
Eine Investition hat eine placement side (LEFT oder RIGHT) basierend auf investmentInviteCode:
- Der placement user kann auf derselben Seite einen XP credit erhalten
- Danach bewegt sich der XP credit über die
referredByUserId-Kette bis zur root nach oben (max depth guard=100)
4) Wichtige Einschränkung: Nur TIP3-Nutzer erhalten XP credits
Im aktuellen System:
- Ein XP credit wird nur erstellt, wenn
programTier === TIP3beim Empfänger vorliegt. - Dieselbe Guard existiert im yield worker (internes Modul
yield): Wenn der credit receiver nicht TIP3 ist, wird der credit lediglich als processed markiert, ohne carry zu verändern.
Das bedeutet:
- TIP1/TIP2-Nutzer akkumulieren kein carryLeft/carryRight (yield carry).
- TIP1/TIP2-Investitionen können zwar XP „erzeugen“, aber der tatsächliche XP credit wird nur vom ancestor/placement node mit TIP3 erhalten.
5) Yield matching (10 XP + 10 XP → 10 USDO)
Der yield worker arbeitet mit XPCredit-Datensätzen (interner Name: xp).
- Jeder credit erhöht
carryLeftodercarryRight. - Die Paargröße ist fest: 10 XP.
- Für jedes matched pair ist payout fest: 10 USDO.
- Nach matching sinken die carries und payout wird zu
carryYeldUsdoaddiert.
6) Weekly payout cap (Reward levels)
carryYeldUsdo wird nicht sofort zum Guthaben. Die Auszahlung erfolgt über den Job payoutCarryYeld:
- Jeder Nutzer hat ein reward level (1..4) in
userRewardStatus. - Jedes Level hat einen weekly max payout (Standardwerte):
- L1: 2000 USDO/week
- L2: 4000 USDO/week
- L3: 6000 USDO/week
- L4: 8000 USDO/week
- Wenn
carryYeldden verbleibenden weekly allowance überschreitet, wird overflow burned (nicht ausgezahlt). - Der Fortschritt der weekly payout-Auszahlung wird über
yieldAccount.weeklyPayoutUsdo+weekKeygespeichert.
7) Auto payout schedule
- Wenn in den Block settings
yieldAutoPayoutEnabled=trueist, wird ein repeat jobpayoutCarryYeldmit einem cron pattern (dayOfWeek/hour/minute) zur queue hinzugefügt. - Wenn deaktiviert, wird der repeat job auf best-effort-Basis entfernt.
8) Effekt von TIP upgrade auf carry
Wenn sich das gesamte tier eines Nutzers erhöht:
- Pending XP credits werden als processed markiert, damit payout nicht aus dem alten Zustand erfolgt.
yieldAccount.carryLeftXP/carryRightXPwerden auf 0 zurückgesetzt.- Im investment create flow wird auch
carryYeldUsdoauf 0 zurückgesetzt (außer im upgrade endpoint, wo nur left/right carry zurückgesetzt wird).