Нахождение наилучшего алгоритма получения "случайного" числа в Solidity
1.0. Анализ существующих решений
1.1. Составление списка контрактов с различными алгоритмами получения случайного числа (2.tests)
1.2. Вычленение из каждого из них кода собственно получения "случайного"
2.0. Выбор алгоритма (с внешней реализацией или внутренней)
2.1. Контракт "мне нужен рендом из блокхеша"
2.2. Контракт "я хочу генерировать рендомы + мне нужен рендом"
2.3. Прогон вариантов на тестовом блокчейне эфира
-
внешний - рендом реальный через практически любой "движок", максимально случайным в сверке берем алгоритм на "движениях мышки"
2.4. Оценка "случайности" полученных случайных чисел каждым вариантом
3.0 Результат работы
3.1. Таблица "цена алгоритма" / "степень нормальности"
2.1 Внутренний рендом | 2.2 Внешний рендом | |
---|---|---|
инициализация | 412500 | 371757 |
стоимость одного числа | 125856 | 237751 |
+ доп стоимость одного числа | 0 | 337135 / количество чисел у одного провайдера |
--- | --- | --- |
cлучайность | 0.1239 | 0.7686 |
3.2. Создание окончального смартконтракта "случайного числа"
Контракт с наиболее случайным из алгоритмов "случайного числа" либо существующих, либо их модификаций
[На будущее, если нужны будут на самом деле внешние поставщики] Для внешнего контракта нужно использовать несколько Админов, которые по очереди отправляют Провайдеров в рендомы (т.е. на одно рендомное число нужно Провайдер 1 от Админа 1 + Провайдер ... + нужная степень энтропии)
[Сделано] Дополнительно валидируем на соседних интервалах живой сети (3х по две тысячи) (4.reviewed/readme.md)