Перейти к публикации
Schnibble

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

Рекомендованные сообщения

(изменено)
Как мы знаем, ограничение на размер блока в 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
Изменено пользователем Schnibble

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

 

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

не точное:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

Поделиться сообщением


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

 

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

 

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

 

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

Изменено пользователем Schnibble

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×