Verificar o resultado do jogo Crash: algoritmo, segurança

1) Objetivo de verificação: o que você está confirmando

Insustentável: o operador não pode alterar o resultado após a sua aposta (por conta do hasteamento do cide do servidor).

Reprodutividade: com os dados de entrada, você recebe o mesmo multiplicador que o jogo mostrou.

Integridade do procedimento: formato de mensagem, incorporação 'nonte', regra de arredondamento e 'house edge' são aplicados de acordo com a especificação.

2) Dados sem os quais não é possível verificar

1. O Server Seed Hash é publicado antes de usar o'Server Seed "apropriado.

2. O Server Seed (exposto mais tarde/ao fim do período).

3. Cliente Seed (seu cid; você o define ou a plataforma gera).

4. Noce (conta suas apostas dentro do atual 'Server Seed').

5. Algoritmo de hashtag (normalmente 'HMAC-SHA256' ou 'SHA-256').

6. Formato de mensagem (exemplo: ':'), separadores/maiúsculas/codificação precisos.

7. Fórmula de mapping hash → multiplicador (e regra de arredondamento/mínimo).

💡 Todas as especificações devem estar na seção Fairness/Provably Fair da operadora. Se não houver alguma coisa, é uma bandeira vermelha (consulte o parágrafo 10).

3) Algoritmo de verificação (7 passos)

1. Confira a empresa: conte «SHA-256 (ServerSeed)» e compare com «ServerSeedHash» publicado.

2. Junte uma mensagem: rigorosamente no formato de plataforma (por exemplo, 'msg = ClientSeed +': '+ Nince').

3. Conte o hash da rodada:
  • при `HMAC-SHA256`: `RoundHash = HMAC_SHA256(key=ServerSeed, msg=message)`;
  • em 'SHA-256': 'RoundHash = SHA256 (ServerSeed | | mensagem)' ou como especificado na especificação.
  • 4. Retire o acidente: pegue os primeiros 'k' bit (muitas vezes 52) → inteiro 'r', depois 'u = r/2 ^ k'.
  • 5. Aplique a fórmula de mapping: converta 'u' em multiplicador (house edge/mala especial contabilizada pela documentação do jogo).
  • 6. Arredondar de acordo com as regras do jogo (por exemplo, até 2 caracteres, no mínimo 1. 00 x, etc.).
  • 7. Compare com o resultado da rodada da história. Coincidência = honestidade correta.

4) Pseudocode (pode ser adaptado a Python/JS)

python
Insira uma fórmula exata de mapping da sua plataforma em vez de stub _ maping ()

import hmac, hashlib, math

def round_hash(server_seed: bytes, client_seed: str, nonce: int) -> bytes:
mensagem = f "Por favor, consulte a especificação
return hmac. new(server_seed, message, hashlib. sha256). digest () ou hashlib. sha256(...)

def take_u_from_hash(h: bytes, k_bits=52) -> float:
Pega os bits mais velhos como um r inteiro
r = int. from_bytes(h, "big") >> (256 - k_bits)
return r / (1 << k_bits) u в [0, 1)

def stub_mapping(u: float) -> float:
ZAGLUSCHKA! Substituir por uma fórmula da documentação do seu jogo
Por exemplo, por vezes, usam a conversão da vista: crash = floor (((st/( r + 1)) 100 )/100
e/ou «house edge» como um raro compulsório 1. 00×. Não use esta pilha na inspeção real.
return max(1. 00, round(1. 0 / max(1e-12, 1. 0 - u), 2))

def verify(server_seed_hex, server_seed_hash_hex, client_seed, nonce, shown_multiplier):
server_seed = bytes. fromhex(server_seed_hex)
1) Comite
assert hashlib. sha256(server_seed). hexdigest() == server_seed_hash_hex. lower()
2-3) Round hesh
h = round_hash(server_seed, client_seed, nonce)
4) u
u = take_u_from_hash(h)
5-6) mapping + arredondar
calc_mult = stub_mapping(u)
7) comparação
return abs(calc_mult - shown_multiplier) < 1e-9

Importante: em vez de 'stub _ maping', aplique a fórmula exata da seção Fairness da sua plataforma; senão a verificação não será correta.

5) Casos privados e pedras submarinas

Duas apostas na mesma rodada: muitas plataformas 'nonte' aumentam para cada aposta, mesmo que sejam feitas na mesma rodada (exemplo: A aposta A → 'nonce = 42', aposta B → 'nonce = 43'). Verifique o histórico.

