Provably Fair - Como Funcionam os Sorteios

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:

  1. Sistema combina server seed + client seed para criar uma "semente de embaralhamento"
  2. 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:

1

Gera um Hash de Sorteio combinando:

server_seed + client_seed + nonce
2

Converte o hash em número

Pega os primeiros 16 caracteres do hash e converte para um número muito grande

3

Calcula a posição vencedora

Usa o método de "distribuição justa" garantindo chances iguais

4

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):

  1. Server Seed (revelada após o sorteio)
  2. Server Seed Hash (divulgado antes do sorteio)
  3. Client Seed (público desde o início)
  4. Lista de participantes com suas entradas
  5. Nonce de cada resultado
  6. 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

  1. Pegue a lista original de participantes (ordem por ID)
  2. Calcule a semente de embaralhamento: SHA-256(server_seed + "-" + client_seed)
  3. Execute o algoritmo de embaralhamento
  4. Calcule o hash da lista embaralhada
  5. 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.