Random Number Generator

Author

TechnoL0g

Published

January 15, 2024

Основа

Генератор случайных чисел основан на теории игр и блокчейн-технологии SmartHoldem.

Стойкая защита от путешественников во времени!

Если вы узнаете номер по завершении игры, вернётесь в прошлое и выберите выигрышный номер. Результат игры изменится и выигрышный номер станет другим.

Доказательство получения независимого случайного числа

С помощью RNG возможно получить настоящие случайные числа, независимые от времени и знаний результата в будущем.

Как это работает на примере лотереи

Придумаем простые правила лотереи: номера билетов от 0 до 99, номер билета можно приобрести 1 раз, розыгрыш происходит каждые 2880 блоков

До начала розыгрыша лотереи, Дарья приобрела билет с номером 14, Василий приобрел билет с номером 21

Каждый участник лотереи совершил платежную транзакцию в блокчейне SmartHoldem с номером билета в примечании, подписанную уникальной крипто-подписью.

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

Каждый 8 секунд создается новый уникальный блок. Пример хэша блока: bd082c73...960fbda8

Розыгрыш назначен через 2880 блоков.

К примеру блок на котором должен состояться розыгрыш лотереи d2c6f1ab...cae17f0e

Нам необходимо вычислить выигрышный номер на основе 16-ричного хэша блока

Т.к. для нас достаточно значений от 0 до 99, возьмем из хэша блока крайние значения:
0xF,0x0,0xE и преобразуем каждое в в десятичную систему исчисления 0xf="15" + 0x0 = "0", 0xe = "14" = 15014 и получим выигрышное число = 14

В этом случает победитель лотереи Дарья.

Предположим у Василия машина времени и он знает выигрышное число 14, возвращается в прошлое и первым покупает билет.

Дарья покупает другой билет, т.к. по нашим правилам номер уникален и имеет 1 владельца.

“Результатом будет совершенно иной хэш разыгрываемого блока, т.к. все хэши транзакций и блоков изменятся”

Вывод

Таким образом мы получаем:

  • Полную прозрачность в реальном времени
  • Настоящее случайное число
  • Каждые 8 секунд создаются уникальные случайные числа
  • Очень длинную поледовательность чисел
  • Защиту от путешественников во времени
  • Пользователи и заверители блоков создают дополнительный фактор случайности
  • Легко управляемые правила работы с числами
  • Вы можете использовать RNG API для своих идей без ограничений
  • Широкий набор вариантов использования (подписчики, лотереи, призы итд)

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

Возможно усложнить алгоритм к примеру конкатенацией имени делегата подписавшего блок (каждый раунд делегаты назначаются pRNG) + хэш блока, получая из них новый хэш. Вы сами создаёте правила генерации чисел.

Если нам необходимо получить диапазон чисел к примеру от 0 до 51, тогда мы возьмем последние 2 знака из преобразованного хэша, мы знаем, последние 2 знака в конечном виде могут принимать значения от 0 до 99

а в результате получаем число > 51, например 92, мы просто используем разность с условием, т.е. результат 92 - 51 = 41

На данный момент значения по умолчанию: 0..9, 0..99, 0..999 итд

Перейти к RNG API

Все изображения созданы в нейронной сети SmartHoldem