А что если делать ГСЧ на основе нескольких последних блоков?
Это ничем не отличается от генератора на основе последнего блока.
Последний майнер видит контракт, вычисляющий случайное число, вычисляет его
сам перед публикацией блока в сеть и таким образом может "подкручивать" ваш
генератор в выгодную для себя сторону (разумеется, если на кону серьёзная ставка)
Пример для понятности.
Допустим, ваш ГСЧ выдает рандомно 0 или 1. Если выдалась 1 - то игрок получает
от вас миллион рублей. Если выдался 0 - ставка игрока в миллион рублей идёт вам.
Майнер ставит на кон миллион и майнит блок. Если блок смайнил кто-то другой - в
этом случае вероятность выигрыша и проигрыша 50:50
Если блок смайнил сам майнер - он сперва проверяет - если выиграл - то публикует
блок. Если проиграл - он его выбрасывает в /dev/nul и продолжает майнить. Таким
образом, он, конечно, наказывает себя на награду от блока, но зато его шансы
выиграть у вас в долгосроке увеличиваются.
А вы лично будете на этом только терять деньги. Причем чем больше будет
таких хитрожопых майнеров, тем больше вы будете терять. В случае если все просекут
эту фишку - то ваш генератор будет выдавать последовательность 1-1-1-1-1-1...