100% Blockchain. 0% Servidor.
Cada apuesta, cada número aleatorio, cada pago es verificable en la blockchain. No podemos engañarte porque no tenemos la infraestructura para hacerlo.
Probabilidades en Vivo del Contrato
Estas probabilidades se leen directamente de la blockchain en tiempo real. No pueden cambiarse sin una transacción pública.
Tu Probabilidad de Ganar
50.0%
Jugando vs Casa
Probabilidad de la Casa
50.0%
Juegos contra casa
Ventaja de la Casa
0.0%
Justo (0%)
Los Juegos P2P Siempre Son 50/50
Cuando juegas contra otro jugador (no la casa), las probabilidades son exactamente 50/50 sin ventaja de la casa. El código del contrato lo demuestra.
Verificar Estas Probabilidades On-Chain
0x10ff96bf...f04751cf
Cómo Funciona Chainlink VRF
Realizas Tu Apuesta
Cuando apuestas, el contrato inteligente bloquea tus fondos y llama a Chainlink VRF para solicitar un número aleatorio. En este punto, nadie conoce el resultado.
playHouseGame(betAmount) → requestRandomWords(roomId)El Oráculo VRF Recibe la Solicitud
La red de oráculos descentralizada de Chainlink recibe la solicitud. Múltiples operadores de nodos independientes participan para generar el número aleatorio.
VRFCoordinator.requestRandomWords(keyHash, subId, confirmations, gasLimit, numWords)Se Genera Aleatoriedad Criptográfica
Chainlink genera un número aleatorio de 256 bits usando pruebas criptográficas. Este número es verificable on-chain y nadie podría haberlo predicho.
randomWords[0] → 256-bit cryptographically secure random numberGanador Determinado y Pagado
El número aleatorio se usa para determinar el ganador (ej: par/impar para el lanzamiento de moneda). El contrato inteligente transfiere automáticamente las ganancias al ganador.
winner = randomWords[0] % 2 == 0 ? playerA : playerBJusticia Matemática Garantizada
Chainlink VRF genera un número aleatorio criptográficamente seguro de 256 bits. Este número tiene una distribución matemáticamente perfecta de 50/50 para resultados binarios.
Número Aleatorio de 256 bits
Un número verdaderamente aleatorio de 256 bits tiene exactamente 50% de probabilidad de terminar en 0 (par) y 50% de probabilidad de terminar en 1 (impar). Esto es un hecho matemático, no una aproximación.
La Operación Módulo
randomWords[0] % 2Usamos módulo 2 (% 2) para determinar el ganador. Si el número aleatorio es par, el resultado es 0. Si es impar, el resultado es 1.
0
Número par
Player A wins
1
Número impar
Player B wins
La Prueba Criptográfica Previene Manipulación
Chainlink VRF incluye una prueba criptográfica con cada número aleatorio. Esta prueba verifica que el número fue generado correctamente - incluso el operador del nodo VRF no puede elegir un resultado específico.
Creador de Sala = Quien Se Une
Una pregunta común: ¿Crear una sala te da ventaja? La respuesta es NO. Aquí está por qué ambos jugadores tienen exactamente las mismas probabilidades:
Creador de Sala (Jugador A)
- Crea la sala y establece la apuesta
- Asignado al resultado 0 (números pares)
- Espera a que un oponente se una
Probabilidad de Ganar
Quien Se Une (Jugador B)
- Se une a una sala existente
- Asignado al resultado 1 (números impares)
- Activa el inicio del juego
Probabilidad de Ganar
Por Qué Es Matemáticamente Igual
El número aleatorio se genera DESPUÉS de que ambos jugadores se hayan unido. Ningún jugador puede influir en el resultado. Como los números pares e impares están igualmente distribuidos en cualquier conjunto aleatorio, ambos resultados tienen exactamente 50% de probabilidad. Crear una sala NO da ninguna ventaja.
// Jugador A gana si random % 2 == 0 (50%)
// Jugador B gana si random % 2 == 1 (50%)
// La asignación es arbitraria - ninguna posición tiene ventajaPor Qué Importa Cero Servidor
Casinos Online Tradicionales
- ✗El servidor controla el generador de números aleatorios
- ✗El backend puede ajustar las probabilidades en tiempo real
- ✗No puedes verificar los resultados del juego
- ✗La casa siempre tiene ventaja oculta
PeetBet (100% Blockchain)
- Chainlink VRF genera los números aleatorios
- Las probabilidades están almacenadas on-chain y son inmutables
- Cada resultado de juego es públicamente verificable
- El código es la ley - sin manipulación oculta
Verifícalo Tú Mismo
No tienes que confiar en nosotros. Así es como verificar cualquier resultado del juego:
Ve a Etherscan
Abre la dirección del contrato en Etherscan. Todas las transacciones y eventos son públicos.
Encuentra la Transacción del Juego
Busca el hash de transacción de tu juego. Puedes encontrarlo en el historial de tu wallet.
Revisa el Callback VRF
Encuentra el evento fulfillRandomWords. Esto muestra el número aleatorio exacto usado.
Verifica las Matemáticas
Usa el número aleatorio para verificar el resultado: randomWord % 2 = 0 significa que Jugador A gana, 1 significa que Jugador B gana.
El Código Real del Contrato
Este es el código real que determina los ganadores. Está desplegado en Ethereum y no puede cambiarse.
// 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);
}