Всем привет!
Имеются ли на форуме русскоязычные девелоперы, желающие принять активное участие в обсуждении решения данной проблемы, а возможно и его реализации?
Для начала предложу простое решение, альтернативное ограничению блока в 1MB. Так как этот лимит был введен в качестве защиты от спама, то можно просто сделать это другим способом. Допустим, мы считаем спамом все транзакции с комиссией ниже некоторой фиксированной величины (скажем, 20 satoshies/byte). В таком случае, проблема решается предельно просто - снимаем ограничение на размер блока и запрещаем майнерам включать в блоки транзакции с комиссией ниже этой величины, а также бесплатно включать собственные транзакции. Вернее, не совсем запрещаем, а все же оставим немного места (пусть будет 5%) для спорных транзакций:
Вариант решения №1- лимит на размер блока отменяется*
- полные узлы временно отклоняют блоки*, если в них включены транзакции с комиссией ниже 20 сат/байт, или более 5% спорных транзакций (находившиеся в локальной очереди mempool менее 15 секунд)
- майнеры следуют тем же правилам, но кроме этого, они вынуждены передавать транзакции в сеть (в том числе собственные), как минимум за 15-20 секунд до включения их в блок
- minTxRelayFee параметр становится частью консенсуса и не может превышать 20 satoshies/byte, иначе ноды просто не смогут проверить блок на валидность
Основная идея в том, что транзакция должна попасть в мемпулы большинства полных нод и пробыть там какое-то время до того, как будет включена в блок. Это необходимо, чтобы майнеры не могли бесплатно включать собственные транзакции - теперь они, наравне со всеми, вынуждены сначала разослать их по сети.
5% спорных транзакций - смягчающее условие, это очень большой запас для того, чтобы ноды всегда приходили к консенсусу. Даже в том случае, если готовый блок каким-то образом будет получен раньше, чем некоторые включенные в него транзакции (что на практике почти невозможно).
* В любом случае, самая длинная цепочка в конечном итоге строится на PoW, и временно отбракованные блоки теоретически могут быть включены в блокчейн, но только если большинство майнеров (>50%) нарушат правила и согласятся их принять. Поэтому, во время оценки PoW для цепочки, ноды и майнеры не должны считать такие блоки, пока за ними не будет построено хотябы 2-3 нормальных блока. По этой же причине имеет смысл ограничить единовременное увеличение блока по сравнению со средним размером нескольких предыдущих, скажем не более чем вдвое.
Тема в англоязычной ветке:
https://bitcointalksearch.org/topic/block-size-increase-proposal-consensus-based-on-mempool-1851018Некоторые выдержки из обсуждений:
https://bitcointalksearch.org/topic/m.18465662Другой возможный способ - это оставить ограничение на размер блока, и увеличивать его тогда, когда в этом появляется реальная необходимость. То есть изменить правила консенсуса, чтобы майнеры могли увеличивать блок, если очередь mempool транзакций (с достаточной комиссией) переполняется. Ниже будут изложены некоторые идеи, как это реализовать...