Грегори Максвелл о размере блока

Грегори Максвелл (Gregory Maxwell), один из ключевых разработчиков команды Bitcoin Core, а также сооснователь и тех.директор Blockstream, отвечает на вопросы пользователя MeteoImpact на bitcointalk о размере блока.

MeteoImpact: Спрашиваю из любопытства – вы не могли бы написать ваше мнение о том, при каких условиях было бы целесообразно и / или полезно увеличить лимит размера блока?

gmaxwell: Я был бы рад, и много раз уже делал это в прошлом (в том числе и по поводу более общей темы хардфорка), хотя я и не думаю, что моё мнение много значит. Я надеюсь на это.

MeteoImpact: Какие конкретные вопросы – технические или иные – вы считаете наиболее важными, когда речь заходит о рассмотрении внесения изменений конкретно в этот аспект системы? Конечно, размер блока – это только один из аспектов производительности (и ужасно неэффективный метод масштабирования производительности), но мне интересно есть ли какие-либо особые условия, при которых, по вашему мнению, увеличение размера блока стало бы вполне подходящим решением? Это лишь крайний способ увеличения производительности? И когда речь заходит о производительности, до какойстепени её необходимо увеличивать? Является ли “бесконечная” производительность чем-то, к чему мы должны стремиться?

gmaxwell: Ввиду того, что мы живем в физическом мире, где компьютеры материальны и работают, потребляя электроэнергию – пределы будут. Мы должны сделать систему как можно более эффективной, потому что в физическом мире одной из проблем является то, что есть некоторый присущий ей компромисс между нагрузкой на блокчейн и децентрализацией. (Обратите внимание, нагрузка на блокчейн – не то же самое, что и транзакционная нагрузка, потому что есть множество способов совершения транзакций, которые сократили бы воздействие на блокчейн) … вне зависимости от уровня производительности, на котором мы находимся, увеличение эффективности означает нахождение лучшей позиции в этом компромиссе.

Для меня высокий приоритет – не навредить децентрализации в процессе зарождения системы. Это совершенно неотъемлемая часть ценностного предложения системы, наряду с её прочими свойствами, и каждый случай уступки в пользу централизации, происходящий в течение жизни системы, будет затем использоваться в качестве довода, что следующая уступка не так уж и страшна. Ведь система действительно работает “лучше” – в общепринятом смысле, при типовом использовании – так как она становится более централизованной: обновления быстрее и проще, общая цена ресурсов ниже, поведение более закономерно и последовательно, попытки некоторых видов атак происходят реже, свойства, являющиеся социально “желаемыми”, но не рациональными для участников – не ломаются так часто, и т.д. Также децентрализация играет ключевую роль по отношению к другим элементам – которые мы должны улучшать, чтобы сохранить конкурентоспособность Биткойна в качестве всемирных, открытых и политически нейтральных денег – таким, как взаимозаменяемость.

Но даже если мы представим, что приблизились к бесконечной эффективности, захотим ли мы приблизиться к бесконечной производительности?

Создатель Биткойна предполагал, что в будущем безопасность должна оплачиваться пользователями, торгующимися за цену проведения транзакции. Если бы отсутствовали ограничения производительности, любой отдельно взятый майнер всегда мог бы сделать больше денег путём подрыва рынка и его обнуления (*). Сложность может адаптироваться и снижаться, так что низкий доход от оплаты транзакций может привести к снижению безопасности. Потенциально, этого можно было бы избежать в случае картельного сговора майнеров, но если бы майнеры сговорились ввести цензуру транзакций, то это было бы весьма вредно… И в физическом мире, с не бесконечной эффективностью, уже необходимо избегать ситуации, когда майнеры выводят узлы из сети. Должно ли это работать как статический лимит? Нет, и я считаю, что некоторые из предложеных вариантов flexcap(динамически изменяемый размер блока) вполне перспективны для решения данного вопроса.

