provably fairdiceguide
Você verifica os dados do gamão com uma promessa feita antes da partida e conferida depois dela. O Orion publica um compromisso SHA-256 sobre uma semente secreta antes do seu primeiro lance, revela a semente quando a partida acaba, e deixa o seu navegador recalcular cada lance em orion.arthea.ai/verify só com o ID da partida. Se tudo bate, os dados estavam fixados antes de o jogo começar e ninguém, nós inclusive, os conduziu.
Todo jogador online conhece a sensação. Você dança na barra por três turnos. Seu adversário encontra o único número que acerta e cobre. Num tabuleiro de madeira você daria de ombros, porque viu os dados saírem do copo. Online, pedem que você confie num número cuja geração você nunca viu. Não queríamos pedir essa confiança. Queríamos torná-la conferível.
O que commit-reveal significa de fato?
Imagine um envelope lacrado. Antes de você sentar, a casa escreve dentro todos os dados da noite, lacra e te entrega uma fotografia do lacre. Quando o jogo termina, o envelope é aberto. Se o conteúdo bate com o lacre, os lances existiam antes da partida, e nada pôde ser escolhido no meio do caminho para te prejudicar. Commit-reveal é esse envelope, construído com aritmética. O lacre é um hash SHA-256, e ninguém consegue produzir outra semente que bata com ele. Quatro passos levam a prova do nosso servidor até o seu navegador.
Antes da partida. O servidor sorteia uma semente aleatória secreta e aplica SHA-256 nela. Esse hash é o compromisso, e fica anexado à sua partida antes do primeiro lance. A partir desse momento os dados da partida inteira já estão determinados. O servidor publicou uma promessa que não pode mais editar.
Durante a partida. Cada lance é derivado da semente com HMAC-SHA256: entram a semente e o número do lance, saem dois dados. A posição, o placar, o cubo, quem está prestes a vencer: nada disso entra no cálculo. O servidor não está escolhendo lances. Está lendo em voz alta uma lista com a qual se comprometeu antes de você jogar.
Quando a partida termina. A semente é revelada e guardada junto com o registro da partida. É a abertura do envelope. Qualquer pessoa pode aplicar o hash na semente revelada e comparar com o compromisso publicado antes da primeira jogada, e os dois têm de ser idênticos.
Verifique você mesmo. Abra orion.arthea.ai/verify em qualquer navegador e informe o ID da partida. A página recalcula tudo localmente com Web Crypto, a criptografia embutida no próprio navegador: primeiro o SHA-256 da semente revelada contra o compromisso original, depois cada lance da partida, dado a dado. Sem conta, sem aplicativo, cerca de um minuto.
Uma correspondência completa estabelece três fatos de uma vez:
- A semente revelada gera exatamente o compromisso publicado antes do primeiro lance
- Cada lance da partida deriva dessa semente por HMAC-SHA256, então nada foi relançado nem trocado
- Os dados nunca foram adaptados à posição, ao placar ou ao jogador
O que uma divergência provaria?
Uma divergência não seria um erro de exibição. Seria prova. Se a semente revelada não gera o compromisso, os dados foram trocados depois do começo da partida. Se um único lance falha na verificação HMAC, os dados que você viu não eram os dados comprometidos. Qualquer uma das falhas é prova de adulteração que qualquer pessoa pode reproduzir a partir do mesmo registro, em qualquer máquina, para sempre.
É também por isso que você nunca deveria ver uma. O compromisso é publicado primeiro, antes de uma única pedra se mexer. Uma casa que quisesse manipular esta partida teria de publicar a prova da própria manipulação com antecedência e depois entregar a cada jogador as ferramentas para encontrá-la. Não pedimos que você acredite que somos honestos. Construímos o sistema para que você não precise.
Ninguém consegue mirar um lance que foi lacrado antes de a partida começar.
Se os dados são comprovadamente justos, por que ainda tiro lances ruins?
Porque dados justos continuam sendo dados. Você vai ser fechado na barra. Vai precisar de qualquer coisa menos 2-1 e vai tirar 2-1. Ao longo de milhares de partidas os números se achatam rumo à distribuição verdadeira, mas uma noite não promete nada. O que a verificação remove é a pergunta que está por baixo do tilt. Aquele lance milagroso foi fixado antes de qualquer um de vocês tocar numa pedra, e não foi mirado em você. Saber disso não vai amaciar o lance. Mas deixa você parar de auditar o universo e voltar a jogar a posição.
Os dados são a suspeita mais barulhenta, mas não a única. O mesmo servidor que se compromete com os seus lances também valida cada jogada na origem, então um cliente modificado não consegue empurrar uma pedra para onde as regras não permitem. Lances justos e jogadas legais vêm da mesma autoridade.
Dá para testar o verificador agora?
Dá. O verificador está no ar hoje em orion.arthea.ai/verify, e inclui uma repetição de demonstração, então você pode ver uma verificação completa rodar numa partida de exemplo, sem instalar nada e sem criar conta. A porta em orion.arthea.ai/go carrega os links da App Store e do Google Play e sempre mostra o que está disponível agora.