Skip to content

Sistema de Gambling

O CSGOFlip oferece múltiplas modalidades de jogos, todas implementadas com o sistema Provably Fair para garantir transparência e justiça.

Modalidades Disponíveis

Visão Geral das Modalidades

ModalidadeDescriçãoJogadoresProvably Fair
CasesAbertura de caixas com roleta1✅ HMAC-SHA256
FLIPRoleta dupla com itens raros1✅ Dual Seed
BattlesBatalhas PvP (1v1 e 3v3)2-6✅ Shared Seed
UpgradesMelhorar valor do item1✅ HMAC-SHA256
SwapsTroca de itens2-
RafflesSorteios com ticketsN✅ Random.org

Fluxo Geral de um Jogo

Arquitetura dos Jogos

Camadas

src/
├── domain/
│   └── entities/
│       ├── case.entity.ts
│       ├── case-opening.entity.ts
│       ├── battle.entity.ts
│       ├── battle-round.entity.ts
│       ├── upgrade.entity.ts
│       ├── swap.entity.ts
│       └── raffle.entity.ts

├── application/
│   └── use-cases/
│       ├── case-opening/
│       │   ├── open-case.use-case.ts
│       │   └── get-case-history.use-case.ts
│       ├── battle/
│       │   ├── create-battle.use-case.ts
│       │   ├── join-battle.use-case.ts
│       │   └── execute-battle.use-case.ts
│       ├── upgrade/
│       │   └── execute-upgrade.use-case.ts
│       ├── swap/
│       │   └── execute-swap.use-case.ts
│       └── raffle/
│           ├── create-raffle.use-case.ts
│           └── draw-raffle.use-case.ts

└── infrastructure/
    └── provably-fair/
        └── provably-fair.service.ts

Serviços Compartilhados

typescript
// Todos os jogos usam estes serviços
interface GamblingServices {
  provablyFairService: ProvablyFairService;  // Geração de resultados
  transactionService: TransactionService;    // Débito/crédito
  inventoryService: InventoryService;        // Gestão de itens
  webSocketGateway: WebSocketGateway;        // Notificações
  auditService: AuditService;                // Logs
}

Probabilidades e Odds

House Edge

Cada modalidade tem uma margem da casa configurável:

ModalidadeHouse EdgeNotas
Cases5-15%Depende da caixa
Battles5%Taxa sobre o pot total
Upgrades10%Ajustado na probabilidade
Raffles5%Taxa sobre tickets

Cálculo de Probabilidade

typescript
// Exemplo: Cálculo de probabilidade de item em case
function calculateItemProbability(
  item: CaseItem,
  caseConfig: Case,
): number {
  // Base probability from rarity
  const rarityProbability = RARITY_PROBABILITIES[item.rarity];
  
  // Adjust by item value relative to case price
  const valueMultiplier = item.valueCents / caseConfig.priceCents;
  
  // Apply house edge
  const houseEdge = caseConfig.houseEdge;
  
  return rarityProbability * valueMultiplier * (1 - houseEdge);
}

Validações Comuns

Antes de Jogar

  1. Saldo suficiente - Verificado via TransactionRepository
  2. Conta ativa - Usuário não banido
  3. Limites de aposta - Mínimo e máximo respeitados
  4. Rate limiting - Proteção contra spam
  5. Cooldown - Tempo entre jogadas (se aplicável)

Durante o Jogo

  1. Locks distribuídos - Prevenir race conditions
  2. Transações atômicas - Tudo ou nada
  3. Validação de estado - Jogo não pode ser alterado

Após o Jogo

  1. Registro de auditoria - Toda jogada é logada
  2. Verificação Provably Fair - Resultado pode ser verificado
  3. Atualização de estatísticas - XP, leaderboards

Próximas Seções

Documentação Técnica CSGOFlip