Mudança de 'Cliente Seed': Quando você muda de cide 'nonte', normalmente o fluxo é reiniciado (ou o fluxo começa). Confira as regras da sua plataforma.

Batchi 'Server Seed': Um 'Server Seed' é válido para uma série de rodadas, e uma nova comitiva é publicada; não confunde as sementes de vários períodos.

Arredondar/mínimo: discrepância entre os dois caracteres - 90% dos casos falham nas regras de arredondamento/mínimo (por exemplo, fixo 1. 00 x, sob a condição de pesquisador).

Codificação/espaços: espaço extra/tradução de linha, maiúsculas incorretas, não UTF-8 quebram a verificação.

6) Folha de cheque de verificação rápida da rodada

1. Será que 'SHA-256 (ServerSeed)' corresponde ao publicado 'ServerSeedHash'?

2. Será que «mensagem» e formato «nonte» foram formados corretamente?

3. O algoritmo ('HMAC-SHA256 '/' SHA-256') e a chave/ordem de campos são aplicados de acordo com a especificação?

4. O mapping e o arredondamento são idênticos à documentação?

5. Se os casos especiais («crash instantâneo» raro, mínimo de 1) são considerados. 00 x, caps)?

6. O resultado coincide com a história do jogo?

7) Automação do controle (prática)

Logi: Guarde 'cliente _ seed', seqüência 'nonce', marca de tempo, multiplicador final.

Sampling: Depois do «Revil» do «Server Seed», apresente-se de 20 a 50 rodadas aleatórias; fique com o percentual de correspondências (deve ser 100%).

Regressão: Quando mudar a versão do jogo/provedor, execute o mesmo conjunto.

Exportar: Armazene CSV/JSON com origem - é a sua «pista de auditoria».

8) Segurança: como não errar e não se deixar enganar

Verifique localmente/offline: Não se baseie apenas no validador da Web da operadora; mantenha o seu próprio script.

Desconheça as rodadas sem um pacote completo de dados: sem fórmula/formato, sem verificação.

Forte 'Cliente Seed': defina o casual, mude periodicamente (isso não aumenta a RTP, mas exclui perguntas de reprodução).

TLS/sessão: entrada apenas por HTTPS, 2FA, rastreamento de entradas e downloads de histórico.

Não entregue «Server Seed» a ninguém: ele é publicado pela operadora após o período; O vosso trabalho é verificar, não «arranjá-lo» com antecedência.

9) Típicos «erros de novatos»

A ordem de campos foi confundida ('Nonce:ClientSeed' em vez de 'ClientSeed:Nonce').

Conta 'nonce' do zero ao invés de uma (ou vice-versa).

Usa o hash de toda a rodada de plataforma (global nonce) e você precisa do seu 'nance' pessoal.

Ignorar o arredondamento de acordo com as regras (banker's rounding vs floor/cil).

Confecção com o'Server Seed "ativo e não com o" Server Seed "já revelado.

10) «Bandeiras vermelhas» na operadora

Nenhum servidor público Seed Hash antes do início do período.

Não é possível especificar o seu Cliente Seed ou ver nonte.

Não há uma fórmula pública de mapping para o multiplicador.

O histórico de rodadas não fornece o mínimo de dados para a verificação.

O formato e o algoritmo foram alterados sem aviso/arquivo de especificações.

11) Contexto australiano (AU)

Moeda: Contabilize ganhos/apostas na AUD, armazenando histórias (suporte, controvérsias).

Jogo responsável (RG): limites de depósito/tempo, pausas e auto-exclusão - disponíveis em aplicações de boa fé; use-os.

Práticas de plataforma: Em operadoras de boa fé, o bloco Fairness/Provably Fair contém uma descrição completa e exemplos de verificação; a falta de detalhes é um motivo para escolher outro serviço.

12) Total

Verificar o resultado do jogo Crash é um procedimento claro:
  • confecção da comita 'Server Seed Hash',
  • Restaurar 'RoundHash' por 'Server Seed', 'Cliente Seed', 'nonce' e algoritmo,
  • aplicação da fórmula mapping publicada e das regras de arredondamento,
  • multiplicador idêntico na sua verificação e na história do jogo.

Mantenha seu próprio script, logue os dados de entrada e verifique rodadas aleatórias periodicamente. Então, você não é honesto em palavras, mas matematicamente.

Caswino Promo