100% Блокчейн. 0% Сервер.
Каждая ставка, каждое случайное число, каждая выплата проверяема в блокчейне. Мы не можем вас обмануть, потому что у нас нет для этого инфраструктуры.
Шансы Контракта в Реальном Времени
Эти шансы читаются напрямую из блокчейна в реальном времени. Их нельзя изменить без публичной транзакции.
Ваша Вероятность Выигрыша
50.0%
Игра против Казино
Вероятность Казино
50.0%
Игры против казино
Преимущество Казино
0.0%
Честно (0%)
P2P Игры Всегда 50/50
Когда вы играете против другого игрока (не казино), шансы ровно 50/50 без преимущества казино. Код контракта это доказывает.
Проверить Эти Шансы On-Chain
0x10ff96bf...f04751cf
Как Работает Chainlink VRF
Вы Делаете Ставку
Когда вы делаете ставку, смарт-контракт блокирует ваши средства и вызывает Chainlink VRF для запроса случайного числа. На этом этапе никто не знает результат.
playHouseGame(betAmount) → requestRandomWords(roomId)Оракул VRF Получает Запрос
Децентрализованная сеть оракулов Chainlink получает запрос. Множество независимых операторов узлов участвуют в генерации случайного числа.
VRFCoordinator.requestRandomWords(keyHash, subId, confirmations, gasLimit, numWords)Генерируется Криптографическая Случайность
Chainlink генерирует 256-битное случайное число используя криптографические доказательства. Это число проверяемо в блокчейне и никто не мог его предсказать.
randomWords[0] → 256-bit cryptographically secure random numberПобедитель Определен и Оплачен
Случайное число используется для определения победителя (например: чет/нечет для подбрасывания монеты). Смарт-контракт автоматически переводит выигрыш победителю.
winner = randomWords[0] % 2 == 0 ? playerA : playerBМатематическая Честность Гарантирована
Chainlink VRF генерирует криптографически безопасное 256-битное случайное число. Это число имеет математически идеальное распределение 50/50 для бинарных результатов.
256-битное Случайное Число
Истинно случайное 256-битное число имеет ровно 50% вероятность заканчиваться на 0 (четное) и 50% вероятность заканчиваться на 1 (нечетное). Это математический факт, а не приближение.
Операция Модуля
randomWords[0] % 2Мы используем модуль 2 (% 2) для определения победителя. Если случайное число четное, результат 0. Если нечетное, результат 1.
0
Четное число
Player A wins
1
Нечетное число
Player B wins
Криптографическое Доказательство Предотвращает Манипуляции
Chainlink VRF включает криптографическое доказательство с каждым случайным числом. Это доказательство подтверждает, что число было сгенерировано правильно — даже оператор узла VRF не может выбрать конкретный результат.
Создатель Комнаты = Присоединившийся
Частый вопрос: дает ли создание комнаты преимущество? Ответ — НЕТ. Вот почему оба игрока имеют абсолютно одинаковые шансы:
Создатель Комнаты (Игрок A)
- Создает комнату и устанавливает ставку
- Назначен на результат 0 (четные числа)
- Ждет присоединения оппонента
Вероятность Выигрыша
Присоединившийся (Игрок B)
- Присоединяется к существующей комнате
- Назначен на результат 1 (нечетные числа)
- Активирует начало игры
Вероятность Выигрыша
Почему Это Математически Равно
Случайное число генерируется ПОСЛЕ того, как оба игрока присоединились. Ни один игрок не может повлиять на результат. Поскольку четные и нечетные числа равномерно распределены в любом случайном наборе, оба результата имеют ровно 50% вероятность. Создание комнаты НЕ дает никакого преимущества.
// Игрок A выигрывает если random % 2 == 0 (50%)
// Игрок B выигрывает если random % 2 == 1 (50%)
// Назначение произвольное - никакая позиция не имеет преимуществаПочему Нулевой Сервер Важен
Традиционные Онлайн-Казино
- ✗Сервер контролирует генератор случайных чисел
- ✗Бэкенд может корректировать шансы в реальном времени
- ✗Вы не можете проверить результаты игры
- ✗У казино всегда есть скрытое преимущество
PeetBet (100% Блокчейн)
- Chainlink VRF генерирует случайные числа
- Шансы хранятся в блокчейне и неизменяемы
- Каждый результат игры публично проверяем
- Код — это закон, без скрытых манипуляций
Проверьте Сами
Вам не нужно нам доверять. Вот как проверить любой результат игры:
Перейдите в Etherscan
Откройте адрес контракта в Etherscan. Все транзакции и события публичны.
Найдите Транзакцию Игры
Найдите хэш транзакции вашей игры. Вы можете найти его в истории вашего кошелька.
Проверьте Callback VRF
Найдите событие fulfillRandomWords. Оно показывает точное использованное случайное число.
Проверьте Математику
Используйте случайное число для проверки результата: randomWord % 2 = 0 означает победу Игрока A, 1 означает победу Игрока B.
Реальный Код Контракта
Это реальный код, определяющий победителей. Он развернут в Ethereum и не может быть изменен.
// 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);
}