Давайте приступаем к решению вопроса концептуально. Не концептуально уже решено всё выше.
Теперь давайте технически.
Я забыл время в будущее атакующий переводит или в прошлое?
Вроде в будущее.
Давайте так.
Мы просто пилим 1 строку в клиенте которая не допускает время следущего блока более чем час в будущее по сравнению с последним принятым сетью и всё.
Выпускаем такого клиента и все дружно путаемся орфанить атакующего.
Для проверки назначаем одного атакующего кто пытается создать блок.
ВСЁ ёпти!
Чего тут еще *ля так долго заплатки делать! Там буквально 10 символов ввести в код клитента и готово будет! Одно сравнение поставить, где там таймштамп мы два их сравним, запомним в переменной если нет таймштамп последнего добавив такой опять же если нет в глобальную переменную, и бальше на подходе такого блока мы его тестим сравнивая с тем временем и всё.
Окей виноват, не одна строка а возможно две. Возможно одна возможно две. А бальтазар и другие программеры спецом вас динамят что заняты более перспективными кодами типа.
А не, такой вариант не подходит, ибо, атакующий имеющий большую вычислительную пос мощность сначала сделает на час, потом еще на час и т.д., уйдёт в будущее постепенно.
Такие атаки были в перьях при пов-майнинге.
Но слушайте, уж лучше так чем никак.
Если у чело большие мощности то мождно и куда большего творить, в данном случае пока не исправили никак можно и вовсе с одним маленьким входом всем насрать.