Documentos

Obtenção dos prémios

Obtendo os 5 números vencedores de nossos sorteios da loteria

Um dos problemas mais importantes que qualquer loteria do mundo precisa resolver é o procedimento ou algoritmo que obtém os números vencedores para cada sorteio. Em nosso caso, como uma loteria virtual, nossa equipe de especialistas projetou um algoritmo totalmente seguro para gerar a cadeia de sementes da qual são extraídos os 5 números de 4 dígitos.

Para isso, usamos um emissor independente e mundialmente conhecido como BITCOIN. Sabe-se que aproximadamente a cada 5 a 20 minutos um novo bloco é gerado para a cadeia Bitcoin. Cada bloco está associado a um HASH que o identifica de forma única.

Cada sorteio, uma vez avaliado, gera um hash particular, uma vez obtidos os prêmios que utilizaremos para obter os do próximo sorteio.

Neste exemplo, usamos o hash do sorteio anterior:

d57cbd9ef56e9 bc773c9ad93a2 131d2e3ab64ac f54ed1466da21 efdd145b24328

cbd85971335a9 26ab9f3fd66a1 5c334 973984f a7dbdbdbacfa668 8b8078a9a65d

Para nosso sorteio, o primeiro bloco que foi gerado tinha este Hash:

0000000000000000000000000000000b1447caf58d6d 13ff4afee003c06fcb1edb30e159580d

Concatenamos ambos os hashes e aplicamos a função criptográfica sha512 a ele. Desta forma obtemos 512 caracteres hexadecimais

53a88ea66279e edacb1a4015b8 a9fc7a59c577f 3425161127a2f 8eb2db0dab68b

5be60cb29b167 ec1df53e5c273 f9b6eba002467 f13005f2800f0 446fed038a7

Dividimo-los em substratos de 13 caracteres e selecionamos as cinco primeiras cordas (uma para cada prêmio). A cada string aplicamos a seguinte fórmula para obter o prêmio:

const value = parseInt(string, 16) / Math.pow(2, 52)

const prize = Math. floor(value * 10000)

Para nosso exemplo os 5 prêmios obtidos são:

3267 9284 6640 2036 5574

Formula para obter os números 'Modern', 'River' e 'Salgado'.

A sexta posição, ou o sexto prêmio, chama-se Moderno, portanto o (M), é um milésimo da soma dos cinco prêmios obtidos com o hash. No exemplo acima, a soma dos 5 primeiros prêmios do Beast Game é 26801, portanto o Moderno será 6801.

Ou sétimo prêmio, é o chamado River. Seu valor é obtido multiplicando o primeiro prêmio pelo segundo obtido por hashing, desconsiderando os três números à direita, e considerando apenas o centésimo do número obtido

Em nosso exemplo, o rio seria 330

3267 x 9284 = 30.330.828

O oitavo número é o Salted, (S). Seu valor é o número do grupo correspondente ao resultado da multiplicação dos dez do primeiro prêmio por 4. Então, no exemplo:

67 x 4 = 268 - Mono, grupo 17

Como é escolhido o hash para o sorteio?

O Hash do bloco escolhido para o sorteio dos números vencedores será o primeiro obtido a partir da hora, minuto e segundo exatos após a hora oficial do sorteio. Isto pode levar de 1 a 20 minutos, dependendo da complexidade do bloco.

É impossível deduzir antes do momento do sorteio quais serão os números vencedores, pois a obtenção do hash por BITCOIN requer o poder computacional de milhares de servidores para resolver simultaneamente o hash final.

Seguir este link Clique aqui para analisar o código em Javascript.