Я имел ввиду другое. Поток транзакций это непостоянная величина. Количество транзакций может изменяться в очень больших пределах - сегодня очень много, завтра очень мало. Добавим сюда майнеров, которые по какому-либо поводу не желают включать в блоки 5%, предположим, шлака, по их мнению, создавая предпосылки к тому, что при очень малом количестве стандартных транзакций мемпул будет уменьшаться очень долго, а блоки будут очень маленькими.
Вообще, я думаю, можно убрать лимит на нестандартные транзакции. Это только усложняет понимание. Пусть будет просто ограничение до 5% нежелательных транзакций (с низкой комиссией) в блоке.
А смысл тогда в этих 5% какой? Это уже стоит тогда рассматривать как погрешность между индивидуальными мемпулами узлов?
Вроде того. На самом деле, такой большой резерв не нужен. Так как майнеры раздают готовые блоки намного позже, чем транслируют включенные в него транзакции. Очень маловероятно, что до какой-то ноды готовый блок дойдет раньше транзакции.
Манипулировать мемпулом узлов, по-моему, вполне возможно, если не сказать просто
Для этого нужно изолировать ноду. Если она будет соединена хотябы с одним честным узлом, то мемпул будет синхронизироваться с сетью.
Да даже и без возможных манипуляций, постоянный и неравномерный приток транзакций нужно будет как то учитывать. А из этого сразу возникает масса проблем с консенсусом по блокам
Конесенсус достигается просто. Майнеры ретранслируют транзакции, ждут 20 секунд, добавляют их в блок. Полные ноды получают блоки, проверяют, что 95% транзакций присутствуют в их мемпуле, и если это не так, то временно отклоняют блок.
Другими словами достаточно подождать 15-20 секунд после появления в мемпуле нужных транзакций и любой новый блок считается валидным, при промежутке то между блоками в 600 секунд
Нет. Транзакции должны присутствовать в mempool не менее 15 секунд на момент получения блока. Майнер же обязан был их ретранслировать, как минимум, 20 секунд назад + время пока до нас дошел блок.
Зачем нам нужны орфан блоки в ещё большем их количестве?
Майнеры могут увеличить задержку на сколько им угодно. Это гарантирует, что все транзакции, которые будут в блоке, дойдут до всех нод еще до начала майнинга (ну, кроме изолированных).
А минимальный размер каким может быть?
Минимальный - это единственная coinbase транзакция. На всякий случай, можно устанавливать лимит, как max(1000000, average_size*2).