Отчёт о размере блоков

4 февраля 2025 г.
Cover
Аналитический отчёт, основанный на данных, который показывает, как рост размера блока был частично ограничен политикой майнеров и настройками по умолчанию в Bitcoin Core.
Отчёт подготовлен @orangesurfbtc для mempool research. Данные получены с использованием Mempool Enterprise. Перевод Tony⚡️
Рады приветствовать вас на страницах свежего исследовательского отчёта Mempool Space. В этом отчёте мы рассмотрим, как со временем менялся размер и заполняемость биткоин-блоков. Мы изучим влияние обновления SegWit на размер блока и оценим, как будет развиваться блокчейн Биткоина в ближайшие годы.

Резюме #

Этот отчёт рассматривает эволюцию размера блока в сети Биткоин с момента создания сети до февраля 2025 года. Наш анализ показывает, что распространённое мнение о том, что рост размера блока ограничен исключительно консенсусным лимитом в 1 МБ, является неполным. Напротив, настройки, выставленные по умолчанию в Bitcoin Core и параметры, выбираемые майнерами, сыграли значительную роль в ограничении размера блоков, часто удерживая их ниже уровня спроса на транзакции.
Далее мы анализируем, как изменился размер блоков после SegWit, а также как с января 2023 года по февраль 2025 года наблюдалась высокая загруженность блочного пространства. Это было вызвано постоянной перегруженностью мемпула и появлением Inscriptions, что привело к заметному увеличению темпов роста блокчейна.
Мы также представляем новый воспроизводимый метод выявления перегруженности мемпула и событий его очистки, а также прогнозируем, как изменится размер блокчейна в ближайшие годы.

Введение в размер блока Биткоина #

В блок Биткоина входит его заголовок и включённые в него транзакции.
Заголовок блока имеет фиксированный размер 80 байт и включает в себя следующие поля:
Поле
Размер (байты)
Описание
Версия
4
Номер версии блока.
Предыдущий блок
32
Хеш предыдущего блока.
Корень Меркла
32
Уникальный идентификатор всех транзакций, включенных в блок.
Время
4
Текущее время в формате Unix timestamp.
Bits
4
Компактное представление текущей целевой сложности.
Nonce
4
Количество транзакций в компактном формате. Число включённых в блок транзакций.
Пример #
Заголовок блока 210 000, ознаменовавшего первое уменьшение награды за майнинг (халвинг), выглядит следующим образом в шестнадцатеричном виде:
00000002 000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e 982051d8 f2b9441a 42a14695
Разберём его по частям:
  1. Версия (4 байта): 00000002
  1. Хэш предыдущего блока (32 байта): 000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e
  1. Корень дерева Меркла (32 байта): 982051d8
  1. Временнáя метка (4 байта): f2b9441a
  1. Биты, указывающие целевую сложность (4 байта) 42a14695
  1. Нонс (4 байта) 42a14695

Количество транзакций: поле, отображающее количество транзакций в блоке, варьируется по размеру: один байт используется для хранения до 252 транзакций, трёх байт достаточно для хранения до 65 535 транзакций.
Наибольшее количество транзакций за всю историю было в блоке
Размер набора транзакций: размер каждой транзакции зависит от множества факторов, включая количество входов и выходов, используемый тип скрипта, locktime транзакции и любые данные свидетеля (об этом позже).
Типичная транзакция, как правило, занимает не меньше 226 байт (см. калькулятор размера транзакции), что означает, что набор транзакций обычно занимает намного больше места в блоке, чем другие данные.
ЭЛЕМЕНТ
РАЗМЕР (БАЙТЫ)
Заголовок блока
80
Количество транзакций
1-3
Размер набора транзакций
Варьируется
Любое ограничение размера блока влияет на размер и количество транзакций, которые майнеры могут включить в блоки.

Консенсусные ограничения #

История консенсусного ограничения размера биткоин-блоков довольно прямолинейна.
  • В первой версии (0.1.0) существовало фактическое ограничение в 32 МБ из-за лимита на размер сетевых сообщений, но явного ограничения на размер блока не было.
  • В июле 2010 года Сатоши без публичного обсуждения добавилжёсткое ограничение в 1 МБ.
  • Ограничение в 1 МБ оставалось в силе до активации софтфорка SegWitв августе 2017 года, когда ограничение размера блока в 1 МБ было заменено на ограничение “по весу” в 4 мега единицы веса (MWU).
