GH GambleHub

Jerarquía de límites

El límite es el límite formalizado de la operación en tiempo/volumen/costo. En iGaming y Fintech, los límites son la base de la seguridad, el cumplimiento de normas y la gestión de riesgos. La jerarquía de límites establece cuál es la regla principal y dónde se ejecuta para evitar el doble gasto, exceso de apuestas/depósitos, abuso de bonificaciones y violaciones del juego responsable.

1) Clasificación de límites

Por fuerza de uso

Hard - insuperable (prohibición de la operación).
Soft - advertencia/fricción (capcha, confirmación), escalamiento a duro cuando se repite.

Por

Efectivo: importe del depósito/tasa/pago; límites diurnos/semanales/mensuales.
Temporal: duración de la sesión, interrupciones, «enfriamiento», tiempos de espera.
Cuantitativo: número de transacciones, giros, solicitudes de API.
Velocidad (rate limits): RPS/competencia.
Cuotas: presupuesto de acción por ventana (N por día/semana).
Contextual: por juego/proveedor/método de pago/dispositivo/país.

Por propietario

Regulador/de marca (tenant/región)

Sistema (plataforma, protección de la infraestructura)

Personalizado (self-limits dentro de RG)

2) Medidas y llaves (scoping)

Cada límite se ajusta a un contexto (clave):

tenant_id · region · license · currency · channel · brand player_id · kyc_tier · rg_state · age game_id · provider_id · product (casino/sports/live)
payment_method · device_fingerprint · ip_asn

Cuanto más precisa sea la clave, mayor será la prioridad (consulte la jerarquía a continuación).

3) Jerarquía y prioridades (más vinos específicos)

Organizaremos los niveles de lo común a lo privado:

GLOBAL_DEFAULT
< TENANT/BRAND
< REGION/LICENCE
< PRODUCT/PROVIDER/GAME
< CURRENCY/CHANNEL/PAYMENT_METHOD
< PLAYER (KYC/RG)
< SESSION/DEVICE
<REQUEST (idempotency-key operation)
Reglas:
  • El contexto más estrecho se superpone al amplio: player> region.
  • Cualquier deny explícito gana allow.
  • Los conflictos soft/hard se resuelven a favor de la mano dura.
  • Con el merje de cuotas/ventanas, gana el valor mínimo permitido (min-cap).

4) Modelo de datos (simplificado)

sql
CREATE TABLE limits (
id      bigserial primary key,
scope jsonb, -- context keys (tenant, region, player_id,...)
kind     text,     -- bet_amount, deposit_daily, rps_api, payout_single, session_duration type     text,     -- HARD      SOFT      QUOTA     RATE value numeric, -- sum/qty/seconds/ops window_sec int, -- for QUOTA/RATE, else null burst int, -- for RATE token-bucket currency text, -- if applicable reason_code text, -- regulator/product/security valid_from timestamptz,
valid_to   timestamptz,
priority int default 0, -- manual specificity overlide created_by text,
created_at  timestamptz default now()
);

CREATE TABLE limit_counters (
key_hash   text primary key,  -- hash(scope,kinda,window_start)
window_start timestamptz,
consumed numeric, -- money/pcs/sec updated_at timestamptz
);

Idempotencia: todas las operaciones llevan 'operation _ id'; el incremento del contador se realiza una vez (inbox/outbox o compare-and-swap por versión).

5) Algoritmo de evaluación (evaluación)

1. Recogida de candidatos por 'kind' y cruce de' scope '.
2. Clasificación por especificidad (número de medidas coincidentes) y 'priority'.
3. Parámetro Merge: rigidez (hard> soft), min-cap, min-window.
4. Verificación de cuota/límite de velocidad: token-baket (TASA) + fix/ventana deslizante (QUOTA).
5. Решение: `ALLOW | SOFT_WARN | DENY` + `retry_after`/`remaining`.
6. Registro de seguimiento: auditoría de eventos y métricas.

Seudocódigo de contrato de resultado:
json
{
"decision":"DENY",
"kind":"deposit_daily",
"remaining":0,
"window_reset_at":"2025-10-31T21:00:00Z",
"matched_limit_id":12345,
"policy":"REGULATORY",
"reason":"DAILY_CAP_REACHED"
}

6) Puntos de aplicación (puntos de enforcement)

API Gateway - Protección de infraestructura: RATE (RPS), CONCURRENCY, burst.
Servicios de dominio - límites semánticos: depósitos, apuestas, pagos, sesiones.
Adaptadores de proveedor: los límites duplicados/locales de los proveedores (validar antes de la llamada).
UX cliente - Consejos preventivos (SOFT), «sobran N», temporizadores.

Regla: cancelar una cuota/tokens una vez - donde la operación se convierte en irreversible (después de reservar el monedero/paso autenticado válido).

7) Límites monetarios: depósito/tasa/pago

Por currency: guarda los límites en la divisa de la operación, no a través de FX «sobre la marcha».
Min/Max: `min_bet`, `max_bet`, `max_payout_single`.
Ventanas: 'deposit _ daily/weekly/monthly' con límites fijos (por ejemplo, en el tiempo de licencia).
Composición: rango total permitido = intersección (regional ∩ de marca ∩ personalizado).

8) Juego responsable (RG)

Los self-limits (el jugador se ha fijado) son siempre más duros que los de marca.
Limitaciones de tiempo: 'session _ duration', 'cool _ off', 'self _ exclusion'.
Escalamiento: superando el límite soft → advertencia, repetición → hard (dentro de la ventana).
Auditoría: cada cambio de RG se registra de forma invisible (quién/cuándo/por qué).

