WinUpGo
Издөө
CASWINO
SKYSLOTS
BRAMA
TETHERPAY
777 FREE SPINS + 300%
Cryptocurrency Casino Крипто казино Torrent Gear - Сиздин жалпы торрент издөө! Torrent Gear

Баланс жана капчыктар: Архитектура multi-wallet

1) Эмне үчүн multi-wallet жана кандай максаттар

Бир жазуу "баланс = сан" iGaming чындыкты камтыбайт. Жеке капчыктар/субэсептери керек: реалдуу акча (cash), бонустук каражаттар, вэйджер-пул, фриспиндер, комп-пункттар, кээде - валюталык капчыктар (EUR/USD/BRL).

Архитектуранын максаттары:
  • Акча тактыгы (double-entry, угуу жөндөмдүүлүгү).
  • Эсептен чыгаруу саясаты (мисалы, адегенде бонус/waijer, андан кийин cash).
  • ылдамдыгы (p95 API ≤ 250-400 мс, реалдуу убакыт курсу/орнотуу).
  • Коопсуздук жана комплаенс (KYC/AML, жоопкерчиликтүү оюн чектери, жөнгө салуучу).
  • масштабы: чокулары → он ми бүтүмдөр/сек, миллиарддаган Posting/ай.

2) Маалыматтар модели: "Ledger + Subwallets"

Минималдуу заттар

Эсеп: оюнчу/бренд/базар.

Wallet: `{type: CASHBONUSWAGERFSPOINTS, currency, status}`.
LedgerEntry (двойная запись): `debit_account`, `credit_account`, `amount`, `currency`, `operation_id`, `category`, `created_at`.
Posting: атомдук бизнес-операция, бириктирет 2 + LedgerEntry.
Hold/Reservation: акча каражаттарын убактылуу бөгөт коюм/чыгаруу.
Саясат: эсептен чыгаруу/чегерүү артыкчылыктарынын эрежелери.
FXRate: курс/тактык/тегеректөө эрежелери.
Limit: күндүзгү/айлык/жоопкерчиликтүү оюн.

Таблицалардын үлгүсү (жөнөкөйлөштүрүлгөн)

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)

-- Hold (камдар)
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 (ccy_from, ccy_to, rate, precision, valid_from)

Эреже: чындык өткөргүч журналында жашайт ('ledger _ entries'). Учурдагы баланс - же агрегат (материалдаштырылган снэпшот), же журналдан эсептелинет (кымбат, бирок жалгыз туура).


3) капчык түрлөрү жана алардын жүрүм-туруму

КапчыкЭмне үчүнСиз толуктай аласызСиз жазууга болотАтайын эрежелер
CASHРеалдуу акчаPSP/кол менен эсептөө/кайтарууКоюмдар, сатып алуулар, жыйынтыкAML/KYC таасир этет; транзакциялар бухгалтердик эсепке түшөт
BONUSБонустук акчаПромо/кампанияларТарифтер (эрежелер боюнча)түздөн-түз чыгарылган эмес, Veyjer аткарууда Cash айландырылат
WAGER"Тоңдурулган" бонустарды эсепке алууКоюм боюнча бонустан автоОюн провайдеринин пайдасына эсептен чыгарууsettle/жокко чыгаруу учурунда бошотуу эрежеси
FS (FreeSpins)Айлануу пакеттериКампанияларСлоттордо төлөөАкча эквиваленти T&C менен белгиленет
POINTSБерилгендик/КомпактАктивдүүлүкДүкөн/статустарЭмес, акча; AML отчетторуна кирбейт

4) Эсептен чыгаруу саясаты жана артыкчылыктын тартиби

Каражат булагынын алгоритмин так формалдаштырыңыз: Мисал (Slots/Casino):

1. Биринчи WAGER тартып (активдүү WAEGER).

2. Андан кийин BONUS чейин түгөнө элек.

3. Калдыгы - CASH.

Мисал (спорт):

1. Биринчи CASH (жөнгө салуучу/салык).

2. Андан кийин BONUS (freebet), WAGER которуу.

Postings сактагыла "саясат чечим" саппорт жана аудит көрүп атрибут катары "эмне үчүн".


5) Акча жана операциялардын жашоо цикли

Депозит

1. 'POST/wallet/deposit' → pending жазууну түзүү (inbox колбэк PSP).

