MeepleBET

Documentação Técnica: Sorteios com Compra de Nomes

Este documento detalha o funcionamento, segurança e transparência do sistema de sorteios. A tecnologia utilizada garante que o sorteio seja justo e auditável por qualquer pessoa.

1. Estrutura do Sorteio

O sistema é baseado na venda de “nomes”, onde cada nome corresponde a um produto único no WooCommerce, com estoque de 1 unidade.

  • Criação do Sorteio

    O organizador define a lista de nomes no painel do WordPress. Cada nome é automaticamente sincronizado com um produto oculto do WooCommerce.

  • Identificação do Produto

    Cada produto é nomeado com um identificador único, no formato [ID_do_Sorteio] Nome do Jogo (Sorteio). Isso permite o rastreamento individual de cada item.

  • Venda e Conclusão

    A compra de um nome zera seu estoque. O sistema registra o comprador no produto, marcando-o como “vendido”.

2. Sistema de Segurança: O Método “Commit-Reveal”

A segurança e a aleatoriedade do sorteio são garantidas por uma abordagem criptográfica de Comprometimento e Revelação.

2.1. Server Seed (Semente Secreta)

No momento da criação do sorteio, uma Server Seed é gerada. É uma string segura (64 caracteres) que serve como a base da aleatoriedade e é mantida em segredo até o sorteio.

Server Seed = bin2hex(random_bytes(32))

2.2. Commit Hash (Prova de Integridade)

Para provar que a Server Seed foi criada antes da venda, um Commit Hash é gerado publicamente. Ele é um “selo” da semente secreta.

Commit Hash = SHA256(Server Seed + ID do Sorteio)
Importante: É impossível reverter o hash para descobrir a semente original. Isso garante que o resultado não possa ser manipulado antes do sorteio.

2.3. Public Seed (Semente Pública)

No momento da execução do sorteio, uma Public Seed é combinada. Ela pode ser um dado externo e imprevisível, como o hash de um bloco de Bitcoin ou um timestamp do servidor, garantindo que a aleatoriedade não dependa apenas do organizador.

3. Execução e Auditabilidade

3.1. A Execução do Sorteio

O sistema combina a Server Seed e a Public Seed para gerar uma “semente final”. Essa semente é usada para embaralhar a lista de nomes de forma completamente aleatória. O vencedor é então selecionado.

Semente Final = SHA256(Server Seed + Public Seed)

3.2. Proteção contra Manipulação

No momento do sorteio, a Server Seed é revelada no log público. Isso permite que qualquer pessoa verifique de forma independente:

  • Se o Commit Hash público corresponde à Server Seed revelada.
  • Se a combinação das duas sementes realmente produziu o vencedor sorteado.

Este processo elimina a possibilidade de manipulação, pois a “prova” (o Commit Hash) é criada antes da venda e a “chave” para essa prova (a Server Seed) só é revelada após a conclusão das vendas.