fairnessprovably fairdice
Sim, pode. Os dados online são lançados num servidor que não vê, e nada de físico impede um operador de mudar um número antes de este chegar ao seu tabuleiro. Os resultados sozinhos nunca provarão nada em nenhum sentido, por isso a pergunta honesta não é se a manipulação é possível. É se um jogo consegue provar que ela não aconteceu.
Estamos nós próprios a fazer um jogo de gamão, portanto aqui não somos neutros. É precisamente por isso que queremos responder como deve ser, incluindo as partes incómodas.
Porque é que os dados parecem viciados em todos os sites?
Porque a variância no gamão é implacável e a memória humana é torta. Dois dados podem cair de trinta e seis maneiras; as séries não são uma avaria, são uma garantia, e algures esta noite um servidor honesto vai tirar quatro duplos seguidos contra alguém que jogou cada pedra bem. Lembra-se do 5-5 que lhe acertou na pedra sozinha. Não se lembra do lançamento milagroso que o salvou na terça-feira passada. As derrotas ficam, as salvações evaporam-se, e ao fim de três partidas más seguidas os dados tornam-se pessoais. Também se tornam pessoais num tabuleiro a sério, num café a sério. Pergunte a quem quer que ande há quarenta anos a empurrar pedras de madeira.
E é aqui que está a armadilha. Um jogo manipulado teria exatamente a mesma sensação. As séries não provam nada em nenhum sentido, por isso se a sua prova é a sensação que os dados lhe deram, não consegue distinguir um servidor honesto de um desonesto. Nós também não. Isto não é uma defesa dos dados online. É precisamente o problema deles.
Um site conseguiria mesmo torcer os seus dados?
Tecnicamente sim, e nem sequer seria difícil. O servidor vê o tabuleiro inteiro antes de lançar. Um operador que quisesse fazer batota podia:
- Inclinar meia dúzia de lançamentos em cada cem, só nos momentos que mais pesam: o lançamento que acerta, a entrada da barra que falha, o duplo que vira uma partida perdida.
- Manter os confrontos artificialmente renhidos, para que as sessões se prolonguem e as derrotas pareçam quase vitórias.
- Favorecer em silêncio o lado que convém ao operador.
- Fazê-lo com raridade suficiente para que os dados continuem a passar em qualquer teste estatístico que um jogador alguma vez consiga correr.
Não estamos a afirmar que algum site em concreto faz isto. Dizemos que a arquitetura o permite. Um servidor fechado é um quarto trancado: o operador lança sozinho, anuncia um número e pede-lhe que confie. Vistos de fora da porta, operadores honestos e desonestos são iguais.
Um gerador certificado não prova que os dados são justos?
Leia o que o certificado cobre de facto. Um laboratório testa um gerador: um algoritmo em cima da bancada que produz milhões de números que passam em verificações estatísticas. Isso certifica o componente. Não diz nada sobre a entrega, ou seja, sobre se o número que chegou ao seu tabuleiro veio daquele gerador, naquele instante, sem ser alterado pelo caminho. Uma balança calibrada no armazém não prova que o seu pão foi pesado nela.
Além disso, a certificação é uma fotografia. Os servidores em produção são reimplantados constantemente, e o caminho de código entre o gerador e a sua partida continua a mudar muito depois de o laboratório ter ido para casa. Portanto gerador certificado responde a uma pergunta que ninguém chegou a fazer. O que conta não é se existem bons dados algures no edifício. É se a sua partida os recebeu, em cada lançamento, esta noite.
O que muda o commit-reveal, afinal?
Passa a justiça de promessa a prova. Antes de a partida começar, o servidor tira uma semente secreta e publica a sua impressão digital, um resumo SHA-256 a que se chama compromisso. Depois, cada lançamento da partida é derivado dessa semente, um cálculo HMAC-SHA256 por lançamento, por ordem. Quando a partida acaba, o servidor revela a semente.
Agora qualquer pessoa pode verificar duas coisas. Faça o resumo da semente revelada: tem de coincidir com o compromisso publicado antes da primeira jogada. Recalcule os lançamentos: têm de coincidir com todos e cada um dos números que apareceram no tabuleiro. Se o servidor tivesse mudado um único dado depois de ver a sua posição, as contas não bateriam. A manipulação deixa de ser uma suspeita que não consegue pôr à prova e passa a ser uma mentira que consegue apanhar em flagrante.
Dados trancados antes da partida não conseguem reagir a ela.
É este o cerne. O tipo útil de manipulação é reativo: ver a pedra sozinha, lançar o número que acerta. O commit-reveal tira os olhos ao servidor, porque a sequência inteira já estava fixada antes da jogada de abertura, e qualquer intervenção posterior ao compromisso é matematicamente detetável. O que isto não faz é tornar os dados simpáticos. A sequência era honesta, não misericordiosa. Vai continuar a ir parar à barra no pior momento possível, e agora vai poder provar que foi justo.
Na prática, como se verifica uma partida?
Foi assim que a construímos no Orion. Cada partida jogada nos nossos servidores leva consigo um compromisso dado antes do primeiro lançamento, o servidor valida cada jogada na origem, e verificar uma partida terminada leva cerca de um minuto:
Abra a verificação. Vá a orion.arthea.ai/verify em qualquer navegador. Não há nada para instalar nem conta para criar.
Introduza o id da partida. Cada partida de servidor do Orion tem um. Basta colá-lo.
Deixe o navegador calcular. A página recalcula o compromisso e cada lançamento com a Web Crypto, localmente, no seu navegador. A nossa palavra não faz parte da verificação. Se um único número tivesse sido alterado, o recálculo dizia-o.
A verificação já está a funcionar hoje. O jogo em si está terminado, e a porta em orion.arthea.ai/go leva as ligações para a App Store e para a Google Play e mostra sempre o que está disponível neste momento. Seja como for, a resposta honesta mantém-se. Sim, o gamão online pode ser manipulado. O remédio não é uma promessa mais bonita. São dados que mostram as suas contas.