2. PSP вебхук (HMAC кол тамгасы, 'operation _ id' демпотенттиги) → credit CASH, category = 'DEPOSIT'.

3. Биз окуяны 'wallet _ updated' деп жарыялайбыз.

Коюм

1. 'POST/bet/place' → булак эсебинде (CASH/BONUS/WAGER) hold (резерв) түзөбүз.

2. Ченди ырастаганда → которуу hold → debit булагы, кызмат "эсептешүү" эсебинин кредити.

3. Жокко чыгарганда - release hold.

Сеттлмент (жыйынтык)

Утуш: "Эсептешүү" провайдердик эсебинин дебити → credit CASH же WAGER → BONUS → CASH саясат боюнча.

Жоготуу: зым менен жабуу "чыгаша" провайдер → кредитсиз оюнчу.

1. KYC/AML текшерүү, жоопкерчиликтүү оюндун чектери.

2. Hold суммасы.

3. PSP ийгилиги → акыркы debit CASH → кредит эсеби "төлөм".

4. PSP → release hold.


6) Idempotentity жана exactly-once "мааниси боюнча"

Бардык жерде 'operation _ id' (UUID/жакшыртылган ULID) уникалдуу индекси менен. Кайталап өтүнүч → акыркы иш абалы.

PSP/оюн провайдери: 'event _ id + signature' боюнча dedupe менен Inbox жадыбалы. Иштетүү - Idempotent Worker (Outbox-үлгү).

кардар үчүн HTTP боюнча Idempotency-Key; TTL сактоо ≥ 24-72 саат.


7) камдар жана Holds (Holds)

Холд - эсептен чыгаруу эмес, жеткиликтүү калдыкты "тоңдуруу".

Эрежелер:
  • Холлдун өмүрү: seconds → minutes (коюм) же саат (жыйынтык).
  • Холд жарым-жартылай же толугу менен төлөнүшү мүмкүн (partial settle).
  • expire - автоматтык бошотуу жана окуя.
  • 'hold _ id' bet _ id/withdraw _ id 'байланышын сактаңыз.

8) Акча, FX жана тегеректөө

Акча суммасы - минор бирдигинде (cents), түрү - бүтүн.

Банктык тегеректөө (round half to even) же T&C.

FX: 'CASH (EUR) ' CASH (USD) 'капчыктарды бөлүү жакшы. Конверсия өзүнчө операция катары жасалат:
  • 'debit EUR, credit FX_EURUSD' жана' debit FX_EURUSD, credit USD '- аудит үчүн ачык-айкын.
  • Талашта автоматтык түрдө "жетүүгө" тыюу салынат; бардык эрежелер - FX саясатында.

9) Жооптуу оюн жана лимиттер

Deposit/Bet/Loss/Session лимиттери (күн/жума/ай), "cooling-off", өз алдынча exclusion.

hold/debit чейин pre-check катары ишке ашырылат.

Мүчүлүштүктөрдүн логдору - өзүнчө аудит-журналга, саппорт жана жөнгө салуучу органга жеткиликтүү.


10) Капчыктын айланасында антифрод сигналдары

Түзмөктөрдүн кластерлери/ASN, чакан суммадагы тез-тез депозиттер → чоң корутундулар, кир жуугуч үлгүлөр.

BIN/өлкө/аппарат боюнча 'deposit/withdraw' боюнча Velocity-лимиттери.

Алуучулар үчүн блок-баракчалар (капчыктар/IBAN), "качырлардын" тизмеси.

капчык Окуялар → feature store эсеби (логин/депозиттик/коюм).


11) консистенттүүлүк жана аткаруу

Чындык vs кэш

Чындык - ledger. API үчүн "балансты алуу" - материалдаштырылган снэпшот ('user _ id + wallet _ type → balance_minor, version').

жазуу: DD → майып кэш бүтүм.

"Оор" Flow (Live) менен short-TTL 1-5 +/ири чен алдында чындыкты милдеттүү текшерүү үчүн ылайыктуу.

Скалировка

'user _ id' (модулу/ранжирлөө), CASH vs BONUS астында өзүнчө шард-пулдар.

Hot Keys (VIP/боттор) - request coalescing 'user _ id'.

Асинхрондук агрегациялар ('posting' → фонунда "snapshot-updater").


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 (PSP fee €1, коммис. эсеп - өзүнчө)


