сейчас сделано просто: пересмотреть можно только 100 блоков,
если вы получили 200й, то 100й уже нельзя пересмотреть и все кандидаты игнорятся
Ну хорошо, вы не примете на замену новый блок 100 если у вас есть уже 200 блоков. А тот кто этот сотый блок отправляет на вас обидится и построит цепочку в 500 блоков пока вы строите свою из трехсот. То есть в сети будет две цепочки:
1 - 2 - 3 ... - 100(версия 1) -... - 300
1 - 2 - 3 ... - 100(версия 2) -... - 300 - ... - 500
Какая цепочка правильная?
нужно использовать только транзакции из пула, если приходит блок в котором есть транзакции которых нет в пуле то он не принимается как "пока не валидный"
а чтобы обогнать нужно плодить свои транзакции но их не будет в пулах других узлов и они будут откладывать ваши блоки на потом или вообще игнорить
если он будет делать ее быстрым методом, то какой вообще в этом смысл? он не получит за это ничего
ну ок, пусть он хочет просто поломать всё, тогда если у нас 2 или 100 цепей идут параллельно и все одной длины и все валидные, то вводим простое правило какоето, например на каждом 100м блоке, сразу после метки, мы сравниваем хеши последних блоков цепей и та цепь которая выигрывет продолжает, остальные игнорятся
если он будет делать медленно выискивая для себя награду, то это его сильно замедлит и он отстанет от другой цепи, сеть выберет более длинную
В вашем велосипеде сложности нет, консенсуса нет.
а кто сказал что консенсус можно достигнуть только сложностью? вообщето его проще всего достигнуть математической детерминированностью, когда порядок данных определяется самими данными
в рипле например сложности вообще нет, и узлов там мало, и нет мастернодов, все почти на демократии, ну пусть там большая часть с одним владельцем, но ботнет всеравно больше в 100 раз но чтото никто не спешит его атаковать почемуто