9) Rate limit vs Quota: cuándo qué

Límite de velocidad (token-bucket/leaky): protección contra ráfagas; aplicar en gateway/adaptadores.
Quota (ventana fija/deslizante): administrar el presupuesto total de acciones/dinero; aplicar en un dominio (deposit_daily, bet_count_hourly).
A menudo se utilizan juntos: 'RATE' (picos instantáneos) + 'QUOTA' (presupuesto diario).

10) Multi-tenant y multi-región

Los límites siempre contienen 'tenant _ id' y 'region/licence'.
Residencia: contadores y almacenamiento - en una región «doméstica».
Fairness: separe los grupos RATE/QUOTA per tenant para que el «ruidoso» no interrumpa el SLO de otros.

11) Idempotencia y consistencia

Comandos con 'operation _ id'; la repetición no debe aumentar 'consumed'.
Para dinero - strict path: reserva de billetera e incrementos de counters en una sola transacción/saga (TCC).
Para RATE - Utilice los incrementos atómicos/almacenes de la ventana actual.

12) Observabilidad

Métricas:
  • `limit_eval_p95_ms`, `decision_rate{ALLOW,DENY,SOFT}`,
  • 'quota _ remaining _ percent' por especies principales,
  • `rate_throttled`, `burst_dropped`,
  • `rg_self_limit_hits`, `regulatory_hits`.

Логи/трейсинг: `matched_limit_id`, `scope_hash`, `operation_id`, `window_start/reset`, `remaining`.

Alertas: crecimiento de 'DENY '/' 429' más allá del umbral, logro frecuente de las gotas regulatorias, 'hot key' por jugador/dispositivo.

13) Versificación y auditoría

Cada regla es con 'valid _ from/valid _ to', 'created _ by', 'reason _ code'.
События: `LimitCreated/Updated/Deleted`, `LimitHit`, `LimitDenied`.
Almacene una «instantánea» de las reglas activas para reproducir soluciones históricas (dispute-ready).

14) Pruebas

Pruebas de contrato: esquema y parámetro de especificidades/prioridades.
Property-based: «más vinos especiales», «deny gana allow», «min-cap».
Casos de oro: conjunto de conflictos de referencia (tenant vs región, RG vs marca).
Chaos: ráfagas de solicitudes (RATE), carreras por contadores, repetición de equipos (idempotencia).
E2E: partidos de límites en las listas de cheques del regulador (depósito/semana/mes).

15) Playbucks

1. Tormenta 429/throttling en gateway

Reducir la concurrencia, aumentar temporalmente el token baket, activar la priorización de rutas críticas, analizar fuentes (ASN/IP).

2. Fallos masivos en el límite regulatorio

Comprobar el horario de las ventanas y el tiempo de espera; prolongar soft-UX (explicaciones), notificar el cumplimiento.

3. Falsos negativos positivos debido a las carreras

Habilitar la serialización por clave 'player _ id/kind', ir a CAS/dedoop por' operation _ id '.

4. Discrepancia con el límite de proveedores

Sincronizar min/max por juego, agregar una pre-validación al adaptador, bajar temporalmente el directorio/playsment del juego.

16) Errores típicos

La falta de jerarquía → «arrastrar la cuerda» entre las reglas.
Cálculo de límites en IU sin validación de servidor.
Sustitución de cuotas por límites de rate (y viceversa).
Ignorar las monedas/pasos en los límites monetarios (CLP/JPY).
No hay idempotencia → doble quita de cuota.
Una sola agrupación de RATE en todos los tenantes → problemas de shearing.
La falta de auditoría → es imposible explicar el rechazo.

17) Recetas rápidas

Aceptación de apuestas: 'max _ bet' = min (región, juego, proveedor, RG personalizado); RATE en '/bets. place '= 20 rps/player, QUOTA = 500 apuestas/día.
Depósitos: 'depósito _ daily/monthly' + 'depósito _ single'; validar los límites PSP.
Sesiones: 'session _ duration' hard + recordatorios cada N minutos (soft).
Protección API: RATE global por claves 'ip _ asn' y' tenant _ id '; ventanas canarias para lanzamientos.

18) Lista de verificación antes de la venta

  • Se ha establecido la jerarquía de especificidad y la política del merge (más vinos específicos, deny> allow).
  • Modelo de datos con 'scope', 'kind',' type ', ventanas, monedas y prioridades.
  • Puntos de aplicación: gateway (RATE), dominio (QUOTA/monetario), adaptadores (proveedor).
  • Idempotencia ('operation _ id') y serialización por claves; los contadores son atómicos.
  • Observabilidad: métricas de soluciones, lagunas de ventanas, alertas; seguimiento con 'matched _ limit _ id'.
  • Versionar y auditar sin cambios los cambios y los positivos.
  • Paquete de prueba: contract/property/golden/chaos/E2E.
  • Se cumplen la residencia de fairness y data multi-tenant.
  • UX para límites SOFT: mensajes comprensibles, 'remaining/retry _ after'.
  • Los playbucks de incidentes están alineados con el cumplimiento y el soporte.

Conclusión

La jerarquía de límites es un sistema de toma de decisiones, no un conjunto de números dispares. La especificidad clara y el orden de prioridades, el modelo único de datos, los puntos de aplicación correctos, la idempotencia y la observabilidad convierten los límites en un circuito fiable de seguridad y conformidad que escala por tenantes, regiones y productos, y no interfiere con el crecimiento.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.