Debit: PSP_Settlements(EUR)   10000
Credit: User. CASH(EUR)         10000

Debit: User. CASH (EUR) 100 (fee которуу)
Credit: PSP_Fees(EUR)          100

БОНУС €5 коюм (WAGER котормосу)


Debit: User. BONUS(EUR)       500
Credit: User. WAGER (EUR) 500 ("Waijer" көчүп)
Debit: User. WAGER(EUR)       500
Credit: Provider. Settlement (EUR) 500 (эсептен чыгарылган)

€12 утат. 5 → CASH


Debit: Provider. Settlement(EUR)  1250
Credit: User. CASH(EUR)         1250

Холдингдик эсептен чыгаруу (HOLD кызматтык эсеби аркылуу сатуу)


Debit: User. CASH(EUR)       500
Credit: User. HOLD (EUR) 500 (hold түзүлгөн)
-- менен settle
Debit: User. HOLD(EUR)       500
Credit: Provider. Settlement(EUR)   500
-- жокко чыгарганда
Debit: User. HOLD(EUR)       500
Credit: User. CASH(EUR)         500

14) Аудит, өзгөрбөстүк жана шайкештик

WORM/журнал үчүн immutability (объект сактоо/WAL архиви).

Кирүү Methajurnals: ким окуду/чектерди өзгөрттү, ким кол менен оңдоолорду жасады (негиздөө менен "adjustment-posting" аркылуу гана).

GDPR/жөнгө салуучулар: транзакцияларды 5-10 жыл сактоо (юрисдикция боюнча), оюнчу үчүн эсептешүүлөрдүн ачык-айкындуулугу (эсептен чыгаруу/соодагердин тарыхы).


15) ката каршылык жана DR

Multi-AZ милдеттүү; капчык үчүн DR-аймак: аймакта sync-репликация, 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`.

Alerty: рынокто PSP success түшүп, өсүш 'hold _ expired _ rate', оюн провайдери (эч кандай ырастоо жок> N мин).


17) тестирлөө жана сапатын контролдоо

PSP/оюн провайдерлери менен контракттык тесттер (вебхоктор/кол тамгалар).

Property-based акча тесттер: дебет суммасы = = ар бир Posting кредиттердин суммасы.

Fuzz/chaos: PSP/провайдердин кечигүүлөрү, вебхуктардын кайталанышы, тармактык флаппи.

Жүктөө: бурст коюм (60-120 с), soaks (4-8 саат), контролдоо 'queue _ lag' жана p99.


18) Өндүрүш даярдыгы чек-тизмеси

  • Кош ledger жазуу, 'operation _ id' менен Posting аркылуу бардык иш.
  • Так spend-саясат жана артыкчылык тартиби (posting менен бирге туруктуу).
  • TTL/partial settle/expiry менен Hold, bet/withdraw менен байланыш.
  • Inbox/Outbox, HMAC-Webhuke, бардык чек демпотенттик.
  • Жеке капчыктар CASH/BONUS/WAGER/FS/POINTS; валюталар боюнча бөлүү.
  • FX жана чакан бирдиктерде тегеректөө; конверсия - өзүнчө операция.
  • hold/debit чейин жооптуу оюн чеги; баш тартуу аудити.
  • Окуу үчүн кэш (кыска TTL) + оор иш-аракет алдында чындыкты милдеттүү текшерүү.
  • PITR/backaps/DR скрипттер; кол promote, үзгүлтүксүз DR көнүгүүлөр.
  • Dashbord/alerty SLI + техникалык; WORM Логи жана Methajurnals жетүү.
  • Жүктөө/башаламандык-тесттер; PSP/провайдерлер менен reconciliation отчеттору.

Резюме

Архитектура multi-wallet - бул "баланстын көп сандары" эмес, эки эселенген, сарптоо саясаты, камдык жана аудит жана оюнчулар үчүн ачык-айкын изи менен каржы системасы. журналында чындыкты кармап, Holdings жана Idempotentity колдонуу, капчыктарды жана акча бөлүшүү, автоматташтыруу reconciliation жана DR. Ошентип, капчык UX үчүн тез болот, акча үчүн так жана жогорку жүк жана жөнгө салуучу текшерүү боюнча туруктуу.

× Оюндарды издөө
Издөөнү баштоо үчүн жок дегенде 3 белгини киргизиңиз.