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)
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 Hashpúblico corresponde àServer Seedrevelada. - 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.