WOO logo

На этой странице

Видеопокер (зашифрованная версия)

На этой странице

Введение

На этой странице описывается метод игры в видеопокер с использованием криптографии, гарантирующей предопределенность раздаваемых карт. Если вы не знакомы с основными правилами видеопокера, пожалуйста, посетите мою основную страницу, посвященную видеопокеру .

Для целей этой страницы я пока рассматриваю Cypto.Games. У них есть три версии видеопокера, а именно:

  • Валеты или лучше
  • Десять или лучше
  • Бонусный покер

Игрок должен сделать ставку в 10 кредитов, хотя он может выбрать, сколько именно в криптовалюте он готов поставить. На мой взгляд, шаг с десятью кредитами излишне запутывает ситуацию.

Казино, где доказуемая честность

CryptoWins Casino
4 / 5.0
Игроки оценили CryptoWins Casino 4 по 5-балльной шкале
Зарегистрироваться бонус - Липкий

77% до
₿1

Предложение для новых клиентов. Действуют правила и условия. 18+. Это предложение недоступно для игроков, проживающих в Онтарио. Предложение для новых клиентов. Действуют правила и условия. 19+. Минимальный депозит: 5$. Максимальная сумма вывода: 30 000$. Только для избранных игр: список онлайн-слотов смотрите на сайте. Срок отыгрыша бонусов — 10 дней.
CryptoSlots Casino
3.9 / 5.0
Игроки оценили CryptoSlots Casino 3.9 по 5-балльной шкале
Зарегистрироваться бонус

111% до
$500

Предложение для новых клиентов. Действуют правила и условия. 18+. Минимальный депозит: 25$. Разрешенные игры: все игры (кроме игры, запускающей джекпот). Максимальная сумма вывода: 5000$.

Бонус за регистрацию

Бонус-код

WELCOME1
мой WR: 35xB
Отыграйте сумму Бонус 35 раз на Slots, чтобы вывести средства.

Анализ

В следующей таблице представлен мой анализ таблицы выплат в игре Jacks or Better с 6-9-20-75-500. В нижней правой ячейке показана доходность в 97,97%, что соответствует преимуществу казино в 2,03%.

Анализ Jacks or Better

Событие Платит Комбинации Вероятность Возвращаться
Флеш-рояль 500 34,706,466 0.000021 0.010447
Прямой смыв 75 184,178,161 0.000111 0.008316
Четыре одинаковых 20 3 924 486 891 0.002363 0.047252
Аншлаг 9 19,115,939,799 0.011508 0.103572
Румянец 6 19 427 500 088 0.011696 0.070173
Прямой 4 18,354,238,557 0.011049 0.044198
Тройка 3 123,573,760,275 0.074393 0.223178
Две пары 2 214,462,314,819 0.129108 0.258217
Джеки или лучше 1 356,047,418,052 0.214344 0.214344
Все остальные 0 905,977,999,992 0.545408 0.000000
Итоговые суммы 1,661,102,543,100 1.000000 0.979696

В следующей таблице представлен мой анализ таблицы выплат 5-6-22-75-500 Tens or Better. В нижней правой ячейке показана доходность в 97,97%, что соответствует преимуществу казино в 2,03%.

Анализ «Десятки или лучше»

Событие Платит Комбинации Вероятность Возвращаться
Флеш-рояль 500 38,106,048 0.000023 0.011470
Прямой смыв 75 187,838,625 0.000113 0.008481
Четыре одинаковых 22 3 915 577 076 0.002357 0.051859
Аншлаг 6 19,084,542,744 0.011489 0.068934
Румянец 5 18 600 477 537 0.011198 0.055988
Прямой 4 20,611,548,487 0.012408 0.049633
Тройка 3 123,201,590,075 0.074169 0.222506
Две пары 2 213,933,852,009 0.128790 0.257581
Десять или лучше 1 420,598,763,532 0.253205 0.253205
Все остальные 0 840,930,246,967 0.506248 0.000000
Итоговые суммы 1,661,102,543,100 1.000000 0.979657

В следующей таблице представлен мой анализ таблицы выплат в бонусном покере 5-8-25-35-75-45-500. В нижней правой ячейке показана доходность в 97,94%, что соответствует преимуществу казино в 2,06%.

Анализ «Десятки или лучше»