ВЕРСИЯ
ВЫСОТА БЛОКА
ДАТА
ЛИМИТ ПРОСТРАНСТВА БЛОКА
0.1.0
Генезис
3 января 2009
Лимит сетевого сообщения 32 МБ
0.3.2
Примерно 68 951
19 июля 2010
Добавлено жёсткое ограничение 1 МБ
-
481 824
24 августа 2017
Лимит веса блока 4 MWU
Вес блока рассчитывается путём масштабирования размера транзакций (в байтах).
  • Данные свидетеля (подписи) учитываются как 1 единица веса за байт.
  • Остальные данные транзакции учитываются как 4 единицы веса за байт.
Это увеличило максимальный размер блока до 4 MWU (подробнее об увеличении размера блока читайте здесь).

Историческая эволюция размера блока #

Общепринятое мнение заключается в том, что (до SegWit) средний размер блока увеличивался по мере роста числа пользователей и количества транзакций до тех пор, пока не достиг жёсткого ограничения в 1 МБ, после чего блоки не могли становиться больше.
Если построить медианный размер блока за 5000 блоков, можно увидеть, что в целом это так.
notion image
Медианный размер блока увеличивался до блока 400 000, когда был достигнут консенсусный лимит 1 МБ — примерно за 1,5 года до активации SegWit в блоке 481 824. После введения SegWit размер блоков постепенно увеличивался, хотя сначала наблюдалось временное снижение.
Анализ скользящего максимального размера блока показывает, что блоки начали достигать предела в 1 МБ задолго до блока 400 000. Впервые это произошло в блоке 228 538 — за 4,5 года до активации SegWit. Кроме того, значительное увеличение максимального размера блока произошло около блока 770 000 (это будет рассмотрено далее).
notion image
Скользящий максимум размера блока до и после SegWit
notion image
Размер первого блока, достигшего лимита размера, равнялся 0,998 МБ.
Разбив данные на четрые категории (квартиль) и проанализировав их по отдельности, мы заметили существенные колебания размеров блоков, которые постепенно сокращались до момента активации SegWit, после чего вариация размеров снова резко возросла.
notion image
ПОКАЗАТЕЛЬ
ДОСТИЖЕНИЕ ЛИМИТА 1МБ
ВЫСОТА БЛОКА
ВРЕМЯ ДО SEGWIT
Любой блок
Да
За 4,5 года до SegWit
Скользящий максимум
Да
~310 000
За 3 года до SegWit
Верхний квартиль
Да
~400 000
За 18 месяцев до SegWit
Медианный размер
Да
~410 000
За 16 месяцев до SegWit
Среднее значение размера блока не достигло лимита в 1 МБ из-за наличия пустых блоков, о которых можно подробнее прочитать в “Отчёте о пустых блоках в Биткоине”:
notion image

Вариации размера блоков #

