Зачем вообще хранить подписи после включения транзакции в блок?
А это самый главный вопрос. Тот, который меня больше всего смущает.
Давайте для простоты предположим, что ноды хранят сегвит-данные только для последнего блока.
Тогда возникает вектор атаки: крупный пул майнит подряд два блока.
В блок N он записывает перевод с 1000 самых крупных адресов на свой адрес.
(Без сегвит-данных, разумеется, так как сегвит-данные он создать не может)
Смайнив этот блок, пул не выпускает его в сеть, а продолжает майнить сразу второй.
При небольшом везении пул опередит сеть на два блока.
После чего он публикует сразу два своих блока. Блок N и блок N+1, причем корректные сегвит-данные
предоставляет только для блока N+1 - ведь все хранят сегвит-данные только для одного блока, для последнего.
Ситуация которая в дворовом футболе называлось "заиграно". Никто оспорить по сути и не может.
Наступает грандиозный песдец.
И не убеждайте меня, что никто не будет этим заниматься, так как это "невыгодно".
Кстати, ситуацию можно "пошевелить" небольшими начальными условиями.
Например, пул "выпускает" блок в сеть передавая только блок N на "старые ноды".
Старые ноды разносят этот валидный блок по сети.
Сейчас большинство майнеров используют "упрощенную проверку", то есть начинают майнить
новый блок не проверив старый, а только получив его id (для этого даже стратумом подключаются
к конкурентам, чтобы получить заветный хеш как можно раньше)
В общем - мысль такая:
За все приходится платить. За большее количечтво транзакций в блоке сеть будет платить уменьшением надежности.