Событие Платит Комбинации Вероятность Возвращаться
Флеш-рояль 500 35,737,262 0.000022 0.010757
Прямой смыв 45 172,191,438 0.000104 0.004665
Четыре туза 70 325,566,459 0.000196 0.013720
Четыре двойки, тридцатки, четыре четверки 35 875,937,305 0.000527 0.018456
Четыре пятерки, четыре буквы К 25 2 725 708 639 0.001641 0.041023
Аншлаг 8 19,133,720,127 0.011519 0.092149
Румянец 5 18,714,893,725 0.011267 0.056333
Прямой 4 18,432,640,328 0.011097 0.044387
Тройка 3 123,733,729,692 0.074489 0.223467
Две пары 2 214,762,339,278 0.129289 0.258578
Джеки или лучше 1 358,572,571,638 0.215864 0.215864
Все остальные 0 903,617,507,209 0.543987 0.000000
Итоговые суммы 1,661,102,543,100 1.000000 0.979398

Честная игра

Эта версия видеопокера, похоже, используется исключительно в криптовалютных интернет-казино. Вкратце, игра генерирует десять уникальных случайных чисел от 0 до 51, каждое с вероятностью 1/52, и сопоставляет их с десятью картами в колоде. Первые пять определяют карты, которые игрок получит при раздаче, а вторые пять — карты, которые игрок получит по порядку при доборе. Например, если игрок сбрасывает две карты, то при доборе он получит 6-ю и 7-ю карты из списка. Позиция сброшенных карт не имеет значения.

Приведённое ниже объяснение использования криптографии предполагает, что читатель уже знаком с этим понятием. Основные сведения можно найти на моей странице о кубиках (зашифрованная версия) . Для более продвинутых читателей ниже описан процесс выбора десяти случайных карт в игре.

  1. Определите указатель с именем "position" и присвойте ему значение 0.
  2. Присоединяйтесь к серверу и клиенту, а затем к серверу, именно в таком порядке.
  3. Сгенерируйте хеш SHA-512 для строки из шага 2.
  4. Преобразуйте первые два символа, начиная с «позиции» хеша из шага 3, из шестнадцатеричного формата в десятичный.
  5. Возьмите две цифры с терминала, начиная с цифры 4.
  6. Если результат шага 5 равен 51 или меньше и еще не найден, то это будет одна из первых десяти карт.
  7. Увеличьте "позицию" на 2.
  8. Повторяйте шаги с 4 по 7, пока не найдете десять уникальных карт.
  9. При раздаче будут розданы первые пять найденных карт, слева направо.
  10. Вторые пять карт будут находиться в очереди на раздачу при взятии карты. Например, если игрок берет три карты, то он получит 6-ю, 7-ю и 8-ю карты из очереди.
  11. Чтобы преобразовать позицию карты из шага 6 в фактическую карту, выполните следующие действия:
    • А. Разделите результат из шага 4 на 13 и возьмите остаток.
    • B. Сопоставьте результат шага 11A, чтобы получить ранг, следующим образом: от 0 до A, от 1 до 2, от 2 до 3, ..., от 9 до 10, от 10 до J, от 11 до Q, от 12 до K.
    • C. Разделите результат из шага 4 на 13 и отбросьте остаток.
    • D. Сопоставьте результат шага 11C, чтобы получить масть следующим образом: 0 — пики, 1 — червы, 2 — бубны, 3 — трефы.

В следующей таблице показано преобразование чисел в игральные карты.

Таблица перевода карт

Классифицировать Пики Сердца Бриллианты Клубы
А 0 13 26 39
2 1 14 27 40
3 2 15 28 41
4 3 16 29 42
5 4 17 30 43
6 5 18 31 44
7 6 19 32 45
8 7 20 33 46
9 8 21 34 47
10 9 22 35 48
Дж. 10 23 36 49
В 11 24 37 50
К 12 25 38 51

Тут прямо-таки напрашивается пример, не правда ли? Давайте рассмотрим один.

видеопокер криптоигры изображение 4

На экране «Вероятно, справедливо» выше я хочу выполнить две важные задачи: выбрать СВОЙ собственный (в отличие от стандартного) начальный ключ клиента (bc7v9bn70d7n07sn) и записать хеш следующего начального ключа сервера (64e701539ecf4c03b90ecd957d6675b2f72c3fd84f04dc5eb63eed8b9a58b95b), который находится в строке с заголовком «Следующий начальный ключ сервера SHA256».

видеопокер криптоигры изображение 2

На скриншоте выше у меня валет/туз разной масти, на первой и четвертой позициях.

видеопокер криптоигры изображение 3

На скриншоте выше я улучшаю свою комбинацию до пары валетов при розыгрыше.

видеопокер криптоигры изображение 5

На скриншоте выше я вернулся к разделу «Честная игра», чтобы отметить, как казино использует два сиденья для получения реальных карт, которые вы видите в игре.

