Размер блока 1 МБ как мера защиты от DoS-атак

Википедия объясняет причину ограничения размера блока в 1 МБ следующим образом:

Ограничение на размер блока в один мегабайт было добавлено в 2010 году Сатоши Накамото в качестве временной меры против DoS.

Сообщение SE разъясняет это:

Обычно атака типа «отказ в обслуживании» (DoS) может происходить на блоках большего размера. Поэтому, чтобы избежать этого условия, изначально размер блока Биткойн был выбран равным 1 МБ. Потому что злоумышленник отправляет много данных в сеть, чтобы сделать ее занятой, чтобы фактические транзакции не могли выполняться.

Чего я не понимаю:

1) Что останавливает злоумышленника от отправки нелегитимных транзакций для быстрого заполнения блока размером 1 Мб для выполнения DoS-атаки? Что такого в большем размере блока, что делает эту атаку более вероятной?

2) Есть ли способ эмпирически продемонстрировать, что блок размером 1 МБ менее подвержен DoS-атаке по сравнению с блоком размером, скажем, 1 ГБ?

Учитывая, что размер блока является одним из самых больших узких мест в масштабируемости BTC, кажется очевидным, что что-то подобное должно быть доказано. Блок размером 1 ГБ сможет обрабатывать в 1000 раз больше транзакций в секунду по сравнению с размером блока 1 МБ.

Спасибо

Вы неправильно понимаете: речь идет о проблемах DoS при проверке узлов, которым необходимо обрабатывать все транзакции во всех блоках, не отставать от сети и способности узлов проверять историю. Речь идет не о способности создателей транзакций принимать свои транзакции; это просто свободный рынок, на котором каждый может участвовать в торгах за доступное пространство — с этой точки зрения незаконных транзакций не бывает.
Вопрос ссылается на страницу Википедии BU. Это не имеет ничего общего с биткойнами. Любой дилетант или мошенник может взять источник биткойнов и провозгласить свою собственную монету, включая ревизионистскую историю.

Ответы (2)

DoS, который пытается предотвратить ограничение размера блока, заключается в том, что майнер создает огромный блок данных мусора, который теперь каждый биткойн-майнер должен загружать, проверять и хранить целиком. Представьте, если бы какой-то майнер решил создавать блок за блоком из 1 ГБ мусора, и теперь каждый биткойн-узел в мире должен хранить и проверять весь этот мусор. Если бы это было возможно, это было бы в интересах более крупных майнеров: более мелкие майнеры, у которых нет возможности загружать и проверять эти гигантские блоки мусора столь же эффективно, не смогут идти в ногу с майнингом.

Кроме того, люди пытаются отправлять спам в блокчейн. Попытка сделать это до уровня блокировки законных транзакций будет довольно дорогой, учитывая, что вам придется платить транзакционные сборы за каждую «спамовую» транзакцию, которую вы хотите отправить.

@ ieatpizza спасибо за ответ. Если бы вы могли уточнить 1) Если блок окажется «мусором» (под этим вы подразумеваете, что он будет содержать недействительные транзакции или просто отсутствующий/поддельный хеш?), майнер не получит вознаграждение, так что не уменьшит ли это его стимул к Сделай так? 2) что мешает майнеру многократно производить мусорные блоки по 1 Мб? Да, скачивать/обрабатывать проще/быстрее, но что мешает майнеру производить тысячи нелегитимных блоков? 3) Что здесь является основным узким местом - пропускная способность, обработка (ЦП) или хранилище (жесткий диск)?
@SOS 1) Под мусорными данными в блоках я подразумеваю, что некоторые майнеры добывают действительный блок, но включают спам-транзакции (например, транзакции, которые включают большое количество ненужных данных). Они по-прежнему получают вознаграждение за блок, поскольку это все еще действительный блок, они просто упускают комиссию за транзакцию от законных транзакций. 2) Потому что маржа прибыли уже настолько низка, и при этом они теряют комиссию, которая составляет большую часть их прибыли. Если они не получат эту прибыль, это сделает другой майнер. 3) Все 3, хотя я ожидаю, что пропускная способность и хранилище будут самыми дорогими.
Спасибо за разъяснения. С чисто технической точки зрения, нельзя ли определить, когда майнер включает «спамовые» данные (или «мусорные данные», как вы это называете), и заставить узлы отклонить такие блоки (чтобы лишить майнеров возможности делать это? этот)?
@SOS Нет. Мы могли бы запретить людям включать определенные типы выходов, которые нельзя потратить (например, людям, которые включают произвольные данные, используя OP_RETURNвыходы), но майнер также может просто включать транзакции, которые отправляют биткойны себе, чтобы заполнить блок в этом случае. На техническом уровне это выглядит как обычная транзакция, но, надеюсь, вы согласитесь, что это спам.
Хорошая вещь на рынке, который конкурирует за блочное пространство, заключается в том, что никому не нужно определять, что является спамом, а что нет (что крайне нежелательно... как предотвратить злоупотребление такой системой для целенаправленной цензуры?) .
@ieatpizza Если мы установим минимальную комиссию и сожжем комиссию за транзакцию, не помешает ли это майнерам включать транзакции, которые отправляют биткойны самим себе? Существуют ли другие способы, с помощью которых майнер может перегрузить сеть спамом/мусорными данными?
@DavidLynch У этого будет свой собственный набор проблем (как вы мотивируете майнеров продолжать добычу, когда вознаграждение за блок больше не достаточно для покрытия затрат? как биткойн, который сейчас сжигается каждый раз, будет пополняться, если мы продолжим изымать их из обращения?и т. д.) Это не устойчивый вариант.
@ieatpizza очевидное решение обеих заявленных проблем — продолжать давать майнерам вознаграждение за блок. Подумайте об этом: прямо сейчас средний майнер получает ок. 4% от их общего вознаграждения от комиссий за транзакции — это совершенно незначительная часть вознаграждения. Когда вознаграждение падает до нуля, это означает, что 96% сети должны прекратить майнинг, чтобы 4% могли выйти в безубыток. Так что на 96% менее безопасно, когда это происходит. Альтернативой является увеличение комиссии за транзакцию на 2500%, когда она уже считается очень высокой для большинства мелких и средних транзакций. Представьте, что вы платите 125 долларов за отправку BTC вместо 5 долларов.
@DavidLynch Предлагаемое вами решение состоит в том, чтобы убрать одно из основных преимуществ BTC. То, как он настроен прямо сейчас, предназначено для ограничения инфляции BTC, и маловероятно, что большинство пользователей BTC, многие из которых рассматривают BTC как актив для защиты от произвольной инфляции, согласятся с форком, который позволил бы такую ​​экстремальную инфляцию. инфляция. Это разрушило бы ценность всех существующих монет. Что касается будущих, более устойчивых альтернатив майнингу с доказательством работы, я предпочитаю в конечном итоге перейти на алгоритм доказательства доли, но это спорно. Но, это, наверное, тема для другого вопроса. :)
@ieatpizza Кажется, что идея использования биткойнов в качестве формы оплаты находится в прямом противоречии с идеей использования биткойнов в качестве средства сбережения. Нам нужно решить, какой вариант использования важнее. Если биткойн используется в основном как форма платежа (а не как долгосрочное средство сбережения), инфляция не должна быть большой проблемой. Также можно было бы установить комиссию майнера на среднюю скорость сжигания транзакций за последние две недели. (точно так же, как мы динамически корректируем сложность хеширования на основе общей мощности хеширования сети), но, возможно, это должно стать предметом нового вопроса?
Но почему? Нет необходимости, чтобы все эти транзакции происходили в сети. Lightning Network существует и будет улучшаться. Проблемы, которые вы описываете, уже имеют решения.

