BETA: o TORQ de teste não vale nada e será zerado antes do token real.
TCWIKI
EN PT
JOGAR

Coleção

Caixas Provably Fair

Como cada caixa é sorteada a partir de um segredo fixado antes mais a sua própria semente, por que ninguém consegue escolher ou mudar um resultado e como conferir qualquer caixa você mesmo.

A ideia em um minuto#

Quando você abre uma caixa, o jogo não "simplesmente escolhe" um carro. O resultado é calculado a partir de três coisas: uma semente secreta cuja impressão digital foi publicada antes do dia começar, a sua própria semente e um contador que sobe 1 a cada caixa que você abre. A conta é a mesma fórmula pública para todo mundo, então qualquer pessoa pode refazer depois e chegar exatamente no mesmo carro.

Isso dá duas garantias:

  • Nós não conseguimos escolher um resultado. A semente secreta fica escondida até o dia acabar, mas a impressão digital (hash) dela foi publicada, e registrada na Solana, antes de você escolher a sua semente.
  • Ninguém é escolhido a dedo. Nada na caixa depende de quem você é, só das entradas acima.

Os quatro passos#

  1. Um segredo é fixado antes do dia começar. Todo dia UTC tem uma semente do servidor aleatória, mantida em segredo até o dia acabar. Antes do dia começar publicamos só o hash dela (uma impressão digital SHA-256). O hash não dá para desfazer e outra semente não bate com ele, então a semente não pode ser trocada depois. O hash de amanhã já é público hoje. Também registramos cada hash na rede Solana (uma transação memo que qualquer pessoa pode consultar) e publicamos um farol (beacon): um blockhash da Solana tirado depois do compromisso. A chave real do dia é feita da semente e desse farol, então um resultado não pode ser conhecido de antemão nem por nós.
  2. Você traz a sua semente. A sua semente de cliente é gerada pelo seu próprio navegador na primeira vez que você joga e é sua: pode manter ou trocar quando quiser. A sua conta também tem um fair ID permanente, então dois jogadores com a mesma semente nunca recebem a mesma caixa. Trocar só afeta as caixas que você abrir depois. Cada caixa também usa um nonce: um contador que começa em 0 e sobe 1 a cada caixa aberta, então duas caixas nunca têm as mesmas entradas.
  3. Uma fórmula pública sorteia a caixa. A semente do servidor e o farol formam a chave do dia; depois a chave do dia, o seu fair ID, a sua semente, o nonce e o tipo de caixa passam por HMAC-SHA256 e geram uma sequência de números aleatórios. Em ordem, eles decidem a raridade (com as chances publicadas, veja Caixas), o modelo, a cor e as pequenas variações de atributos. A regra de pity usa o seu contador de pity de antes da abertura, e esse contador é publicado em cada abertura.
  4. A semente é revelada às 00:01 UTC. Ela fica em segredo até o dia acabar; um minuto depois, nós a publicamos. Qualquer pessoa confere que o hash dela bate com o que publicamos antes do dia e refaz todas as caixas daquele dia.

Onde olhar#

Abra a aba Mint da página de Transparência. Nela tem:

  • Todas as caixas abertas, das mais novas para as mais antigas, com o carro, a raridade, a cor e os 4 últimos caracteres da carteira. Dá para filtrar por caixa e raridade. Sorteios Épicos e Lendários ficam destacados.
  • Anunciado vs real: as chances publicadas ao lado do que as caixas realmente deram. As aberturas de pity ficam fora da barra real de propósito, porque são Raro ou melhor garantido.
  • Sementes diárias: dois cartões compactos, hoje e amanhã (trancados até a revelação, com o hash e os selos on-chain, horários no seu fuso), e uma tabela de dias passados com a semente revelada e a conferência do hash.
  • Um verificador: o seu navegador refaz a fórmula da caixa e compara com o registro do servidor.

No jogo, a loja de caixas tem um painel Provably fair onde você vê a sua semente de cliente, o seu próximo nonce e o hash de hoje, e pode trocar a sua semente. Depois de uma abertura, um pequeno link Verificar leva você direto para aquela caixa na página de Transparência.

Verificar uma caixa no navegador#

  1. Abra uma caixa no jogo e toque no pequeno link Verificar da tela de resultado. Ou abra a aba Mint e toque em Verificar em qualquer linha.
  2. Se o dia já foi revelado, você vê um resultado verde: o hash da semente confere e o seu navegador chegou no mesmo carro que o servidor e o registro público.
  3. Se o dia ainda não acabou, aparece revelado às 00:01 UTC. Volte depois disso; a caixa já está registrada e não pode mudar.

Você também pode conferir qualquer caixa pelo formulário manual: dia, semente de cliente, nonce, tipo de caixa e o seu contador de pity antes daquela caixa (tudo isso aparece no registro e no jogo).

Verificar na mão#

Você nem precisa da nossa página. A fórmula é simples o bastante para fazer com qualquer ferramenta que calcule HMAC-SHA256.

  1. Pegue a semente do servidor revelada (64 caracteres hexadecimais) e confira que o SHA-256 dela é igual ao hash publicado para aquele dia. O hash é calculado sobre os 32 bytes da semente, não sobre o texto.
  2. Faça a chave do dia: HMAC-SHA256 com os 32 bytes da semente como chave e o texto do farol como mensagem. Depois monte o texto fairId:sementeCliente:nonce:caixa:i, por exemplo 0123...abcd:minha-semente:3:street:0. Calcule HMAC-SHA256 com a chave do dia, para i = 0, 1, 2 e assim por diante, e junte os resultados numa sequência longa de bytes.
  3. Leia a sequência de 4 em 4 bytes como números big-endian. Para sortear um inteiro abaixo de n, pegue o próximo número u; se u for maior ou igual a 2^32 menos (2^32 mod n), descarte e pegue o seguinte; senão o sorteio é u mod n. Isso evita qualquer viés.
  4. Primeiro sorteio: um inteiro abaixo de 1000. Compare com as chances em por mil, na ordem Comum, Incomum, Raro, Ultra Raro, Épico, Lendário. Street é 800, 150, 35, 11, 3, 1. Paddock é 520, 320, 115, 32, 10, 3. Founders é 180, 420, 270, 95, 28, 7. Um sorteio abaixo do primeiro número é Comum, e assim por diante.
  5. Abertura de pity (Street e Paddock, quando o seu contador antes da abertura é 15 ou mais): o primeiro sorteio é feito só entre Raro, Ultra Raro, Épico e Lendário, usando os números deles como total (50 para Street, 160 para Paddock).
  6. Segundo sorteio: o modelo entre os modelos daquela raridade. Terceiro sorteio: um inteiro abaixo de 100 para a cor: 0 a 44 Cinza, 45 a 72 Branco, 73 a 89 Azul, 90 a 97 Verde, 98 a 99 Vermelho.

As variações de atributos vêm de mais quatro números da mesma sequência. O código exato é público no pacote compartilhado do projeto (crateOutcome) e é a mesma função que o servidor e a página de verificação usam.

Bom saber#

  • O registro começou quando as caixas provably fair entraram no ar. Caixas abertas antes disso não têm registro de justiça.
  • O registro mostra um código estável por conta no lugar dos dados da sua carteira. A sua semente de cliente e o nonce só aparecem no registro depois que o dia é revelado, porque são entradas da verificação.
  • Isto vale para as caixas. As montagens da Oficina e o tuning ainda usam a aleatoriedade do próprio servidor.
  • Provably fair prova que o resultado não foi escolhido depois. Isso não muda as chances: a caixa continua sendo um jogo de sorte (veja Caixas).