видеопокер криптоигры изображение 4

На экране выше показана информация, необходимая мне для определения того, какие карты следовало раздать. Давайте рассмотрим всё пошагово:

  1. Инструкции расплывчаты, но предполагается, что нужно объединить начальные данные сервера и начальные данные клиента именно в таком порядке. В результате вы получите 2XMpPAbEw3qdH3HQla2K5zNwoNEFHOEYolkB969jbc7v9bn70d7n07sn.
  2. Далее, возьмите хеш результата шага 1. Это даст вам 3a959bbaffd9b3928b28431c2ee688792c67a45f1933b9e11af3c7784a7bbda5674d2e768ac330a04982b9fa943c4c2cf49c952d9db956b1cd3b38c006c3a2d6. Обратите внимание, что каждый символ — это цифра от 0 до 9 или буква от A до F. В шестнадцатеричной системе счисления это очень большое число.
  3. Возьмите первые два символа в хеш-таблице (3a) и преобразуйте их из шестнадцатеричного формата в десятичный: 3*16 1 + a*16 0 = 48 + 10 = 58.
  4. Возьмите последние две цифры из шага 3 (там всего две цифры), это по-прежнему 58.
  5. Если результат шага 4 равен 0–51, сопоставьте его с картой. Поскольку 58 > 51, переходим к следующим двум цифрам в хеш-таблице.
  6. Следующие две цифры в хеше — 95. Это соответствует 9*16 1 + 5*16 0 = 144 + 5 = 149 в десятичной системе счисления.
  7. Две последние цифры числа 149 — это 49, которое находится в диапазоне от 0 до 51, поэтому сопоставьте его с картой. Точнее, 49 соответствует валету треф. Это будет первая карта, сданная слева.
  8. Возьмите следующие две цифры в хеш-таблице (9b) и преобразуйте их из шестнадцатеричной системы в десятичную: 9*16 1 + b*16 0 = 144 + 11 = 155.
  9. Возьмите две последние цифры последнего шага, которые равны 55.
  10. Числа 55 не входят в диапазон от 0 до 51, поэтому пропустите эти две цифры в хеше.
  11. Возьмите следующие две цифры хеша (ba) и преобразуйте их из шестнадцатеричной системы в десятичную: b*16 1 + a*16 0 = 11*16 + 10*1 = 176 + 10 = 186.
  12. Возьмите две последние цифры последнего шага, которые равны 86.
  13. Числа 86 не входят в диапазон от 0 до 51, поэтому пропустите эти две цифры в хеше.
  14. Возьмите следующие две цифры в хеш-таблице (ff) и преобразуйте их из шестнадцатеричного формата в десятичный: f*16 1 + f*16 0 = 15*16 + 15*1 = 240 + 15 = 255.
  15. Возьмите две последние цифры последнего шага, которые равны 55.
  16. Числа 55 не входят в диапазон от 0 до 51, поэтому пропустите эти две цифры в хеше.
  17. Возьмите следующие две цифры в хеш-таблице (d9) и преобразуйте их из шестнадцатеричной системы в десятичную: d*16 1 + 9*16 0 = 13*16 + 9*1 = 208 + 9 = 217.
  18. Возьмите две последние цифры последнего шага, которые равны 17.
  19. Число 17 находится в диапазоне от 0 до 51, поэтому сопоставьте его с картой. А именно, 17 соответствует пятерке червей. Это будет вторая карта, сданная слева.
  20. Возьмите следующие две цифры в хеш-таблице (b3) и преобразуйте их из шестнадцатеричной системы в десятичную: 11*16 1 + 3*16 0 = 13*16 + 9*1 = 176 + 3 = 179.
  21. Возьмите две последние цифры последнего шага, которые равны 79.
  22. Числа 79 не входят в диапазон от 0 до 51, поэтому пропустите эти две цифры в хеше.
  23. Возьмите следующие две цифры в хеше (92) и преобразуйте их из шестнадцатеричной системы в десятичную: 9*16 1 + 2*16 0 = 9*16 + 2*1 = 208 + 9 = 146.
  24. Возьмите две последние цифры последнего шага, которые равны 46.
  25. Число 46 находится в диапазоне от 0 до 51, поэтому сопоставьте его с картой. Конкретнее, 46 соответствует восьмерке треф. Это будет третья карта, сданная слева.
  26. Возьмите следующие две цифры в хеш-таблице (8b) и преобразуйте их из шестнадцатеричного формата в десятичный: 8*16 1 + 11*16 0 = 9*16 + 2*1 = 128 + 11 = 139.
  27. Возьмите две последние цифры последнего шага, которые равны 39.
  28. Число 39 находится в диапазоне от 0 до 51, поэтому сопоставьте его с картой. А именно, 39 соответствует тузу треф. Это будет четвертая карта, сданная слева.
  29. Возьмите следующие две цифры в хеш-таблице (28) и преобразуйте их из шестнадцатеричного в десятичное число: 2*16 1 + 8*16 0 = 2*16 + 8*1 = 32 + 8 = 40.
  30. Число 40 находится в диапазоне от 0 до 51, поэтому сопоставьте его с картой. Конкретнее, 40 соответствует двойке треф. Это будет последняя карта в раздаче, справа.
  31. Я сбросил три карты, а это значит, что нам нужно найти следующие три уникальные карты в хеше, чтобы заменить их.
  32. Возьмите следующие две цифры в хеш-таблице (43) и преобразуйте их из шестнадцатеричного в десятичное число: 4*16 1 + 3*16 0 = 4*16 + 3*1 = 67.
  33. Возьмите следующие две цифры в хеш-таблице (1c) и преобразуйте их из шестнадцатеричной системы в десятичную: 1*16 1 + c*16 0 = 1*16 + 12*1 = 38.
  34. Число 38 находится в диапазоне от 0 до 51 и является уникальным, поэтому сопоставьте его с картой, а именно с тройкой бубен. Это первая карта, которую нужно вытянуть.
  35. Возьмите следующие две цифры в хеш-таблице (2e) и преобразуйте их из шестнадцатеричной системы в десятичную: 2*16 1 + e*16 0 = 2*16 + 14*1 = 32 + 14 = 46.
  36. Число 46 уже было найдено в хеше, поэтому мы пропускаем эти две позиции.
  37. Возьмите следующие две цифры в хеш-таблице (e6) и преобразуйте их из шестнадцатеричного формата в десятичный: e*16 1 + 6*16 0 = 14*16 + 6*1 = 230.
  38. Возьмите две последние цифры последнего шага, которые равны 30.
  39. Число 30 находится в диапазоне от 0 до 51 и пока не найдено, поэтому сопоставьте его с картой. Конкретнее, 30 соответствует пятерке бубен. Это будет вторая карта-заменитель.
  40. Возьмите следующие две цифры в хеше (88) и преобразуйте их из шестнадцатеричного в десятичное число: 8*16 1 + 8*16 0 = 136.
  41. Возьмите две последние цифры последнего шага, которые равны 36.
  42. Число 36 находится в диапазоне от 0 до 51 и пока не найдено, поэтому сопоставьте его с картой. Конкретнее, 36 соответствует валету бубен. Это будет третья карта-заменитель.
  43. Нам не нужно искать больше карт. Раздача готова к подсчету очков, и игроку выплачивается выигрыш.

