Система верифікації гравців крипто-казино: модульна архітектура
Спроектувати систему верифікації для крипто-казино — це знайти баланс між анонімністю Web3 та вимогами регуляторів. Крипто-казино працюють під подвійним тиском: користувачі цінують приватність, а ліцензуючі органи та платіжні партнери вимагають KYC, AML та перевірку віку. Це не просто юридична формальність — архітектура повинна забезпечувати комплаєнс, не відлякуючи аудиторію. Наш підхід — модульна tiered-система, яка адаптується під ліцензію та регіон. За 5+ років у блокчейн-розробці ми реалізували понад 30 KYC-рішень під ключ для крипто-проектів, включаючи казино та обмінники, і маємо сертифікати від Sumsub та Chainalysis.
Як працює tiered-верифікація? — розробка системи верифікації
Не всі гравці потребують однакової перевірки. Tiered approach — стандарт для gambling:
| Рівень | Ліміт | Вимоги | Час перевірки |
|---|---|---|---|
| Tier 0 | до $500/міс | Email + wallet + auto AML | Миттєво |
| Tier 1 | до $5,000/міс | Ім'я, дата народження, країна | 1-2 хв |
| Tier 2 | до $50,000/міс | Government ID + liveness | 5-10 хв |
| Tier 3 | > $50,000/міс | Source of Funds, PEP | 1-2 дні |
Tier 0 (мінімальний): електронна пошта, підключення гаманця та автоматичний AML-скринінг адреси через Chainalysis або Elliptic. Жодних документів, відповідь миттєва. Tier 1 (базовий): ім'я, дата народження, країна проживання. Автоматична перевірка за sanctions lists. Підтвердження акаунту через email або SMS. Tier 2 (розширений): government ID (паспорт, права), liveness check, адреса проживання. Використовуємо Sumsub, Onfido або аналог. Tier 3 (enhanced due diligence): Source of Funds, Source of Wealth, розширений PEP/Sanctions check, ручна перевірка комплаєнс-офіцером.
При налаштуванні рівнів у конфігурації задаються ліміти та вимоги для кожного tier. Наприклад, для Tier 0 ліміт по депозиту — 0.1 BTC/міс, для Tier 1 — 1 BTC. Рівні автоматично підвищуються при досягненні ліміту.
Які AML-інструменти використовувати?
Для казино критично: гроші з darknet markets або stolen funds — пряма відповідальність платформи. Порівняння провайдерів:
| Провайдер | Тип моніторингу | Швидкість | Кастомізація |
|---|---|---|---|
| Chainalysis KYT | Ончейн-транзакції | Реал-тайм | Висока |
| Elliptic | Ончейн + офчейн | Реал-тайм | Середня |
| Парсер OFAC | Статичні списки | Щоденно | Повна |
Згідно з документацією Chainalysis KYT, категорії ризику включають darknet market, stolen funds, ransomware, sanctions. Для таких адрес — reject депозиту та заморозка акаунту. Grey zone (gambling, P2P exchange, mixing) потребують ручного review. Окремо перевіряємо wallet-адреси в OFAC SDN List через Chainalysis або власний парсер — список оновлюється щоденно.
Sumsub обробляє запити в 3 рази швидше, ніж ручна верифікація, а Chainalysis KYT виявляє підозрілі транзакції на 95% точніше статичного OFAC-скринінгу.
Інтеграція Chainalysis KYT (Know Your Transaction)
async function screenAddress(address: string, asset: string): Promise<RiskScore> { const response = await chainalysisClient.post('/v1/users', { userId: address, }); const transferResponse = await chainalysisClient.post('/v1/transfers', { network: asset, asset: asset, transferReference: address, direction: 'received', }); return { riskScore: transferResponse.data.riskScore, cluster: transferResponse.data.cluster?.name, category: transferResponse.data.cluster?.category, }; } Як інтегрувати KYC-провайдера?
Sumsub — стандартний вибір для gambling
Sumsub надає WebSDK для вбудованого flow. Генерація токена на бекенді:
async function getSumsubToken(applicantId: string): Promise<string> { const timestamp = Math.floor(Date.now() / 1000); const method = 'POST'; const url = `/resources/accessTokens?userId=${applicantId}&levelName=basic-kyc-level`; const signature = crypto .createHmac('sha256', SUMSUB_SECRET_KEY) .update(timestamp + method + url) .digest('hex'); const response = await axios.post( `https://api.sumsub.com${url}`, {}, { headers: { 'X-App-Token': SUMSUB_APP_TOKEN, 'X-App-Access-Sig': signature, 'X-App-Access-Ts': timestamp, } } ); return response.data.token; } // Frontend ініціалізація import SumsubWebSdk from "@sumsub/websdk"; const sdk = SumsubWebSdk.init( accessToken, () => refreshToken(), { lang: "uk", onMessage: (type, payload) => { if (type === "idCheck.onApplicantStatusChanged") { if (payload.reviewResult?.reviewAnswer === "GREEN") { handleKYCApproved(payload.applicantId); } } }, onError: (error) => console.error("Sumsub error:", error), } ); sdk.launch("#sumsub-container"); Важливий момент — перевірка підпису webhook, щоб не прийняти підроблений callback:
function verifySumsubWebhook(req: Request): boolean { const signature = req.headers['x-payload-digest']; const secret = process.env.SUMSUB_WEBHOOK_SECRET; const expectedSignature = crypto .createHmac('sha256', secret) .update(req.rawBody) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(expectedSignature) ); } async function handleSumsubWebhook(payload: SumsubWebhookPayload) { const { applicantId, reviewResult, type } = payload; if (type === "applicantReviewed") { if (reviewResult.reviewAnswer === "GREEN") { await db.updateUserKYCStatus(applicantId, "APPROVED", reviewResult.reviewRejectType); await updateUserTier(applicantId); } else if (reviewResult.reviewAnswer === "RED") { await db.updateUserKYCStatus(applicantId, "REJECTED", reviewResult.moderationComment); await notifyUser(applicantId, "kyc_rejected"); } } } Верифікація віку без документів
Для ринків, де документальний KYC неприйнятний, використовуємо Yoti Age Verification. Користувач отримує signed age token; казино бачить тільки "старше 18". AgeID (UK стандарт) — аналогічний підхід. Інтеграція через OAuth 2.0: Yoti виступає identity provider. KYC через Yoti виконується в 10 разів швидше за ручну перевірку віку.
Геоблокування та IP-верифікація
KYC не замінює геоблокування. Обов'язкові перевірки:
async function checkPlayerEligibility(ip: string, walletAddress: string): Promise<EligibilityResult> { const geoResult = await maxmindClient.country(ip); const country = geoResult.country.isoCode; if (BLOCKED_COUNTRIES.includes(country)) { return { allowed: false, reason: 'geo_blocked', country }; } const ipRisk = await ipqualityscore.check(ip); if (ipRisk.vpn || ipRisk.proxy || ipRisk.tor) { return { allowed: false, reason: 'vpn_detected' }; } return { allowed: true, country }; } Списки заблокованих країн визначаються ліцензією: Кюрасао, Мальта, Естонія — кожна зі своїм списком restricted jurisdictions.
Чому необхідна відповідальна гра?
Ліцензовані казино зобов'язані реалізувати функції responsible gambling:
- self-exclusion (блокування від 1 дня до перманентного)
- deposit limits (денні/тижневі/місячні — зменшення миттєво, збільшення через cooling-off 24-72 години)
- reality check (сповіщення про час та втрати)
- cooling-off period (тимчасова пауза)
Ці заходи не лише відповідають вимогам регуляторів, але й знижують ризики негативного користувацького досвіду. Автоматизація відповідальної гри — обов'язковий елемент комплаєнсу.
Процес роботи
- Аналітика: вивчення вимог ліцензії та вибір провайдерів.
- Проектування: архітектура KYC/AML, схема потоків.
- Інтеграція: підключення Sumsub, Chainalysis, MaxMind, Yoti.
- Тестування: регрес та навантаження.
- Деплой та навчання комплаєнс-команди.
Терміни
| Компонент | Термін |
|---|---|
| KYC tier system + Sumsub | 2-3 тиж |
| AML screening + webhook | 1-2 тиж |
| Геоблокування + IP | 1 тиж |
| Responsible gambling | 1-2 тиж |
| Admin dashboard | 1-2 тиж |
Повна комплаєнс-система — 6-10 тижнів. Економія на автоматизації досягає 60% порівняно з ручною верифікацією. Орієнтовна вартість системи — від $15,000. Вартість розраховується індивідуально залежно від набору провайдерів та складності інтеграції. Ми гарантуємо якість інтеграцій та надаємо сертифікати від провайдерів.
Що входить у роботу
- Архітектурна документація
- Інтеграція провайдерів (Sumsub, Chainalysis, Yoti, MaxMind)
- Написання смарт-контрактів (при необхідності)
- Навантажувальне тестування
- Навчання комплаєнс-команди
- Підтримка на запуску
Отримайте оцінку вашого проекту — зв'яжіться з нами. Ми допоможемо підібрати провайдерів та оптимізувати бюджет. Замовте розробку системи верифікації під ключ — обговоріть деталі з нашими інженерами.