Некоторые предлагали, чтобы в будущем безопасность обеспечивалась не посредством рыночных сборов за транзакцию, но при помощи альтруистического сбора пожертвований в пользу майнеров. Предложенные механизмы реализации не имеют особого смысла – например, злоумышленники могут получить столько же, сколько и честные майнеры, но это может быть поправимо… модель, где оплата за выгоды строится на альтруизме, имеет существенные ограничения, особенно в глобальной анонимной сети. До сих пор проявления такого рода альтруизма не привели к успеху в финансировании разработки или помощи с сохранением децентрализации майнинга (например, p2pool). Сейчас я не вижу оснований полагать, что это может стать работоспособной альтернативой изначальной идее использования комиссионных сборов… Конечно, если перейти от альтруизма к обязательному налогу, вы в конечном итоге придёте к инфляционной модели некоторых альткойнов – и вероятно, это даже “работает”, но это не та экономическая политика, которой мы придерживаемся (и в частности, без надежного внешнего входа для контроля уровня инфляции – не ясно, будет ли это действительно работать для кого бы то ни было вообще).

Таким образом, в долгосрочной перспективе, я озабочен стремлением избегать дрейфа системы к состоянию, в котором мы все вынуждены будем выбирать между инфляцией и провалом (в таком случае, работающий Биткойн будет лучше чем неработающий…).

Отвечая на вопрос “когда”, я думаю, мы должны быть предельно осторожны в том, что касается несовместимых изменений в общем и целом. Если это на самом деле безопасно и необходимо, можно ожидать увидеть широкую поддержку… Всё становится гораздо легче, когда мы предпринимаем усилия по устранению рисков, например, продвинуть SegWit было значительно легче, поскольку он улучшает масштабируемость и одновременно увеличивает производительность. Кроме того, я ожидаю, что в будущем успех будет расти по мере внедрения других решений, направленных на смягчение рисков.

(*) Можно игнорировать эффект брошенных (отцепленных) блоков в силу четырёх причин: рост брошенности, как функция от транзакционной нагрузки, может быть полностью устранён улучшением технологии передачи, а если нет, то централизацией майнинга… и если бы майнеры отвечали доходом за потери на брошенных блоках, не было бы никаких избыточных платежей за безопасность через конкуренцию. И, наконец, если платежи за транзакции по большей части равномерны, единственным сдерживающим фактором проблемы брошенности является потеря вознаграждения, что быстро станет несущественным, пока Биткойн не инфляционен.

Meteoimpact: Как я понимаю, реализация SegWit от Core в общем и целом также будет включать увеличение “размера блока” (как прирост места в SegWit в плюс к текущему размеру блока), хотя и с некоторыми улучшениями масштабируемости, которые должны снизить требования к системе для этого увеличения (приходят на ум линейное масштабирование проверки с SegWit и Compactblocks). Лично вы поддерживаете этот конкретный случай увеличения общего “размера блока”?

Я считаю, что увеличение пропускной способности рискованно. Эти риски компенсируются улучшениями (и теми, которые были недавно сделаны, и выходящими в данный момент, такими как libsecp256k1, compactblocks, увеличением в десятки раз скорости валидации, более умной ретрансляцией блоков, улучшением поддержки отсечения) наряду с таковыми же в SegWit.

Меня очень беспокоит существование широко распространенного заблуждения, что тот факт, что блоки “полны” это плохо – доступ к блоку выстраивается как очередь приоритетов, основывающихся на платеже за транзакцию – и при оплате около нуля спрос стремится к бесконечности (для сильно реплицированного вечного хранилища). Я считаю, что (отсутствующая радикальная новая технология, которой у нас пока нет) система не имеет шансов на выживание в качестве полезной децентрализованной системы, если ответом на “заполнение” будет постоянное увеличение емкости (например, если в системе почти не будет узлов, а также гипотетически не будет возможности платить за безопасность). Одна из самых больших проблем, возникшая с предложениями хардфорков, в том, что они непосредственным образом поощряли этот путь к поражению, и я волнуюсь, что увеличение емкости блока SegWit может способствовать тому же самому… То есть мы какое-то время не будем “заполнены”, а затем на нас выльется масса срежиссированного давления по типу “Срочно! Дайте аварийную посадку!” с целью очередного увеличения размера блока, чтобы предотвратить “заполнение”, чего бы это не стоило. То есть неизменный цикл кратковременной паники в искусственном состоянии, отклоняющий систему от долгосрочного выживания.

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