В итоге, в следующей таблице показаны два символа из хеша за раз, десятичное преобразование, а затем преобразование в формат карты, если таковое имелось.

Преобразование хеша в карту

Хэш
Персонажи
Десятичная дробь
Конвертация
Правая Двое
Цифры
Играя
Карта
58 58 или
95 49 49 Валет треф
155 55 или
ба 186 86 или
фф 55 55 или
d9 217 17 5 червей
б3 179 79 или
92 146 46 8 треф
139 39 Туз треф
28 40 40 2 треф
43 67 67 или
1c 28 28 Тройка бубен
2e 46 46 р/п/к
е6 230 30 Пятерка бубен
88 136 36 Валет бубен

Ключ:
o/r = Десятичное преобразование выходит за пределы допустимого диапазона для карты
р/п/к = Повторение предыдущей карты

Если вам кажется, что всё это слишком сложно для обеспечения справедливого результата, у меня для вас хорошие новости! Я написал скрипт, который сделает это за вас, и он сохранён в PHP Sandbox . Это замечательный ресурс! Чтобы использовать его, просто введите сид сервера (казино) в строке 4 и сид клиента (ваш собственный) в строке 5 и нажмите «Выполнить код». Карты, которые вам были предназначены, появятся в поле результатов ниже.

Если с кодом что-то случится, вы можете просмотреть его, нажав кнопку ниже.

На этой странице описывается метод игры в видеопокер с использованием криптографии, гарантирующей предопределенность раздаваемых карт. Если вы не знакомы с основными правилами видеопокера, пожалуйста, посетите мою основную страницу, посвященную видеопокеру .

Для целей этой страницы я пока рассматриваю Cypto.Games. У них есть три версии видеопокера, а именно:

  • Валеты или лучше
  • Десять или лучше
  • Бонусный покер

