No Aceon Poker você não precisa confiar — pode verificar. Cada mão é embaralhada por um gerador criptograficamente seguro a partir de duas sementes, e qualquer pessoa pode recomputar o baralho exato e conferir que ele bate com o selo publicado antes da mão.
SHA-256("serverSeed:clientSeed"). O selo prende o servidor às sementes sem
revelá-las.
serverSeed e a
clientSeed.
O embaralhamento é determinístico a partir das sementes e do nonce da mão:
2 3 4 5 6 7 8 9 T J Q K A e dos naipes
s h d c — ou seja 2s, 2h, 2d, 2c, 3s, …, As, Ah, Ad, Ac.
HMAC-SHA256(chave = serverSeed, mensagem = "clientSeed:nonce:counter"), com o
counter começando em 0 e incrementando a cada bloco. Consumimos o keystream em
pedaços de 4 bytes (uint32 big-endian).
[0, max]: amostragem por rejeição —
range = max + 1, limit = floor(2³² / range) × range; sorteia
uint32 até obter um valor < limit e devolve valor % range.
i de 51 até 1, sorteia
j em [0, i] e troca as posições i e j.
O verificador abaixo é uma reimplementação fiel, byte a byte, do algoritmo do motor em
packages/core-poker (src/rng.ts, src/deck.ts e
src/verify.ts). Roda 100% no seu navegador usando crypto.subtle.