O que é um esquema de compromisso:
Um esquema de compromisso é uma função que permite que um jogador e a plataforma se comprometam com segurança com um valor secreto escolhido, mantendo-o oculto de outras pessoas.
Esses valores podem ser revelados posteriormente para que terceiros possam verificar se o compromisso corresponde ao valor revelado. Um esquema de compromisso garante que o cassino seja verificável.
Um esquema de compromisso tem duas fases: a fase de Compromisso e a de Revelação.
Fase de Compromisso:
O objetivo da fase de compromisso é comprometer/bloquear determinados valores criados pelo jogador e pelo operador para gerar os resultados do jogo.
Em uma explicação simplificada, os valores 3 são comprometidos e usados para gerar o resultado de um jogo. Depois que os valores são comprometidos, eles não podem ser alterados até a fase de revelação. Durante o compromisso, é realizado hashing para evitar adulterações.
Semente Ativa do Cliente
Semente Ativa do Servidor (sem hash)
Nonce
Output = Commit(Active_Client_Seed, Active_Server_Seed, Nonce)
Semente Ativa do Cliente: não possui hash e é um valor determinado pelo jogador.
Semente Ativa do Servidor (sem hash): é mantida em segredo e criada pelo servidor. Esse valor secreto recebe um hash. Apenas o valor com hash é exibido ao operador e ao jogador.
Nonce é inicialmente definido como 0, pois nenhum jogo foi realizado. Ele aumentará a cada jogada.
Uma combinação dessas 3 variáveis garante que o resultado do compromisso seja sempre diferente
Fase de Revelação:
Na fase de revelação, o objetivo é revelar a semente do servidor sem hash. Com as sementes sem hash e o nonce conhecidos, o usuário poderá verificar o seu resultado.
Se um jogador quiser verificar os seus resultados, primeiro deverá alternar o seu par de sementes do servidor e do cliente.
Quando isso for feito, a plataforma removerá o hash e exibirá a semente do servidor que estava ativa anteriormente. Agora, os jogadores, o operador e qualquer terceiro conhecerão todas as 3 informações: a semente do cliente, a semente do servidor e o nonce.
Ao inserir a semente do cliente, a semente do servidor e o nonce da rodada conhecidos, sempre poderemos comprovar os resultados/desfechos do jogo e da rodada específicos.
Semente do Servidor
A semente do servidor é gerada pelo seu sistema como uma string hexadecimal aleatória de 64 caracteres. Essa semente passa por processos de hashing SHA-256. O valor com hash é exibido. O hashing tem duas finalidades:
Prevenção de trapaças: é computacionalmente impossível para um usuário encontrar a semente original do servidor sem hash a partir do hash (resistência à primeira pré-imagem), impedindo que os jogadores trapaceiem.
Prevenção de manipulação: é computacionalmente impossível encontrar duas entradas sem hash iguais que gerem a mesma saída com hash, considerando a propriedade de resistência a colisões do SHA-256, impedindo que o operador trapaceie o jogador.
Somente quando o jogo for concluído e o usuário alternar as sementes do cliente, o cassino removerá o hash da semente do servidor para verificação.
Semente do Cliente
A semente do cliente pertence a você, o jogador, para garantir que você influencie a aleatoriedade do resultado de cada jogo.
Inicialmente, a semente do cliente é gerada aleatoriamente para você pelo seu navegador. No entanto, recomendamos que você edite a semente do cliente para um valor de sua preferência. Isso garante que você, como jogador, tenha influência sobre o resultado do jogo.
Nonce
Em criptografia, Nonce refere-se a “número usado uma vez”. É um número que aumenta de valor cada vez que uma nova aposta é feita com o mesmo conjunto de sementes do servidor e do cliente.
Isso garante que a combinação da semente do servidor, da semente do cliente e do nonce seja diferente em cada jogo, e que o resultado do esquema de compromisso seja diferente.
Leia mais sobre como esses valores são implementados no código.