Meteoimpact: Чтобы внести ясность: я спрашиваю, как кто-то, кто хотел бы услышать ваше обоснованное мнение. В краткосрочной перспективе я совершенно точно не беспокоюсь о способности сети проводить транзакции – конечно, я не обеспокоен хардфорком – при том, что SegWit готовится к выходу, и принимая во внимание потенциал сети Lightning, или аналогичных способов расширения пропускной способности сети – краткосрочные проблемы вполне могут быть решены (на самом деле все, чего я хочу в краткосроке, так это простого способа запросить и использовать возможность увеличения платежа за транзакцию, чтобы была возможность исправить платёж за транзакцию в случае неожиданных скачков их объема). Что мне гораздо более любопытно на данный момент, так это ваше отношение к тому, как это будет выглядеть в долгосрочной перспективе – на стадии “неизбежных 133-мегабайтных транзакций“.

Я думаю, сейчас достаточно трудно предугадать как повлияют паттерны использования сети Lightning, так что трудно оценить прирост производительности с какой-либо достоверной точностью. На данный момент двунаправленные каналы – единственный известный способ достижения действительно высокой производительности без необходимости применять драконовские меры (к которым, я думаю, всё равно придётся прибегать в будущем Биткойна).

Некоторые ранние оценки ресурсоёмкости Lighnting уже потенциально устарели в связи с новыми изобретениями. Например, в спецификации Lightning первоначально была предусмотрена возможность большого размера блока в пике, чтобы его было достаточно для всех транзакций в мире (хотя такие блоки могут оказаться «дорогостоящими» для майнеров, как в системе flexcap) для покрытия граничного случая, когда огромное количество каналов захотели бы одновременно закрыться, и все должны были бы получить закрытие до истечения тайм-аута. В ответ на это я предложил концепцию последовательной блокировки, которая приостанавливает процесс, когда сеть переполняется (“timestop”). Это должно в значительной степени удовлетворить потребность в больших блоках ценой потенциальных задержек закрытия, когда сеть обычно загружена. Впрочем, необходима дальнейшая проработка и анализ. Я думаю, мы только начали исследовать возможности дизайна пространства с каналами.

Кроме эффективности, платежные каналы (и другие инструменты) предоставляют новые возможности, которые будут иметь важное значение для расширения области применения нашей валюты – в частности “моментальные платежи”.

Такие сервисы как кредитование очень распространены и высоко востребованы некоторыми рынками, хотя персонально я и не любитель – и это тот сервис, который также может быть предложен другими слоями.

Мне жаль, что такая полезная в использовании опция, как изменение комиссии в транзакции (fee-bump replacement,replace-by-fee) не успела войти в Bitcoin Core 0.13. Я полностью уверен, что она войдёт в 0.14. Думаю, в кошелькеGreenAddress эта опция уже реализована (хотя я сам и не пробовал). В 0.13 появится майнинг с оплатой транзакции предшественнику (ancestor feerate mining – “ребёнок платит за родителя”), это еще один механизм, который должен помочь расклинить проблему низкой оплаты за транзакции, хотя и не столь полезный, как изменение платежей за транзакцию.

Meteoimpact: Конечно, вы можете держать свое мнение при себе или ответить только на те вопросы, на которые для вас приемлемо обнародовать информацию. Я вовсе не намереваюсь побудить вас сказать что-нибудь, что станет причиной излияния на вас нового потока грязи, что в последнее время уже происходит?

Ха, это неизбежно.  Я просто делаю что могу, и пытаюсь напоминать себе, что если сумасшедших вообще не останется, тогда то, что я делаю, вероятно, не имеет значения.

источник информации: bitnovosti.com