Почему размер блоков варьируется в таком широком диапазоне?
Хотя спрос на транзакции сыграл свою роль – блоки заполнялись в зависимости от количества ожидающих транзакций – более детальный анализ выявляет дополнительные факторы.
notion image
Визуализация данных показывает заметные горизонтальные паттерны в размерах блоков (синим), указывая на повторяющиеся размеры на разных высотах. Такие чёткие закономерности маловероятны, если единственным ограничением был спрос на транзакции.
notion image
Гистограмма размеров блоков до SegWit (блоки с 0 по 481 824)
Анализ гистограммы показывает чётко выраженные пики частоты появления определённых размеров блоков. Статистический анализ этих пиков (определённых по сравнению с соседними интервалами) показывает, что майнеры целились в определённые размеры50, 100, 150, 250, 350, 500, 750 и 935 КБ (с погрешностью до 5 КБ). Эти повторяющиеся значения свидетельствуют о сознательном выборе майнеров, а не просто о рыночном спросе.
notion image
Интервалы, подпадающие в обозначенные контейнеры.
КАТЕГОРИЯ РАЗМЕРА
КОЛИЧЕСТВО БЛОКОВ
% ОТ ПРЕДSEGWIT-БЛОКОВ
50 КБ
11 255
2.34%
100 КБ
4 438
0.92%
150 КБ
3 920
0.81%
250 КБ
14 079
2.92%
350 КБ
4 472
0.93%
500 КБ
2 135
0.44%
750 КБ
8 483
1.76%
935 КБ
3 811
0.79%
Всего выделено
52 593
10.92%
Всего 52 593 блока (~10.92% от всех блоков до SegWit) попадают в эти категории, что может указывать на ограничения, установленные правилами майнеров. Однако некоторые из них могли случайно попасть в эти диапазоны, поэтому это скорее верхняя граница количества блоков, ограниченных правилами политики майнеров.
Для более точной оценки можно отсортировать данные, предположив, что в каждом из выделенных интервалов ожидаемое число блоков соответствует среднему значению соседних интервалов. Таким образом избыточное количество блоков в каждом интервале даёт более точную оценку степени искусственного ограничения.
notion image
РАЗМЕР
ИЗБЫТОЧНЫЕ БЛОКИ
% ОТ БЛОКОВ ДО SEGWIT
50 КБ
6 215
1.29%
100 КБ
1 656
0.34%
150 КБ
1 609
0.33%
250 КБ
12 520
2.60%
350 КБ
3 715
0.77%
500 КБ
1 691
0.35%
750 КБ
8 225
1.71%
935 КБ
3 169
0.66%
Всего
38 800
8.05%
Таким образом, около 8% блоков до SegWit, вероятно, были ограничены правилами политики майнеров.
Почему майнеры ограничивали размер блоков ниже консенсусного лимита?
Эти округлённые значения указывают на выбор параметров вручную, но зачем майнерам искусственно ограничивать размер блоков?
Ответ кроется в настройках по умолчанию в Bitcoin Core, которые многие майнеры, вероятно, не изменяли или устанавливали на удобные круглые значения.

Майнинг-настройки по умолчанию #

За всю историю существования Биткоина параметры, влияющие на размер блоков, создаваемых Bitcoin Core по умолчанию, менялись не раз.
ОГРАНИЧЕНИЕ РАЗМЕРА БЛОКА
MASTER
РЕЛИЗ
Установлен мягкий лимит 250 КБ 1
23 сентября 2010 (81372)
1 октября 2010 (82997) v0.3.13
Добавлен параметр -blockmaxsize
26 июля 2012 (186236)
17 сентября 2012 (199120) v0.7.0
Мягкий лимит увеличендо 350 КБ
5 декабря 2013 (273102)
9 декабря 2013 (273872) v0.8.6
Мягкий лимит увеличендо 750 КБ
13 декабря 2013 (274567)
18 марта 2014 (291083) v0.9.0
Анализ зависимости высоты блока от общего количества блоков указывает на несколько переходов в поведении майнеров:
  1. Лимит 250 КБ в v0.3.13 мало повлиял на сеть из-за низкого количества транзакций.
  1. Введение параметра blockmaxsize привело к появлению настраиваемых ограничений 100 КБ, 150 КБ, но многие майнеры продолжали использовать значение 250 КБ, установелнное по умолчанию.
  1. В v0.8.6 лимит увеличен до 350 КБ, что вызвало немедленное использование максимально возможных значений. Некоторые майнеры вручную установили 500 КБ.
  1. В v0.9.0 лимит увеличен до 750 КБ, что привело к задержке, но со временем распространилось.
notion image
Внедрение изменений в код Bitcoin Core на карте кумулятивного анализа объёма блоков
Решение майнеров обновлять Bitcoin Core или изменять настройки blockmaxsize привело к появлению характерных ступенчатых значений размера блоков, ограничивающих их рост.
Длительное сохранение этих уровней говорит о том, что некоторые майнеры/пулы не обновляли конфигурации в течение длительного времени.
Из исторических обсуждений известно, что пользователи призывалимайнеров обновлять свои узлы и изменять значения по умолчанию.
Возможно, некоторые майнеры намеренно поддерживали ограничения:
  • Из-за опасений появления блоков-сирот из-за увеличенного времени распространения (изначально эту проблему озвучивал один из операторов пула).
  • Для сокращения того, что они считают спам-транзакциями, например, транзакции, связанные с сайтом Satoshi Dice.
