100% Blockchain. 0% Servidor.
Cada aposta, cada número aleatório, cada pagamento é verificável na blockchain. Não podemos te enganar porque não temos a infraestrutura para isso.
Probabilidades ao Vivo do Contrato
Estas probabilidades são lidas diretamente da blockchain em tempo real. Não podem ser alteradas sem uma transação pública.
Sua Probabilidade de Ganhar
50.0%
Jogando vs Casa
Probabilidade da Casa
50.0%
Jogos contra casa
Vantagem da Casa
0.0%
Justo (0%)
Os Jogos P2P São Sempre 50/50
Quando você joga contra outro jogador (não a casa), as probabilidades são exatamente 50/50 sem vantagem da casa. O código do contrato prova isso.
Verificar Estas Probabilidades On-Chain
0x10ff96bf...f04751cf
Como Funciona o Chainlink VRF
Você Faz Sua Aposta
Quando você aposta, o contrato inteligente bloqueia seus fundos e chama o Chainlink VRF para solicitar um número aleatório. Neste ponto, ninguém conhece o resultado.
playHouseGame(betAmount) → requestRandomWords(roomId)O Oráculo VRF Recebe a Solicitação
A rede de oráculos descentralizada do Chainlink recebe a solicitação. Múltiplos operadores de nós independentes participam para gerar o número aleatório.
VRFCoordinator.requestRandomWords(keyHash, subId, confirmations, gasLimit, numWords)Aleatoriedade Criptográfica é Gerada
O Chainlink gera um número aleatório de 256 bits usando provas criptográficas. Este número é verificável on-chain e ninguém poderia tê-lo previsto.
randomWords[0] → 256-bit cryptographically secure random numberVencedor Determinado e Pago
O número aleatório é usado para determinar o vencedor (ex: par/ímpar para o lançamento de moeda). O contrato inteligente transfere automaticamente os ganhos para o vencedor.
winner = randomWords[0] % 2 == 0 ? playerA : playerBJustiça Matemática Garantida
O Chainlink VRF gera um número aleatório criptograficamente seguro de 256 bits. Este número tem uma distribuição matematicamente perfeita de 50/50 para resultados binários.
Número Aleatório de 256 bits
Um número verdadeiramente aleatório de 256 bits tem exatamente 50% de probabilidade de terminar em 0 (par) e 50% de probabilidade de terminar em 1 (ímpar). Isto é um fato matemático, não uma aproximação.
A Operação Módulo
randomWords[0] % 2Usamos módulo 2 (% 2) para determinar o vencedor. Se o número aleatório é par, o resultado é 0. Se é ímpar, o resultado é 1.
0
Número par
Player A wins
1
Número ímpar
Player B wins
A Prova Criptográfica Previne Manipulação
O Chainlink VRF inclui uma prova criptográfica com cada número aleatório. Esta prova verifica que o número foi gerado corretamente - mesmo o operador do nó VRF não pode escolher um resultado específico.
Criador de Sala = Quem Entra
Uma pergunta comum: Criar uma sala te dá vantagem? A resposta é NÃO. Aqui está por que ambos os jogadores têm exatamente as mesmas probabilidades:
Criador de Sala (Jogador A)
- Cria a sala e define a aposta
- Atribuído ao resultado 0 (números pares)
- Espera que um oponente entre
Probabilidade de Ganhar
Quem Entra (Jogador B)
- Entra em uma sala existente
- Atribuído ao resultado 1 (números ímpares)
- Ativa o início do jogo
Probabilidade de Ganhar
Por Que É Matematicamente Igual
O número aleatório é gerado DEPOIS que ambos os jogadores entraram. Nenhum jogador pode influenciar o resultado. Como números pares e ímpares estão igualmente distribuídos em qualquer conjunto aleatório, ambos os resultados têm exatamente 50% de probabilidade. Criar uma sala NÃO dá nenhuma vantagem.
// Jogador A ganha se random % 2 == 0 (50%)
// Jogador B ganha se random % 2 == 1 (50%)
// A atribuição é arbitrária - nenhuma posição tem vantagemPor Que Zero Servidor Importa
Cassinos Online Tradicionais
- ✗O servidor controla o gerador de números aleatórios
- ✗O backend pode ajustar as probabilidades em tempo real
- ✗Você não pode verificar os resultados do jogo
- ✗A casa sempre tem vantagem oculta
PeetBet (100% Blockchain)
- Chainlink VRF gera os números aleatórios
- As probabilidades estão armazenadas on-chain e são imutáveis
- Cada resultado de jogo é publicamente verificável
- O código é a lei - sem manipulação oculta
Verifique Você Mesmo
Você não precisa confiar em nós. Veja como verificar qualquer resultado do jogo:
Vá ao Etherscan
Abra o endereço do contrato no Etherscan. Todas as transações e eventos são públicos.
Encontre a Transação do Jogo
Procure o hash de transação do seu jogo. Você pode encontrá-lo no histórico da sua carteira.
Confira o Callback VRF
Encontre o evento fulfillRandomWords. Isso mostra o número aleatório exato usado.
Verifique a Matemática
Use o número aleatório para verificar o resultado: randomWord % 2 = 0 significa que Jogador A ganha, 1 significa que Jogador B ganha.
O Código Real do Contrato
Este é o código real que determina os vencedores. Está implantado no Ethereum e não pode ser alterado.
// Winner determination logic (from PeetBet.sol)
function fulfillRandomWords(uint256 requestId, uint256[] calldata randomWords) internal {
uint256 roomId = requestIdToRoomId[requestId];
GameRoom storage room = rooms[roomId];
address winner;
if (room.isHouseGame && houseEdgeBps > 0) {
// House game with edge: use 10000-based calculation
uint256 userWinThreshold = 5000 - (houseEdgeBps / 2);
uint256 randomResult = randomWords[0] % 10000;
winner = randomResult < userWinThreshold ? room.playerA : room.playerB;
} else {
// P2P or house game with no edge: pure 50/50
uint256 randomResult = randomWords[0] % 2;
winner = randomResult == 0 ? room.playerA : room.playerB;
}
room.winner = winner;
balances[winner] += (room.betAmount * 2);
emit GameResult(roomId, winner);
}