Система выигрышей в Dice Paradise
Приветствуем вас в проекте https://t.me/DiceParadiseBot
Наш главный подход к проекту:
"Всё, что связано с доходом и деньгами наших пользователей - для нас важно и серьёзно."
В нашем проекте может присутствовать юмор, а картинки, тексты и видео могут генерироваться нейросетями. Но всё что связано с деньгами наших пользователей - это серьёзно и к этому мы подходим с математической точностью.
Как генерируется выигрыш или проигрыш в Dice Paradise
Для того, чтобы узнать выиграл человек или проиграл - используется генератор случайных чисел. Число генерируется полностью случайно и сгенерировано до того, как пользователь начинает играть в ту или иную игру. Поэтому никакие подтасовки с нашей стороны невозможны, результат игры сгенерирован и известен до того, как пользователь поставил на тот или иной исход. То есть выигрыш или проигрыш зависит только от удачи и выбора пользователя.
Как проверить честность Dice Paradise
Безусловно мы понимаем, что пользователям нужны доказательства честности того, что происходит во время игр.
С другой стороны, мы не можем вам заранее показывать результат игры, так как в этом случае вы будете всегда выигрывать, зная заранее результат.
У этой проблемы есть решение. Это генерация "Хеша" (Статья на Википедии) и показа вам "Хеша" до начала игры.
Что такое "Хеш" или другими словами "Хеш-функция"?
Хеш - это набор символов и результат хеширования. Хэширование представляет собой преобразование любого объема информации в уникальный набор символов, который присущ только этому массиву входящей информации.
Хеш обладает важными для нас и вас функциями:
- Хэш всегда уникален для каждого массива информации. В нашем случае для набора результатов игр.
- При самом незначительном изменении входной информации ее хэш полностью меняется. В нашем случае можно проверить исходное значение.
- Хэш-функция необратима и не позволяет восстанавливать исходный массив информации из символьной строки. Это можно сделать, только перебрав все возможные варианты, что при бесконечном количестве информации требует много времени и денег. Поэтому, чтобы избежать подбора результатов игр со стороны пользователей, Хеш у вас будет обновляться один раз в 15 секунд, до тех пор пока вы не начнёте игру. После начала игры - последний сгенерированный Хеш останется с вами до конца игры. Его правдивость вы сможете проверить сами.
Другими словами, если совсем просто, вам показывается набор букв и цифр до начала игры. После окончания игры показывается "ключ" к расшифровке, чтобы вы могли убедиться, что всё честно. На основании значения "Хеша" вы можете убедиться, что выигрышные значения были сгенерированы до вашей первой игры и на протяжении всей игры не менялись.
Как выглядит хеш в Dice Paradise?
До расшифровки Хеш выглядит примерно так:
23b76b2392f660f192325893eaeafcf0a91ce57092b23e10c7a899fa75409a36
Ключ:
12585513994564677096972899757197936750300379971984844365023062222379880019735530197322093478507641780824257303095562001508058865811603504997546477534573300
После расшифровки ключом там будет одно значение, от единицы до шести. Это то значение, которое выпало при игре.
Как расшифровать хеш в Dice Paradise?
До начала игры у вас сгенерируется сам Хеш. После окончания игры сгенерируется ключ для единственно возможной расшифровки Хеша.
Безусловно делать функцию расшифровки Хеша внутри бота нет никакого смысла, для непредвзятости нужен сторонний сервис.
Например, вы можете проверить Хеш через простейшую программу на Python:
import hashlib
big_number_str = input('Введите большое число')
# Преобразуем строку большого числа в целое число
big_num = int(big_number_str)
# Преобразуем целое число в байтовый массив
big_number_bytes = big_num.to_bytes((big_num.bit_length() + 7) // 8, byteorder='big')
# Хэшируем байтовый массив с помощью SHA-256
hash_object = hashlib.sha256(big_number_bytes)
hex_dig = hash_object.hexdigest()
# Преобразуем хэш в целое число
random_int = int(hex_dig, 16)
# Преобразуем целое число в значение от 1 до 6
dice_value = ((random_int ^ (random_int >> 16)) % 6) + 1
print(dice_value, hex_dig)Какой генератор случайных чисел используется в Dice Paradise?
В нашем проекте используется сторонний генератор случайных чисел. Для безопасности от взлома проекта детальную информацию мы дать не можем, но данный абзац написан для того, чтобы подчеркнуть, что встроенный генератор случайных чисел Телеграмм для бросков кубиков не используется. Генератор случайных числе Телеграм псевдослучаен и есть способы заранее предсказать его значения, что в нашем случае не подходит.