Introdução
Este documento explica de forma detalhada como funcionam os sorteios realizados pela DashSkins, utilizando uma linguagem simples e acessível. O sistema foi desenvolvido para garantir total transparência e permitir que qualquer pessoa possa verificar a legitimidade dos resultados.
Conceitos Fundamentais
O que é um Hash?
Um hash é como uma "impressão digital" de uma informação. Imagine que você tem um texto qualquer - ao passar esse texto por uma função hash, você obtém uma sequência única de letras e números. Se mudar qualquer vírgula do texto original, o hash resultante será completamente diferente.
Exemplo prático:
- Texto: "João ganhou o sorteio" → Hash: 7a8b9c...
- Texto: "João ganhou o sortei0" → Hash: 2x3y4z... (completamente diferente)
As Duas Sementes do Sistema
1. Server Seed (Semente do Servidor)
- É uma informação secreta gerada pelo sistema
- Fica guardada em segredo até o final do sorteio
- Antes do sorteio, apenas seu hash é divulgado
- Após o sorteio, é revelada para permitir verificação
2. Client Seed (Semente do Cliente)
- É uma informação pública desde o início
- Gerada usando dados públicos do sorteio
- Todos podem ver antes mesmo do sorteio acontecer
- Garante que o servidor não pode manipular resultados
O Nonce
O nonce é simplesmente um contador. Se há 3 prêmios para sortear, teremos:
- Primeiro prêmio: nonce = 1
- Segundo prêmio: nonce = 2
- Terceiro prêmio: nonce = 3
Como Funciona o Sorteio Passo a Passo
1. Preparação do Sorteio
Quando um sorteio é criado, o sistema:
1. Gera a Server Seed - Uma sequência aleatória complexa como:
abc123def456-789ghi012jkl-345mno678pqr
2. Calcula e divulga o hash da Server Seed:
Hash: 5d41402abc4b2a76b9719d911017c592...
Este hash prova que a server seed não mudará depois
3. Gera e divulga a Client Seed usando dados públicos:
Client Seed: public_a1b2c3d4e5f6...
2. Embaralhamento Determinístico da Lista
Este é um dos pontos mais importantes do sistema. A lista de participantes é embaralhada de forma que:
- O embaralhamento é sempre o mesmo para as mesmas sementes
- Ninguém pode prever a ordem sem conhecer a server seed
- Após o sorteio, todos podem verificar se foi feito corretamente
Como funciona o embaralhamento:
- Sistema combina server seed + client seed para criar uma "semente de embaralhamento"
- Para cada posição da lista (de trás para frente):
- Gera um número baseado na semente + posição
- Usa esse número para trocar com outra posição
- Continua até embaralhar toda a lista
Exemplo simplificado:
Lista original: [Ana, Bruno, Carlos, Diana, Eduardo]
Após embaralhamento: [Carlos, Eduardo, Ana, Diana, Bruno]
3. Cálculo do Hash de Participantes
Após embaralhar, o sistema cria um hash da lista embaralhada contendo:
- ID do participante
- Email (ofuscado para privacidade)
- Número de entradas (chances)
Este hash é armazenado e serve para provar que a lista não foi alterada após o sorteio.
4. Execução do Sorteio
Para cada prêmio a ser sorteado:
Gera um Hash de Sorteio combinando:
server_seed + client_seed +
nonce
Converte o hash em número
Pega os primeiros 16 caracteres do hash e converte para um número muito grande
Calcula a posição vencedora
Usa o método de "distribuição justa" garantindo chances iguais
Seleciona o vencedor
Percorre a lista embaralhada até encontrar o vencedor
5. Hash de Verificação do Resultado
Para cada vencedor, o sistema gera um hash combinando:
server_seed + client_seed + nonce + id_participante + id_premio
Este hash prova que o resultado não foi alterado após o sorteio.
Sistema de Múltiplas Chances (Entradas)
Cada participante pode ter múltiplas entradas (chances). O sistema funciona como se cada entrada fosse um "bilhete" numerado:
Exemplo:
- Ana: 10 entradas (bilhetes 0-9)
- Bruno: 20 entradas (bilhetes 10-29)
- Carlos: 30 entradas (bilhetes 30-59)
- Total: 60 entradas
Se o número sorteado for 25, Bruno ganha (pois 25 está entre 10-29).
Como Verificar os Resultados Por Conta Própria
Informações Necessárias
Após o sorteio, você precisará das seguintes informações (todas públicas):
- Server Seed (revelada após o sorteio)
- Server Seed Hash (divulgado antes do sorteio)
- Client Seed (público desde o início)
- Lista de participantes com suas entradas
- Nonce de cada resultado
- Hash de verificação de cada resultado
Passo a Passo da Verificação
1. Verificar a Server Seed
Calcule o hash SHA-256 da server seed revelada e compare com o hash divulgado antes do sorteio:
SHA-256(server_seed_revelada) = server_seed_hash_divulgado ?
Se forem iguais, a server seed é legítima.
2. Verificar o Embaralhamento
- Pegue a lista original de participantes (ordem por ID)
- Calcule a semente de embaralhamento:
SHA-256(server_seed + "-" + client_seed) - Execute o algoritmo de embaralhamento
- Calcule o hash da lista embaralhada
- Compare com o hash de participantes armazenado
3. Verificar Cada Vencedor
Para cada resultado:
1. Calcule o hash do sorteio:
SHA-256(server_seed + "-" + client_seed + "-" + nonce)
2. Converta para número:
- Pegue os primeiros 16 caracteres
- Converta de hexadecimal para decimal
3. Calcule a posição nas entradas
- Use o algoritmo de distribuição justa
- Encontre qual participante está nessa posição
4. Verifique o hash do resultado:
SHA-256(server_seed + "-" + client_seed + "-" + nonce + "-" + id_participante +
"-"
+ id_premio)
Ferramentas Online para Verificação
Para calcular hashes SHA-256:
Para conversão hexadecimal → decimal:
Garantias de Segurança do Sistema
1. Impossibilidade de Manipulação
- A server seed é definida ANTES do sorteio e seu hash é público
- Qualquer mudança na server seed resultaria em um hash diferente
- O servidor não pode alterar o resultado sem que isso seja detectado
2. Transparência Total
- Todas as informações necessárias para verificação são públicas
- O código-fonte do sistema pode ser auditado
- Qualquer pessoa pode recalcular os resultados
3. Aleatoriedade Criptográfica
- Usa SHA-256, um algoritmo criptográfico seguro
- Impossível prever resultados sem conhecer a server seed
- Distribuição estatisticamente justa
4. Proteção Contra Fraudes
- Hash de participantes impede adição/remoção após sorteio
- Hash de verificação impede alteração de vencedores
- Sistema detecta automaticamente qualquer tentativa de fraude
Exemplo Prático Completo
Vamos simular um mini-sorteio com 3 participantes:
Dados iniciais:
- Server Seed:
minha-seed-secreta-123 - Client Seed:
public_abc123 - Participantes:
- Alice (ID: 1): 10 entradas
- Bob (ID: 2): 20 entradas
- Carol (ID: 3): 30 entradas
Passo 1 - Hash da Server Seed:
SHA-256("minha-seed-secreta-123") = 8a9bcf1e...
(Este hash é divulgado antes do sorteio)
Passo 2 - Embaralhamento:
Semente: SHA-256("minha-seed-secreta-123-public_abc123")
Lista embaralhada: [Bob, Carol, Alice]
Passo 3 - Sorteio (nonce = 1):
Hash: SHA-256("minha-seed-secreta-123-public_abc123-1")
Número: (convertido do hash)
Posição: número % 60 = 42
Vencedor: Carol (pois 42 está entre 30-59)
Passo 4 - Hash de Verificação:
SHA-256("minha-seed-secreta-123-public_abc123-1-3-premio1") = xyz789...
Perguntas Frequentes
O que impede alguém de criar uma server seed "viciada"?
A server seed precisa ser definida ANTES de conhecer os participantes. Como o embaralhamento usa ambas as sementes, é impossível prever qual seed resultaria em um vencedor específico.
Por que embaralhar a lista?
O embaralhamento impede que alguém se cadastre estrategicamente em determinada posição para aumentar suas chances.
O sistema é 100% à prova de fraudes?
Sim, desde que o algoritmo SHA-256 permaneça seguro (usado em Bitcoin e outros sistemas críticos), o sistema é matematicamente à prova de fraudes.
Conclusão
O sistema de sorteios da DashSkins utiliza princípios criptográficos sólidos para garantir justiça e transparência. Cada aspecto foi projetado para ser verificável, desde o embaralhamento inicial até a seleção final dos vencedores.
A beleza deste sistema está em sua simplicidade matemática: não é necessário confiar em ninguém - os números não mentem. Qualquer pessoa com conhecimento básico de matemática e acesso a uma calculadora de hash pode verificar que os sorteios são legítimos.
Este é o mesmo princípio usado em cassinos online regulamentados e sistemas de loteria blockchain, adaptado para sorteios de prêmios de forma acessível e transparente.