Հավասարակշռություն և դրամապանակներ 'multi-wallet ճարտարապետություն
1) Ինչո՞ ւ multi-wallet-ը և ո՞ րն են նպատակները
Մեկ «հավասարակշռություն = թիվ» ձայնագրությունը չի ծածկում iGaming իրականությունը։ Անհրաժեշտ են առանձին դրամապանակներ/ենթաշապիկներ 'իրական գումար (cash), բոնուսային միջոցներ, waiger-Pull, frispins, points, երբեմն արտարժույթի դրամապանակներ (CSR/USD/BRL)։
Ճարտարապետության նպատակները
Փողի ճշգրտությունը (double-entry, աուդիո)։- Դուրս գրելու քաղաքականությունը (օրինակ, սկզբում բոնուս/վեյջեր, հետո cash)։
- Արագությունը (p95 API 24250-400 ms, տոկոսադրույքը/ցանցաթլմը իրական ժամանակում)։
- Անվտանգությունը և համադրումը (KYC/AML, պատասխանատու խաղի սահմանները, կարգավորիչները)։
- Մասշտաբը 'պիկը տասնյակ հազարավոր վիրահատություններ/վայրկյան, միլիարդավոր գրառումներ/ամիս։
2) Տվյալների մոդելը '«Ledger + Winwallets»
Նվազագույն էակները
Account: խաղացող/բրենդը/պիտակը։
Աղյուսակների օրինակը (պարզեցված)
sql
- Հաշվապահական հաշիվներ double-entry (ներառյալ ծառայողական)
accounts(id, owner_user_id, type, currency, status,...)
- Կրկնակի գրառում, հղում բիզնեսի վիրահատությանը)
ledger_entries(id, posting_id, debit_account_id, credit_account_id,        amount_minor, currency, category, operation_id, created_at)
- Հոլդներ (պահուստներ)
holds(id, account_id, amount_minor, currency, reason, expires_at, state,    operation_id, created_at)
- Դուրս գրելու քաղաքականություն (գերակայություններ)
spend_policies(id, market, wallet_priority jsonb, updated_at)
- Cross-արտարժույթի դասընթացները fx _ rates (wwww.y _ from, wwindy _ to, rate, precision, valid _ from)Կանոն 'ճշմարտությունը ապրում է լարերի ամսագրում («ledger _ entries»)։ Ներկայիս հավասարակշռությունը կամ ագրեգատը (նյութականացված snepshot), կամ հաշվարկվում է ամսագրից (թանկ, բայց միակ ճիշտ)։
3) Դրամապանակների տեսակները և նրանց վարքը
4) Ապամոնտաժման քաղաքականությունը և առաջնահերթությունը
Հստակ ձևափոխեք միջոցների աղբյուրի ալգորիթմը
Օրինակ (արցունքներ/կազինո)
1. Սկզբում դուրս գրեք WAGER-ից (եթե ակտիվ է waiger)։
2. Հետո BONUS-ից մինչև սպառված չէ։
3. Մնացած 'CASH-ից։
Օրինակ (սպորտը)
1. Սկզբում CASH (կարգավորիչ/հարկը)։
2. Հետո BONUS (freebet), թարգմանելով WAGER-ում։
Պահպանեք Postings-ում «քաղաքականության լուծումը» ինչպես նշվում է, որ սապորտը և աուդիտը տեսնեն «ինչու են դուրս գրվել»։
5) Փողի և գործողությունների կյանքի ցիկլը
Դեպոզիտ
1. «POST/wallet/deposit») մենք ստեղծում ենք pending ձայնագրություն (inbox երշիկ PSA)։
2. Webhuk PMAC (HMAC ստորագրություն, «operation _ id») - credit CASH, category = «DEPOSIT»։
3. Մենք հրապարակում ենք «wallet _ corated» իրադարձությունը։
Դրույքաչափը
1. «POST/bet/place» -ը պարունակում է hold (պահուստ) աղբյուրի վրա (CASH/BONUS/WAGER)։
2. Տոկոսադրույքը հաստատելիս բացատրվում է hold www.debit աղբյուրի թարգմանությունը, պրովայդերի պաշտոնական «հաշվարկային» հաշիվը։
3. Վերացման ժամանակ releulthold-ն է։
Settlment (արդյունքը)
Հաղթանակը 'պրովայդերի «հաշվարկային» հաշիվը CASH կամ WAGER 24BONUS 24CASH քաղաքականության մասին։
Պարտություն 'փակենք պրովայդերի «սպառումը» առանց վարկերի խաղացողին։
1. KYC/AML-ի ստուգումը, պատասխանատու խաղի սահմանները։
2. Hold-ը եզրակացության գումարի վրա։
3. PSA-ի հաջողությունը հաստատեց CASH-ի վերջնական debit հաշիվը։
4. PBS-ի հրաժարումը wwww.rele.hold-ն է։
6) Idampotenty և exactly-once «իմաստալից»
Ամենուր «operation _ id» (UUID/բարելավված ULID) յուրահատուկ ինդեքսով։ Երկրորդ հարցումը կանխատեսում է անցյալ վիրահատության կարգավիճակը։
Webhuks PMS/խաղերի պրովայդեր ՝ Inbox-2019 dedu.ru 'event _ id + signature "։ Մշակումը idempotent worker է (Medbox-pattern)։
Idempotency-Key հաճախորդի համար։ TTL պահել 2424-72 ռուբլիներ
7) Պահեստներ և բլուրներ (հոլդներ)
Հոլդը ոչ թե ապամոնտաժում է, այլ հասանելի մնացորդի «սառեցում»։
Կանոնները
Հոլդի կյանքի տևողությունը ՝ seconds minutes () կամ ժամացույց (եզրակացություն)։- Հոլդը կարող է մասամբ կամ ամբողջովին մարվել (partial settle)։
- Expire-ի դեպքում ավտոմատ releae և իրադարձություն է։
- Պահպանեք կապը 'hold _ id' bet _ id _ id/withdrance _ id "։
8) Արժույթի, FX և կլորացման
Դրամական գումարները 'մինորի միավորներում (cents), տեսակը' ամբողջ։- Թաղումները բանկային (round half to even) կամ T&C։
- FX: "CASH (MSR)" www.d.CASH (USD) "ավելի լավ է կիսել դրամապանակները։ Փոխակերպում անել որպես առանձին վիրահատություն
- «debit CORR, credit FX _ EURUSD» և «debit FX _ EURUSD, credit USD» - ապշեցուցիչ։
- Արգելված է ինքնաբերաբար «քաշել» դասընթացը բանավեճում։ բոլոր կանոնները FX քաղաքականության մեջ են։
9) Պատասխանատու խաղը և սահմանները
Deposit/Bet/Loss/Session limits (օր/շաբաթ/ամիս), «cooling-off», wwww.f-entlusion։- Իրականացվում են որպես pre-pork hold/debit-ից առաջ։
- Մերժումների լոգները առանձին աուդիտի ամսագրում են, հասանելի են sapport և կարգավորիչ։
10) Դրամապանակի շուրջ հակաֆրոդ ազդանշաններ
Սարքերի կլաստերները/ASN, փոքր չափի հաճախակի դեպոզիտները մեծ եզրակացություններ են, լվացքի արտոնագրեր։- Velocity-limits «deposit/withdrance» -ի վրա BIN/երկրի/սարքի վրա։
- Բլոկի թերթերը մրցույթի համար (դրամապանակներ/IBAN), «մուլների» ցուցակը։
- Դրամապանակի իրադարձությունները նշված են ֆեատրուրում (լոգին/դեպոզիտ/տոկոսադրույք)։
11) Կոնսիստենտություն և արտադրողականություն
Ճշմարտությունը vs kash
Ճշմարտությունը ledger-ում է։ API-ի համար «հավասարակշռություն ստանալը» - պահեք նյութականացված sepshot («user _ id + wallet _ type nobal.ru _ minor, version»)։
Գրեք 'գործարքը BD-ում առաջարկվում է հաշմանդամացնել քեշը։- «Ծանր» ֆլոուում (105) տեղին է shast-TTL 1-5-ից + ճշմարտության պարտադիր ստուգումը մինչև/մեծ տոկոսադրույքը։
Սկալյացիա
Շարդինգը «user _ id» (մոդուլ/ռենջացիա), CASH vs BONUS-ի տակ։- Տաք բանալիները (VIP/bots) request coalescing-ն է 'user _ id "։
- Ասինխրոն ագրեգացիաները (սկոմոնուկտիվ «posting»)։
12) API պայմանագրերը (կեղծ)
Հավասարակշռություն
http
GET /v1/wallets? types=CASH,BONUS
→ 200 {"wallets":[
{"type":"CASH","currency":"EUR","available":12050,"hold":500,"version":1942},  {"type":"BONUS","currency":"EUR","available":3000,"wager_req":15000}
]}Տոկոսադրույքը (հոլդից)
http
POST /v1/bets/place
{"bet_id":"b_123","amount":500,"currency":"EUR","source_policy":"casino_default", "idempotency_key":"ik_abc"}
→ 201 {"status":"HELD","hold_id":"h_789","expires_in":30}Սեթլմենտը
http
POST /v1/bets/settle
{"bet_id":"b_123","result":"WIN","payout":1250}
→ 200 {"status":"SETTLED","cash_delta":+1250}http
POST /v1/withdrawals
{"withdraw_id":"w_456","amount":10000,"currency":"EUR","method":"sepa", "idempotency_key":"ik_def"}
→ 202 {"state":"PENDING","next_check_sec":2,"status_url":"/v1/withdrawals/w_456"}13) Լարերի օրինակներ (double-entry)
Դեպոզիտ թիվ 100 (PMS fee 351, կոմմիս։ հաշիվը առանձին է)
Debit: PSP_Settlements(EUR)   10000
Credit: User. CASH(EUR)         10000
Debit: User. CASH (SDR) 100 (fee)
Credit: PSP_Fees(EUR)          100BONUS-ի թիվ 5 տոկոսադրույքը (թարգմանությունը WAGER-ում)
Debit: User. BONUS(EUR)       500
Credit: User. WAGER (CRR) 500 (շարժվել «waiger»)
Debit: User. WAGER(EUR)       500
Credit: Provider. Settla.ru (SDR) 500 (տոկոսադրույքը դուրս է գրվել)Հաղթանակ թիվ 12։ Նոյեմբերի 5-ին CASH-ում
Debit: Provider. Settlement(EUR)  1250
Credit: User. CASH(EUR)         1250Հոլդային մարումը (HOLD-ի պաշտոնական հաշիվով)
Debit: User. CASH(EUR)       500
Credit: User. HOLD (MSR) 500 (ստեղծվել է hold)
- settle
Debit: User. HOLD(EUR)       500
Credit: Provider. Settlement(EUR)   500
- վերացման ժամանակ
Debit: User. HOLD(EUR)       500
Credit: User. CASH(EUR)         50014) Աուդիտ, անփոփոխ և համապատասխանություն
WORM/immutability ամսագրի համար (օբյեկտ/WAL արխիվ)։- Metazurnals: Ով կարդում/փոխում էր լիմիթները, ովքեր անում էին ձեռքով (միայն «adjustrone-posting» -ի միջոցով)։
- GDPR/կարգավորիչները '5-10 տարի գործարքների պահպանումը (իրավասությամբ), խաղացողի համար հաշվարկների թափանցիկությունը (գրաքննության/վեյջերի պատմությունը)։
15) Մերժություն և DR
Multi-AZ պարտադիր; DR-տարածաշրջանը դրամապանակի համար 'www.nc-revication գոտում, async-ում' տարածաշրջանում; PITR-ը միացված է։
Promote standby-ը միայն ձեռքով չեկի թերթով (բացառել split-brain)։- Վերականգնումը ստուգել շաբաթական (test-restore), ստուգման հաշվետվությունների գումարները։
16) Դրամապանակի դիտարկումը
SLI: `deposit_success_ratio`, `withdraw_success_ratio`, `bet_hold_latency_p95`, `settlement_latency_p95`.
Тех: `ledger_postings_rate`, `db_connections_saturation`, `queue_lag_seconds`, `hold_expired_rate`.
Ալբերտներ 'շուկայի success PSA անկում, «hold _ expired _ rate», խաղերի պրովայդերի ռասինխրոն (չկա ապացույցներ> N րոպե)։
17) Փորձարկումներ և որակի վերահսկում
Պայմանագրային թեստեր PFC/խաղային պրովայդերների հետ (webhuks/ստորագրություն)։- Property-based-ը փողի թեստեր է 'բանավեճի գումարը = = վարկերի գումարը յուրաքանչյուր Posting-ում։
- Fuzz/chaos: PMS/պրովայդերի ձգձգումները, վեբհուկի կրկնությունները, ցանցային ֆալպերը։
- Բեռները ՝ burst no (60-120 s), soaks (4-8 ժամ), վերահսկողությունը «queue _ lag» և p99։
18) Չեկի թուղթ
- Կրկնակի ձայնագրություն ledger, բոլոր վիրահատությունները Posting-ի միջոցով '«operation _ id»։
- Հստակ spend-policies և առաջնահերթության կարգը (անձնավորված է գրառման հետ միասին)։
- Հոլդները TTL/partial settle/expiry, կապը bet/withdr.ru հետ։
- Inbox/Medbox, HMAC-webhuki, impotenty բոլոր սահմաններում։
- Անհատական դրամապանակներ CASH/BONUS/WAGER/FS/POINSA; տարանջատումը արտարժույթով։
- FX և թաղամասերը փոքրամասնությունների մեջ; կոնվերսիան առանձին վիրահատություն է։
- Պատասխան խաղից մինչև hold/debit; մերժումների աուդիտ։
- Կարդալու համար (կարճ TTL) + ճշմարտության պարտադիր ստուգում կրիտիկական գործողություններից առաջ։
- PITR/bakaps/DR ջութակները; ձեռքով promote, DR ուսուցում։
- Dashbords/alerta SLI + տեխնիկական; Logs WORM և metazurnals։
- Բեռի/քաոս թեստեր; reconciliation զեկույցները PSA/պրովայդերների հետ։
Ռեզյումե
Multi-wallet ճարտարապետությունը ոչ թե «հաշվեկշռի շատ թվեր» է, այլ ֆինանսական համակարգը կրկնակի ձայնագրությամբ, ծախսման քաղաքական գործիչներով, ռեզերվացիայով և թափանցիկ հետքով ռուսական և խաղացողների համար։ Պահեք ճշմարտությունը ամսագրում, օգտագործեք հոլդներ և գաղափարախոսություն, կիսեք դրամապանակներն ու արժույթները, ավտոմատիզացրեք reconciliation-ը և III-ը։ Այսպիսով, դրամապանակը արագ կլինի UX-ի համար, փողի համար ճշգրիտ և կայուն փողի համար։
