Jump to content
Schnibble

Увеличение размера блока: консенсус основанный на mempool

Recommended Posts

Как мы знаем, ограничение на размер блока в 1MB было введено в качестве защиты от спама. Я хочу предложить альтернативное решение этой проблемы.
 
Допустим, мы считаем спамом все транзакции с комиссией ниже некоторой фиксированной величины (скажем, 20 satoshies/byte). В таком случае, проблема решается предельно просто - снимаем ограничение на размер блока и запрещаем майнерам включать в блоки транзакции с комиссией ниже этой величины, а также бесплатно включать собственные транзакции. Вернее, не совсем запрещаем, а все же оставим немного места (пусть будет 5%) для спорных транзакций:
 
  • лимит на размер блока отменяется*

  • полные узлы временно отклоняют блоки*, если в них включены транзакции с комиссией ниже 20 сат/байт, или более 5% спорных транзакций (находившиеся в локальной очереди mempool менее 15 секунд)

  • майнеры следуют тем же правилам, но кроме этого, они вынуждены передавать транзакции в сеть (в том числе собственные), как минимум за 15-20 секунд до включения их в блок

  • minTxRelayFee параметр становится частью консенсуса и не может превышать 20 satoshies/byte, иначе ноды просто не смогут проверить блок на валидность

Основная идея в том, что транзакция должна попасть в мемпулы большинства полных нод и пробыть там какое-то время до того, как будет включена в блок. Это необходимо, чтобы майнеры не могли бесплатно включать собственные транзакции - теперь они, наравне со всеми, вынуждены сначала разослать их по сети.
 
5% спорных транзакций - смягчающее условие, это очень большой запас для того, чтобы ноды всегда приходили к консенсусу. Даже в том случае, если готовый блок каким-то образом будет получен раньше, чем некоторые включенные в него транзакции (что на практике почти невозможно).
 
* В любом случае, самая длинная цепочка в конечном итоге строится на PoW, и временно отбракованные блоки теоретически могут быть включены в блокчейн, но только если большинство майнеров (>50%) нарушат правила и согласятся их принять. Поэтому, во время оценки PoW для цепочки, ноды и майнеры не должны считать такие блоки, пока за ними не будет построено хотябы 2-3 нормальных блока. По этой же причине имеет смысл ограничить единовременное увеличение блока по сравнению со средним размером нескольких предыдущих, скажем не более чем вдвое.
 
Обсуждение на bitcointalk, англоязычная ветка: https://bitcointalk.org/index.php?topic=1851018.0
Обсуждение в русскоязычном разделе: https://bitcointalk.org/index.php?topic=1840975.0
Edited by Schnibble

Share this post


Link to post
Share on other sites

Вы это сами придумали?

 

 

майнеры, в свою очередь, контролируют минимальную комиссию, а также задерживают транзакции в своей очереди, и не пропускают их в блок, как минимум 15-20 секунд с момента получения

 

Думали, кто и как это будет контролировать? Если никто, кроме самих майнеров - считайте, что этого правила нет и вся конструкция рассыпается...

Share this post


Link to post
Share on other sites

Думали, кто и как это будет контролировать? Если никто, кроме самих майнеров - считайте, что этого правила нет и вся конструкция рассыпается...

Здесь имеется ввиду, что они также как обычные ноды должны отбрасывать транзакции с низкой комиссией. Но кроме этого, они вынуждены передавать собственные транзакции в сеть, как минимум за 15-20 секунд до включения их в блок. Идея в том, что майнерам невыгодно нарушать эти правила, иначе они рискуют получить orphan-блок, который будет отвергнут другими узлами и майнерами.

Share this post


Link to post
Share on other sites

@Schnibble, Что значит вынуждены передавать? Чтобы их вынудить, надо прописать точное условие, при котором блок не будет принят остальными и станет орфаном. При этом это условие должно быть таким, чтобы не вызвать случайный раскол сети.

 

Вот это условие

 

 

полные узлы временно отклоняют блоки*, если в них включено более 5% нежелательных транзакций (находившиеся в локальной очереди mempool менее 15 секунд | с комиссией ниже 20 сат/байт)

не точное:

  1. 15 секунд - неясно, по чьему времени;
  2. В локальной очереди - значит, что один и тот же блок может быть отклонён и принят одновременно разными нодами?

Попробуйте сформулировать точное условие.

Share this post


Link to post
Share on other sites

Чтобы их вынудить, надо прописать точное условие, при котором блок не будет принят остальными и станет орфаном.

Для того, чтобы вынудить майнеров следовать правилам достаточно будет и 10% вероятности получить orphan.
 

15 секунд - неясно, по чьему времени

По времени ноды, которая делает проверку (начиная с момента получения транзакции)
 

В локальной очереди - значит, что один и тот же блок может быть отклонён и принят одновременно разными нодами?

Теоретически да, если майнер умудрится сгенерировать блок, в котором очень много транзакций, полученных им около 13-14 секунд назад. Но практически такого не будет, так как майнерам нет смысла специально нарушать правила, и с высокой вероятностью получать orphan. Достаточно удерживать транзакции 15-20 секунд до включения их в блок, чтобы абсолютное большинство узлов акцептировали блок.
 
Кроме того, описанная вами ситуация происходит и сейчас - такие блоки называются orphan. Узлы которые их принимают впоследствии все-равно отказываются от них, когда альтернативная цепочка становится длиннее.

Share this post


Link to post
Share on other sites

@Schnibble, отвечу на толке.

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites
Хочу заметить, что суть моего предложения это даже не хард-форк с увеличением блока, а всего-лишь спам-фильтр мусорных транзакций, которым не место в блокчейне.

 

Этот спам-фильтр можно использовать даже без софт-форка, просто запуская полные ноды, которые будут фильтровать блоки с нежелательными транзакциями. Чем больше полных нод - тем эффективнее будет работать фильтр.

 

В случае поддержки >75% майнеров можно активировать софт-форк, и тогда спам фильтр уже будет эффективно отбрасывать большинство нежелательных блоков.

 

После того, когда оставшиеся майнеры обновятся проблема спама будет решена, и уже можно безопасно снимать ограничение на размер блока. Да, это хард-форк, но если 95% майнеров его поддержат, то раскола сети не будет.

Edited by Schnibble

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...