Игрок должен сделать ставку в 10 кредитов, хотя он может выбрать, сколько именно в криптовалюте он готов поставить. На мой взгляд, шаг с десятью кредитами излишне запутывает ситуацию.

Далее нажмите «Выполнить код». Карты, которые вам были предназначены, появятся в поле результатов ниже, а также подтверждение того, что начальное значение генератора случайных чисел (Server Seed) совпадает с тем, что было указано до совершения ставки.

Ниже также приводится копия кода.

[спойлер=Кодекс честной игры в видеопокер]строка 1 php
       // Конвертация видеопокера для Crypto.Games
        
$server_seed = "2XMpPAbEw3qdH3HQla2K5zNwoNEFHOEYolkB969j";
$client_seed = "bc7v9bn70d7n07sn";
$next_hash = "64e701539ecf4c03b90ecd957d6675b2f72c3fd84f04dc5eb63eed8b9a58b95b";
$rank_array=array("A",2,3,4,5,6,7,8,9,10,"J","Q","K");
$suit_array=array("пики","сердца","бубны","трефы");
$cards_found=0;
$position=0;
$combined_seed = $server_seed.$client_seed;
echo "Объединенное начальное значение = $combined_seed\n";
$combined_hash = hash('sha512', $combined_seed);
echo "Хэш объединенного начального значения = $combined_hash\n";
делать
{
    $first_two=substr($combined_hash,$position,2);
    $hex_to_dec=hexdec($first_two)%100;
    если ($hex_to_dec <=51)
    {
        $repeat=0;
        если ($cards_found>0)
        {
            for ($i=0; $i<$cards_found; $i++)
            {
                if ( $hex_to_dec == $card_array[$i]) 
                { $repeat=1; }
            }
        }
        если ($repeat==0)
        {
            $card_array[$cards_found] = $hex_to_dec;
            $game_position=1+($cards_found%5);
            $cards_found++;
            $rank=$hex_to_dec%13;
            $suit=intdiv($hex_to_dec,13)%4;
            если ($cards_found<=5)
            { echo "Раздать карты $game_position =\t$rank_array[$rank] из $suit_array[$suit]\n"; }
            еще 
            { echo "Вытяните карту $game_position =\t$rank_array[$rank] из $suit_array[$suit]\n"; }
        }
    }
    $position+=2;
    если ($position==128)
    {
        echo "Ошибка -- В хеше больше нет пробела.\n";
        $cards_found=10;
    }
}
пока ($cards_found<10);
$server_seed_hash = hash('sha256', $server_seed);
если ($server_seed_hash==$next_hash)
{ echo "Совпадение начального значения сервера.\n"; }
еще
{   
    echo "НЕСООТВЕТСТВИЕ СЕМЕННЫХ ЗНАЧЕНИЙ СЕРВЕРА!\n";
    echo "Серверный начальный параметр =\t$server_seed\n";
    echo "Хэш начального значения сервера =\t$server_seed_hash\n";
    echo "Предполагаемый следующий хеш=\t$next_hash\n";
}

// Процедура
// 1. Переместите "позицию" в положение 0. 
// 2. Объедините начальные данные сервера и клиента, а также начальные данные сервера, в указанном порядке. 
// 3. Сгенерируйте хеш SHA-512 строки из шага 2.
// 4. Преобразуйте первые два символа, начиная с "позиции" хеша из шага 3, из шестнадцатеричного формата в десятичный.
// 5. Возьмите две конечные цифры из пункта 4. 
// 6. Если результат шага 5 равен 51 или меньше и еще не найден, то это будет одна из первых десяти карт.   
// 7. Увеличьте "позицию" на 2.
// 8. Повторяйте шаги с 4 по 7, пока не будет найдено десять уникальных карт.  
// 9. Первые пять найденных карт будут розданы при раздаче, слева направо.
// 10. Вторые пять карт будут находиться в очереди на раздачу при взятии карты. Например, если игрок берет три карты, то он получит 6-ю, 7-ю и 8-ю карты из очереди.// 11 Чтобы получить позицию карты из шага 6 в реальную карту, выполните следующие действия: // A. Разделите результат из шага 4 на 13 и возьмите остаток. // B. Сопоставьте результат из шага 11A с рангом следующим образом: от 0 до A, от 1 до 2, от 2 до 3, ..., от 9 до 10, от 10 до J, от 11 до Q, от 12 до K. // C. Разделите результат из шага 4 на 13 и отбросьте остаток. // D. Сопоставьте результат из шага 11C с мастью следующим образом: от 0 до пик, от 1 до червей, от 2 до бубен, от 3 до треф. ?>
[/спойлер]