Но также вероятно, что многие майнеры просто продолжали работать со старыми настройками по умолчанию, не осознавая их влияния.
notion image
Правила майнеров ограничивают рост размера блока. Пример множества блоков, по умолчанию ограниченных размером в 250KB.
На графиках можно увидеть множество блоков, ограниченных стандартным лимитом 250 КБ. Однако майнеры могли самостоятельно компилировать собственную версию Bitcoin Core, чтобы задать другой предел, даже до введения -blockmaxsize.
Так, вероятно, поступил майнер блока 134,334, так как этот блок превысил 250 КБ, несмотря на установленный в блоке 81 372 мягкий лимит.
notion image

Переход на SegWit (2017–2022) #

После активации SegWit эволюция размера блоков проходила в два этапа. Сначала максимальный размер блоков увеличился до 2–2,5 МБ. Затем, начиная с блока 770 000, он резко возрос почти до 4 МБ, что привело к росту всех метрик (среднего и медианного значений, а также квартилей).
notion image
Ускорение роста цепочки:
  • До блока 770 000 (от SegWit до 770 000): средний размер блока — 1,11 МБ
  • C блока 770 000 по настоящее время: средний размер блока — 1,69 МБ (+52%)
Блок 770 000 стал ключевой точкой перехода, что было вызвано двумя факторами:
  1. Постоянно загруженный мемпул (пул неподтвержденных транзакций)
  1. Появление Insсriptions (произвольных записей в блоках)

Перегруженность мемпула #

Данные mempool.space указывают, что с января 2023 года (блок 770 000) по февраль 2025 года (блок 881 851) наблюдалась устойчивая перегруженность мемпула.
notion image
С января 2023 по февраль 2025 наблюдалась значительная загруженность мемпула.
Хотя данные мемпула невозможно восстановить, загрузка пространства блоков может использоваться для оценки обстановки с транзакциями. Этот показатель измеряет долю использованного пространства блока:
  • До SegWit: размер блока / 1 МБ
  • После SegWit: вес блока / 4MWU
Когда мемпул перегружен, майнеры стараются максимизировать прибыль и заполняют блоки под завязку.
До блока 770 000 загрузка колебалась, но затем стабильно держалась на 100% до блока 881 851 (январь 2023 — февраль 2025), что указывает на постоянную загруженность мемпула.
notion image
В истории Биткоина наблюдалось несколько периодов, когда пространство в блоке использовалось на 100%.
К “незаполненным блокам” мы относим те, которые используют менее 75% доступного пространства. Последовательные незаполненные блоки указывают на недостаток транзакций и очистку мемпула.
notion image
Данные аудита блоков помогают исключить ложные срабатывания:
  • Последнее длительное очищение мемпула с 3 последовательными незаполненными блоками произошло на блоке 881 851 (01.02.2025).
  • Последнее крупное очищение с 6+ незаполненными блоками — блок 775 147 (05.02.2023).
Важно отметить, что исключены блоки, ограниченные лимитом
SigOps

Неиспользованное место в блоках #

С генезис-блока Биткоина до активации SegWit, то есть в течение 481 824 блоков, неиспользованное пространство блоков составило примерно 350 ГБ или 0,726 МБ/блок в среднем.
После активации SegWit – в течение 400 042 блоков – неиспользованный вес блоков составил 190 GWU, что эквивалентно 0,475 MvB/блок в среднем.
Кроме того, с момента последнего продолжительного очищения мемпула (события, когда у более чем 6 блоков подряд оставался запас в 1 MWU свободного места) блоки стабильно достигали или почти достигали предела веса вплоть до недавнего очищения мемпула.
notion image
notion image
notion image
Анализ показывает, что большинство блоков после 800 000 имели менее 200 000 WU свободного веса, а большинство остальных блоков были пустыми:
Вес блока (WU)
Количество блоков
Доля (%)
3 800 000 – 4 000 000
81 566
99,63%
200 000 – 3 800 000
49
0,06%
0 – 200 000
252
0,31%
Неясно, будет ли это очищение мемпула (февраль 2025 года) кратковременным или затяжным. Однако стоит помнить, что неиспользованное пространство в блоках теряется навсегда. Используйте дешёвое пространство, пока есть такая возможность!
notion image

