Генерация случайных чисел (ГСЧ) на блокчейне

Adventures Lab
5 min readMay 29, 2020

--

В последнее время, в Adventures Lab стало приходить больше заявок от проектов, которые разворачивают игровые механики на блокчейне (например, лотереи, слоты с рулеткой, бинарные опционы и т.д.) При этом, широко известно, что качественный и справедливый генератор случайных чисел (ГСЧ) пока не изобретен. Каждое существующее решение имеет очевидные недостатки, с которыми не очень хочется мириться.

Уже более 10 лет, проблемы генераторов случайности пытаются решить за счет блокчейна. Мы решили провести анализ наработок в нише ГСЧ на блокчейне и поделиться выводами в статье.

По старинке (традиционно), генерация случайных чисел (ГСЧ) происходит централизованно, на базе локальных программных систем или под контролем группы лиц / организаций. Среди существующих на рынке решений, ГСЧ классифицировали следующим:

  1. Генераторы псевдослучайных чисел (PRNG), в которых используются детерминированные математические алгоритмы. Эти ГСЧ основаны на алгоритмах, реализованных на конечном автомате, для получения псевдослучайных последовательностей из начальных значений (начальных чисел) в математических процессах.
  2. Генераторы истинных случайных чисел (TRNG), в которых результат зависит от недетерминированным физических явлений (например, тепловой шум, радиошум и т.д.). Широко известно, что эти явления ведут себя непредсказуемо.

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

С момента изобретения блокчейна в 2009 году, ученые-программисты пытаются разработать качественный ГСЧ на основе цепочки блоков. Ниже, мы кратко обсудим некоторые решения и проясним текущее состояние генерации случайных чисел на основе блокчейна:

Block-hash

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

Рассмотрим принцип работы Block-hash на примере лотерейного сервиса. Игроки покупают билет, размещают его номер в системе до определенного времени (например, ежедневно до 19:00). После 19:00, дневной цикл закрывается и протокол переходит к следующей фазе — определению выигрышных номеров. Этот расчет происходит на основе хэша первого блока, который становится доступным к 8 вечера. Как мы видим, в 7 часов вечера никто не может предсказать хэш блока в 8 часов вечера, что обеспечивает надежность сервиса.

К сожалению, подобный принцип ГСЧ может подвергаться манипуляциям со стороны майнеров-админов блокчейна. Когда вознаграждение за выигрыш лотереи небольшой — у майнеров нет мотивации вмешиваться в работу блокчейна. Но, чем выше сумма транзакции, тем больше риск того, что люди начнут манипулировать хэшем, чтобы сгенерировать желаемые номера. По итогу, для приложений подразумевающих крупные транзакции, этот метод не может быть 100% безопасным.

Bitcoin Beacon

В данном случае, для ГСЧ используется естественная цепочка биткоинов. Временные метки и транзакции в биткоинах являются источником стабильно высокой энтропии (в данной ситуации, «хаотичности» источника случайности), а чем выше хаотичность — тем сложнее предугадать число-результат.

Кроме того, в этом методе используют хэш-функцию SHA256 и алгоритм Proof-of-Work (PoW). За счет того, что PoW недетерминирован и требует большого объема вычислений, обеспечивается непредсказуемость результата ГСЧ.

В Bitcoin Beacon присутствует та же проблема, как и в методе Block-hash: майнеры (имея материальный стимул), в теории, могут манипулировать конечным результатом и намеренно исключать неугодные им блоки. Учитывая принцип работы алгоритма PoW, майнер может получать за свою работу вознаграждение в виде биткоинов. Но, если вознаграждение в лотерее крупное, майнера можно подкупить, чтобы он игнорировал определенные блоки цепочки.

По итогу, этот метод можно обезопасить, алгоритмизировав работу майнера по принципу Proof-of-Work. Но, это не отменяет того, что в Bitcoin Beacon есть определенные недостатки.

Oraclize

По своей задумке, Oraclize (или Provable) является поставщиком данных для смарт-контрактов и блокчейн приложений. Их помощь может пригодиться тогда, когда нужно перенести определенные данные извне в блокчейн.

Oraclize выступает в роли посредника, который собирает данные из внешних источников (например WolframAlpha, IPFS и т.д.) и подгружает их в нужную блокчейн-систему. Что касается генерации случайных чисел — Oraclize просто переносит данные из random.org в блокчейн.

Стоит ли доверять подобному инструменту — сугубо ваше решение. В теории, любой централизованный сервис (тот же Oraclize) может подвергнуться хакерской атаке. Поэтому, импорт Oraclize в бизнес-процессы может быть не лучшим решением для проектов, где важно обеспечить высокий уровень безопасности. Плюс ко всему, сам факт привлечения посредника прямо противоречит философии блокчейна.

RanDAO

RanDAO — это сервис, главная цель которого — создание достоверного ГСЧ на блокчейне. Слоган и философия проекта — «Майнерам нельзя доверять».

Еще в 2017 году, на базе сервиса RanDAO развернули “схему фиксации и обнаружения” — полноправную ГСЧ, работающую на блокчейне Ethereum. Этот инструмент позволяет принимать участие в ГСЧ любому человеку, который имеет адрес Ethereum. Протокол RanDAO проходит три этапа:

  • Фиксация. Любой участник, который хочет принять участие в генерации случайного числа, подписывает определенное обязательство, которое связано с секретным номером si.
  • Выявление. После завершения фазы фиксации (когда все участники взяли на себя обязательства), все должны раскрыть секретный номер si.
  • Вычисление. Когда все предъявят свои номера, число-результат будет вычислен из функции f (s1, s2,…, sn) всех собранных секретных чисел.

RanDAO, по своей задумке, пытается решить проблему справедливости и снизить значимость роли майнер, но не решает проблему достоверности случайного числа. Работа сервиса основана на том, что есть как минимум одна честная сторона (в данном случае функция f), которая гарантирует неприкосновенность конечного результата.

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

Публичный секретный обмен

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

В то время, как RanDAO требует честного меньшинства (как минимум, одна честная сторона) для обеспечения непредсказуемости, в принципе общедоступного секретного обмена требуется честное большинство.

Как мы видим, предпринималось достаточное количество попыток разработать генераторы случайных чисел на блокчейне. При этом, все существующие решения имеют очевидные недостатки и проблемы. Как оказалось, разработка надежного и качественного ГСЧ на блокчейне — задача со звездочкой.

Инвестиционная компания Adventures Lab активно ищет traffic-driven стартапы на начальных стадиях реализации. При этом, мы готовы оценивать интересные решения проблемы рандома. Если вы хотите развить свой проект, заявить о нем можно в специальной форме на нашем сайте.

--

--

Adventures Lab

Investment Company & Startup Incubator of traffic-driven Early Stage businesses