Você mesmo pode verificar qualquer rodada encerrada a partir de dados públicos on-chain, sem conta e sem nenhum acesso especial. São três coisas a conferir: que o hash de commit foi publicado antes de a rodada começar, que o hash do segredo revelado bate com esse commit e que recalcular a fórmula pública reproduz o resultado com base no qual a rodada pagou.
Este passo a passo pega uma rodada encerrada de Crash e a verifica de ponta a ponta: que o segredo do operador foi registrado (commit) antes da rodada e que o ponto de crash é exatamente o que a fórmula pública produz. Você não precisa de nenhum acesso especial: tudo vem de dados públicos on-chain. Uma seção curta no final cobre o Dice e o Mines, que são verificados a partir de uma única transação cada.
O que você está provando
- O commit veio primeiro. O hash do segredo já estava on-chain antes de a rodada começar, então o resultado não pode ter sido escolhido depois da sua aposta.
- O segredo bate com o commit.
sha256(secret) é igual ao hash registrado.
- O multiplicador é honesto. Recalcular a fórmula a partir do segredo e do hash do bloco gera exatamente o ponto de crash com base no qual a rodada pagou.
Passo 1: abra os dados de verificação da rodada no app
Abra seu histórico de apostas (ou o histórico de rodadas) e clique em uma rodada encerrada para ver os detalhes. Junto com o resultado da rodada, você vai encontrar:
- Crash em: o multiplicador final a verificar.
- Hash do segredo do jogo: o segredo revelado de 32 bytes. Ele leva à transação de commit em um explorador da Solana.
- Hash do bloco: o hash do slot da Solana usado como entropia da blockchain. Ele leva à transação de início da rodada.
- “Este jogo é justo? Use a ferramenta de verificação”: abre a ferramenta de verificação com esta rodada já preenchida. A ferramenta busca as três assinaturas de transação da rodada (commit, hash do bloco, revelação) e a rede em que ela rodou, e recalcula tudo o que está abaixo para você com um clique.
A ferramenta de verificação é o caminho prático. O restante desta página é o caminho totalmente independente, em que você não confia em nada além da blockchain e do seu próprio computador.
Passo 2: as três transações de uma rodada
Passo 3: leia os valores em um explorador da Solana
Abra cada transação no explorador que preferir (Solscan, Solana Explorer, SolanaFM…), na rede em que o app roda. Na página da transação, procure os eventos decodificados do programa (às vezes em “Logs” ou “Instruction data”; os exploradores que conhecem a IDL do programa decodificam os campos do evento pelo nome).
Anote quatro valores:
commit_hash: 32 bytes, da transação de commit.
blockhash: 32 bytes, da transação do hash do bloco.
local_e: o segredo de 32 bytes, da transação de revelação.
crash_point_bps: o ponto de crash final em pontos-base, da transação de revelação (29948 significa 2.9948x).
CodificaçõesOs exploradores mostram valores de 32 bytes em hex, base58 ou como arrays de bytes, dependendo do site. O script abaixo espera hex; converta se o seu explorador mostrar base58 (qualquer decodificador base58 serve; o que importa são os valores dos bytes, não a notação).
Passo 4: confira a ordem
No explorador, compare o slot (ou o horário do bloco) da transação de commit com o da transação do hash do bloco. O commit tem que ser anterior. Esse é o coração do esquema: o segredo foi selado antes de existir a entropia com a qual ele é combinado.
Passo 5: recalcule o ponto de crash
Rode isto com Node.js (sem dependências), preenchendo as três strings hex do Passo 3:
As duas verificações precisam passar: commitment ok: true, e o ponto de crash impresso tem que ser igual ao multiplicador Crash em da rodada (e ao crash_point_bps do evento de revelação). Se forem, você provou, sem confiar em ninguém, que o resultado desta rodada foi travado antes de ela começar e calculado exatamente pela fórmula pública.
Dice e Mines
Os jogos instantâneos são verificados do mesmo jeito, com menos transações:
- Dice: uma transação por aposta. O evento
DiceBetSettled contém todos os dados de entrada da derivação (slothash, user, nonce), além do roll e do pagamento. Recalcule com a fórmula da página Justiça no Dice.
- Mines: duas transações por jogo. A transação de início publica o commit do tabuleiro e o hash do slot; a transação de liquidação revela a seed e o tabuleiro completo. Recalcule com a fórmula da página Justiça no Mines.
Se algo não bater
Primeiro, descarte os suspeitos de sempre: um valor em base58 colado onde se esperava hex, a transação errada (cada rodada tem três) ou uma vantagem da casa diferente da que valia na época da rodada (a vantagem fica na configuração on-chain, e toda mudança nela é, por si só, uma transação on-chain).
Se mesmo assim a diferença for real, é exatamente isso que este sistema existe para expor: os dados são públicos e permanentes, então qualquer pessoa pode refazer a sua verificação. Entre em contato com o suporte informando o número da rodada, e saiba que não existe explicação honesta para uma divergência real de commit ou de fórmula, e é justamente por isso que o esquema torna impossível escondê-las.