Inscriptions #

Хотя с блока 775 147 блоки стабильно заполнялись, именно Inscriptions(произвольные записи в блоках) привели к беспрецедентному росту их максимального размера.
Первое появление записей было зафиксировано в блоке 767 430. Они позволяют сохранять произвольные данные в полях транзакций свидетеля.
Анализ почти полностью заполненных блоков (менее 5% свободного веса) показывает:
  • Средний размер блока вырос с 1,5 МБ до 2,1–1,5 МБ
  • Однако текущий средний размер (1,75 МБ) значительно нижемаксимальных значений до Inscriptions (~2,4 МБ)
Софт форк
на блоке 709 632

Прогнозы #

Рост размера цепочки обусловлен сочетанием двух факторов:
  1. Постоянная переполненность мемпула
  1. Использование Inscriptions
Прогнозируем три возможных сценария роста. Каждые 200 000 блоковсоответствуют примерно 3,8 года, что позволяет делать прогнозы до 2040 года (при среднем времени блока в 10 минут).
notion image
Три сценария роста:
  1. Массовое и устойчивое использование InscriptionsРост: 4 МБ/блок
  • 1 ТБ → сентябрь 2026
  • 2 ТБ → середина 2031
  1. Средний сценарийРост: 2,75 МБ/блок.
  • 1 ТБ → середина 2027
  • 2 ТБ → середина 2034
  1. Возвращение к уровню до Inscriptions и до переполнения мемпулаРост: 1,5 МБ/блок
  • 1 ТБ → август 2029
  • 2 ТБ → апрель 2042
Размер блока
1 ТБ
2 ТБ
3 ТБ
1,5 МБ
2029-08 (1 125 306)
2042-04 (1 791 973)
2054-12 (2 458 639)
2,75 МБ
2027-07 (1 014 651)
2034-06 (1 378 288)
2041-05 (1 741 924)
4,0 МБ
2026-09 (973 156)
2031-06 (1 223 156)
2036-03 (1 473 156)

Выводы #

Наш анализ эволюции размера биткоин-блоков с момента запуска сети до начала 2025 года показывает, что повествование о размере блока, ограниченного исключительно пределом консенсуса, является неполным. Жёсткий предельный размер в 1 МБ и 4 MWU после SegWit несомненно обеспечил технический предел. Тем не менее, на эволюцию процесса заполнения биткоин-блоков повлияло поведение майнеров, в значительной степени вызванное настройками, заданными по умолчанию в Bitcoin Core. Регулярно повторяющиеся уровни размеров блоков на ранних стадиях развития Биткоина указывают на то, что многие майнеры прибегали к “круглым” лимитам, которые были значительно ниже теоретического максимума. Это непосредственно влияло на доступность свободного места в блоках и возможность проводить транзакции.
Внедрение SegWit привело к постепенному увеличению среднего веса блока, однако с января 2023 года совокупное воздействие переполненного мемпула и появления inscriptions привело к беспрецедентному использованию блочного пространства. Эта эволюция не только толкнула эффективный размер блока выше, но также ускорила рост блокчейна, с взлётом среднего размера блока с 1,11 MB до 1,69 MB.
Мы проливаем свет на перспективу через анализ ряда потенциальных сценариев роста блокчейна Биткоина, начиная с возврата к динамике, предшествующей появлению Inscriptions (снижающийся рост) и заканчивая повсеместным принятием Inscriptions (потенциально приводящим к росту веса блока до 4 МБ). Согласно этим сценариям, блокчейн может достичь 1 ТБ уже в конце 2026 года, хотя середина 2027-2029 кажется более вероятной.

  1. Политика майнинга технически ограничивала блоки 500 КБ (MAX_BLOCK_SIZE_GEN). В коде использовалось гиперболическое масштабирование комиссий, начинающееся с 250 КБ (MAX_BLOCK_SIZE_GEN/2), из-за чего комиссии резко увеличивались по мере приближения к 500 КБ. Это создавало сильное экономическое давление, удерживавшее блоки ниже 250 КБ, фактически делая эту отметку практическим лимитом размера. ↩︎