True Random Number Generator

Real time generator [0 - 255] 32 Random numbers per block

Автор

TechnoL0g

Спецификация

Генератор случайных чисел основан на истинно случайной энтропии SmartHoldem. В качестве источника энтропии используется блокчейн SmartHoldem.

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

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

Из чего состоит блокчейн-энтропия SmartHoldem

  • Hash нового блока строится по дереву merkle и зависит от всех предыдущих блоков и операций в сети SmartHoldem выполняемых участниками
  • Любая сллучайная операция выполненная участником сети, происходящая сегодня в BlockChain SmartHoldem влияет на хэши всех будущих блоков
  • Случайное ранжирование делегатов в каждом раунде
  • Операции в блокчейне SmartHoldem непредсказуемы и могут происходить в любое время, например, отправка транзакций, регистрация делегатов, голосование, игровые транзакции и т. д.
true crypto rng smartholdem

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

Каждые 8 секунд в BlockChain SmartHoldem происходит генерация случайно ранжированными делегатами уникального Hash ID блока содержащего числовой ряд шестнадцатеричных значений, пример: d291a92dce4d774285d9d0c4e6e1cc1f765c6e30ca2733f337c80c8af932dfa0.

Полученный шестнадцатеричный Hash блока преобразуется в числовую десятичную последовательность.

Для расчёта текущего случайного номера из числового ряда выбираются значения с необходимым количеством знаков, например 2 (от 00 до 99).

Все блоки легко проверить в обозревателе блоков и в Hex to Decimal Bytes Array Converter. Просто скопируйте хэш блока в Hex to Decimal Bytes Array Converter.

Пример выборки случайного значения от 0 до 99:

  • Block Hash: d291a92dce4d774285d9d0c4e6e1cc1f765c6e30ca2733f337c80c8af932dfa0
  • 10 байт HEX: 33  F3  37  C8  0C  8A  f9  32  DF  A0
  • Пеобразованный числовой ряд в DEC: 51243552001213824950223160
  • Двузначный случайный номер основанный на блокчейн-энтропии: 60

Структура блока SmartHoldem

id - хэш текущего блока (вычисляется из всех включённых в блоки данных)

  • version - версия блока
  • height - высота блока
  • previous - предыдущий хэш блока
  • forged - информация о форжинге (reward, fee, amount, total)
  • payload - полезная нагрузка, список хэшей транзакций
  • generator - делегат подписавший блок (username, address, publicKey)
  • signature - подпись делегата подписавшего блок
  • transactions - число транзакций в блоке
  • timestamp - время блока

Смотреть блок в обозревателе

Генератор истинных случайных чисел на блокчейне

Доказуемо случайный, защищенный от несанкционированного доступа и недорогой (TRNG)

true crypto rng smartholdem

Доказуемо честный ГСЧ

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

Проверяемая случайность

Каждый случайный результат можно проверить с помощью криптографических доказательств.

Защита от несанкционированного доступа

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

Простой визуальный анализ

Один из способов изучить генератор случайных чисел — создать визуализацию выдаваемых им чисел. Визуализация - это один из способов получить приблизительное представление о производительности генератора. Представленные ниже изображения являются частями более крупных изображений, созданных для проверки качества двух генераторов случайных чисел. Изображение слева создано с помощью Blockchain TRNG SmartHoldem, который является генератором истинных случайных чисел (TRNG), а изображение справа — с помощью функции rand() из PHP в Microsoft Windows, которая является генератором псевдослучайных чисел (PRNG).

true crypto rng smartholdem
Blockchain TRNG SmartHoldem
PRNG
PHP rand() в Microsoft Windows

Это визуальное сравнение ясно показывает, насколько важны случайные числа, особенно если ваш сайт представляет собой игру или сайт азартных игр. Как вы можете видеть, изображение сгенерированное генератором псевдослучайных чисел PHP/Windows, демонстрирует четкие закономерности по сравнению с изображением, сгенерированным генератором истинных случайных чисел Blockchain TRNG SmartHoldem. Генерация истинно случайных чисел - Всегда Случайна!

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

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

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

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

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

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

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

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

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

Т.к. для нас достаточны от 00 до 99, возьмём из хэша блока крайние значения:

  • Block Hash: d2c6f1abc68cbd56aa809a5dc8565237cf0d21aa9537a475526d1867cae17f0e
  • HEX 10 байт справа:  a4  75  52  6d  18  67  ca  e1  7f  0e
  • Преобразуем в байты Uint8Array: 164,117,82,109,24,103,202,225,127,14
  • Объединим числовой ряд: 164117821092410320222512714
  • Номер выигрышного билета: 14

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

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

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

Вывод

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

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

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

Использование энтропии блокчейна SmartHoldem

Используйте блокчейн-энтропию SmartHoldem в качестве истинно-случайного стартового сида для генерации числового ряда.

Доступны десятичные значения по умолчанию: 0..9, 0..99, 0..999 и т.д. до 1.15*10^77 или
115 792 089 237 316 200 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000.

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

- Добавьте крипто функции: crypto.randomInt, crypto.randomUUID, HMAC, Lamport signatures, функции хэширования, ECDH, Scrypt.

- Создайте свои правила генерации чисел, используя истинно-случайную энтропию блокчейна SmartHoldem.