Passar para o conteúdo principal

Provably Fair - Esquemas de Compromisso

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.

  1. Semente Ativa do Cliente

  2. Semente Ativa do Servidor (sem hash)

  3. 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:

  1. 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.

  2. 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.

Respondeu à sua pergunta?