Embaralhamento que você pode verificar sozinho: o servidor se compromete com as cartas antes da partida e prova depois que não trocou nada.
Em jogo de cartas online, a dúvida é sempre a mesma: “o baralho foi embaralhado direito?”. No Truco Certo a resposta não é um selo de “aleatório certificado” — é uma conta que você pode refazer. O método se chama commit–reveal (compromisso e revelação):
O servidor sorteia um segredo aleatório de 256 bits: a semente. Antes de qualquer carta ser dada, ele publica o commit — a impressão digital (SHA-256) dessa semente. Você vê o commit na mesa durante a partida inteira.
O baralho de cada mão sai de uma conta fechada: semente + ID da partida + número da mão alimentam um embaralhamento Fisher–Yates. Sem escolha e sem improviso — a mesma entrada sempre dá o mesmo baralho.
Como o commit foi publicado antes, o servidor não consegue mudar a semente (e, com ela, os baralhos) sem que a impressão digital deixe de bater.
Quando a partida termina, a semente é revelada no histórico dela. Antes disso ela não sai do servidor: se saísse, qualquer um poderia prever as cartas.
Com a semente em mãos, qualquer pessoa recalcula o commit e os baralhos de todas as mãos e compara com as cartas que viu. O verificador abaixo faz isso no seu navegador, com o mesmo código do servidor.
Depois que uma partida termina, copie do histórico dela a semente, o commit e o ID da partida. Cole aqui, escolha a mão e compare o baralho com as cartas que você viu (as suas, a vira e as que foram jogadas).
O algoritmo é o Fisher–Yates. Começando da última posição e indo até a segunda, ele sorteia uma posição entre 0 e a atual, troca as duas cartas e deixa a posição atual definitiva. Veja em câmera lenta com 8 cartas:
As 8 cartas começam em ordem. Vamos embaralhar da última posição para a primeira: a cada passo, uma posição fica definitiva.
Quer entender as regras do jogo em si? Veja a página de regras.