Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
мощность всей сети тоже снизилась
Я бы считал примерно так: фиксация числа от 0 до 9 в 10 раз уменьшает вычислительную мощность (9/10 хэшей отвергаются),
uint random_number = uint(block.blockhash(blockNumber))%99;
А если первый найденный блок уже является нужным?
ненужный — выкинутьто считается
скажем мы реализуем лото "5 из 36"
(5!x31!)/36! => 120/45239040 = 0.000002653 => 0.0002653% найти 5 из 36.
Таким образом если мы в качестве источника рандомности берем хеши нескольких последовательных блоков, шансы отдельно взятого майнера повлиять на результат, настолько малы, что в большинстве случаев ними можно пренебречь, даже есть речь идет о розыгрыше денежных (ETH) призов.
все голоса пользователей должна быть сделаны как минимум 72 блока назад
метод должен быть вызван обязательно вами
и в определенный, заранее оговоренный номер блока
Теперь вы обязаны иметь offchain-бота, который будет следить за блокчейном и дергать метод в нужным момент — это сложно и децентрализованно.
у вызывающего есть возможность выбрать удобную
последовательность хэшей
Возьмите хороший генератор случайных чисел, а seed позвольте загенерить пользователям вместе. Тогда атака возможна только при договоренности абсолютно всех участников, что бессмысленно.
Программирование генератора случайных чисел на Ethereum