Comece a ganhar!

Verificar o resultado do sorteio não é nada difícil!

Precisaremos de:

  • Seed inicial do servidor - torna-se pública após o término do sorteio
  • Seed do cliente - disponível a qualquer momento
  • Fator externo incontrolável (UEF) - disponível em qualquer explorador de blocos do Bitcoin. Nós o publicamos, você só precisa se certificar de que, no momento do sorteio, era o último bloco (a data do próximo bloco encontrado é anterior à data do sorteio). Você também pode encontrá-lo sozinho, por exemplo, usando este link, percorrendo a lista de blocos até a data desejada (a data do sorteio).

Conecte a seed do Cliente e a NFV com dois pontos, assine a string resultante com a seed do Servidor usando a função criptográfica HMAC_SHA512, pegue os 5 primeiros caracteres e converta para o sistema decimal. Divida o número resultante pelo número de participantes e obtemos o número de série do vencedor.

Vamos tentar fazer isso com um exemplo. Vamos supor que temos um sorteio com apenas cinco participantes, com ID 1, 2, 3, 4 e 5. Nesse caso, todos os participantes, exceto o participante com ID 1, têm dois "ingressos" (podem não ser ingressos, mas, por exemplo, carros em uma garagem; para simplificar, dizemos "ingressos").

  • Semente do servidor: mems slatimea offire froat bruchas sympul upotemost toryth
  • Semente do cliente: 1:2:2:3:3:4:4:5:5
    IDs repetidos significam que o participante possui vários bilhetes no sorteio.
  • NVF: 00000000000000000001018a206100a0c81fd7b358373720a3f294ed7710c7cf9

Primeiro, formamos a mensagem que iremos sinal:

1:2:2:3:3:4:4:5:5:00000000000000000001018a206100a0c81fd7b358373720a3f294ed7710c7cf9

Em seguida, precisamos assinar HMAC_SHA512. Isso pode ser feito, por exemplo, aqui (neste link os dados já estão predefinidos, mas você pode inseri-los novamente, para a pureza do experimento).

Obtenha o hash:

6b6819f9cf7b5d5c3a22bf005a8fd142fff363498c2d36348bfb6170feed2c1a0dc73e6c4879fcc5e4a4a25169715441a1ca552d3142bac0720031846083b2a1

Pegue os cinco primeiros caracteres: 6b681

Nós os convertemos para o sistema decimal. Você pode fazer isso usando este link.

Recebemos o número: 439937

Dividimos o módulo pelo número de participantes (temos cinco participantes, mas nove ingressos):

439937 % 9 = 8 (a divisão do módulo pode ser feita aqui)

O vencedor é o participante com o número de série 9 (já que a numeração não começa em um, mas em zero - 0 - 1 - 2, etc.).

1:2:2:3:3:4:4:5:5

No nosso caso, este é um participante com ID 5.


Promoções
Tempo no servidor: 11:25