Это не касается вашего основного вопроса, а является ответом на некоторые неправильные предположения в вопросе:

  1. Размер блока биткойнов не 1 МБ: каков предел размера блока после SegWit и как устаревшие узлы справляются с транзакциями SegWit?

Размер блока

  1. Основная проблема с простыми подходами к увеличению размера блока Биткойн заключается в том, что для определенных транзакций хеширование подписи масштабируется квадратично, а не линейно.

https://bitcoincore.org/en/2016/01/26/segwit-преимущества/

  1. Увеличение размера блока каждые несколько месяцев или увеличение его более чем в 1000 раз, скорее всего, приведет к неожиданному/быстрому увеличению размера блока, стоимости запуска полных узлов и другим проблемам, что снизит децентрализацию.

блочная децентрализация

  1. 1 биткойн-транзакция может быть совершена для более чем 1 реального платежа, поэтому транзакции в секунду по сравнению с несколькими другими системами, на мой взгляд, являются неправильной метрикой и объясняются здесь: https://bitcoin.stackexchange.com/a/100829/

  2. Масштабирование Биткойн работает послойно: https://bitcoinkpis.com/layer2 , и это не означает, что разработка в сети остановилась или не будет сосредоточена на масштабировании. Пример:

По сравнению с подписями ECDSA подписи Шнорра короче на 6–9 байт. Эта экономия связана с удалением издержек кодирования и флагом SigHash по умолчанию. При использовании подписи Шнорра на 20% и при условии, что все 800 000 входных данных, потраченных в день, содержат только одну подпись, в день сохраняется более 1 МБ пространства в блокчейне.

https://web.archive.org/web/20201214095704/https://www.advancingbitcoin.com/blog/evolution-signature-size-bitcoin/

@_Prayank Относительно пункта 4: увеличение количества выходов в одной транзакции также увеличивает размер, но не так сильно, как отправка в двух отдельных транзакциях (примерно 1/5 данных). Я прав?. Что касается пункта 5: экономия в 20% не так уж велика по сравнению с требованиями масштабирования, если бы Биткойн адаптировался к мейнстриму.
4. В этом ответе я упомянул один пример с 5 выходами: bitcoin.stackexchange.com/a/101629 5. 20% здесь 20% там составляют масштабирование уровня 1 децентрализованной одноранговой сети. Основной поток не должен делать все на уровне 1.
Таким образом, вы получаете примерно 5-кратное увеличение транзакций по 2-кратной цене = увеличение пропускной способности на 250%.
@SOS Никакая простая оптимизация не будет иметь существенного значения в отношении того, для каких приложений подходят расчеты по цепочке. Конечно, мы можем получить небольшие улучшения в масштабе с постоянным коэффициентом, но в конечном счете для одних видов деятельности будет место, а для других нет (или будут только до тех пор, пока они не станут популярными), и сеть должна с этим справиться. с этим. Система глобального консенсуса, в которой каждый должен наблюдать за тем, что каждый делает, просто не подходит для небольших платежей, но она отлично подходит для проверяемого расчета верхних уровней, которые могут иметь гораздо большую пропускную способность.
@SOS Что касается вашего ответа на пункт 5, при обсуждении требований к масштабированию, в большинстве серьезных предложений транзакции осуществляются вне сети (например, в Lightning Network) и просто устанавливаются в блокчейне. Хотя внедрение подписей Шнорра поможет, основной целью увеличения пропускной способности транзакций является внедрение более удобных автономных решений.