Блокчейн/Уровень III · Сеть/3.2 Майнинг/Урок 6
Устаревшие (stale) блоки и распространение
Гонка за вершину цепочки и почему побеждает самый быстрый блок
МатериалыДоступ к mempool.space или аналогичному блок-эксплореруБлокнот или таблица
Любопытство
- Почему действительный блок иногда отбрасывается?
- Как сетевые задержки дают крупным майнинговым операциям преимущество перед мелкими?
- Что происходит, когда два майнера находят блоки на одной и той же высоте?
Исследование
- Когда майнер находит действительный блок, он передает его пирам, обычно в виде компактного блока. Из-за ограничений пропускной способности и задержек на проверку этой рассылке нужно время, чтобы достичь каждой ноды сети. В этот промежуток другие майнеры, еще не получившие новую вершину цепочки, продолжают майнить поверх предыдущего состояния цепочки, не зная, что конкурирующая ветвь уже найдена.
- Если один из этих отстающих майнеров находит собственный действительный блок на той же высоте до того, как получит первоначальную рассылку, возникает временный форк. Оба блока содержат корректное доказательство работы и технически действительны. Однако в активную каноническую цепочку может войти только один из них. Следующий блок, найденный любым майнером, присоединится к одному из них и продлит эту ветвь; другой станет устаревшим.
- Задержка распространения напрямую повышает вероятность такой коллизии. Чем медленнее распространение, тем выше доля устаревших блоков (stale rate), и вычислительная мощность, предназначенная для защиты реестра, тратится на внутреннюю конкуренцию. Эта динамика выгодна крупным майнерам с хорошей связностью, которые распространяют свои блоки быстрее, чем небольшие изолированные операторы, — так возникает структурное преимущество, связанное с инфраструктурой, а не только с хешрейтом.
- Чтобы сократить потери от устаревания блоков, некоторые майнеры практикуют «майнинг без валидации» (validationless mining). Они проверяют только доказательство работы в заголовке входящего блока и сразу начинают строить поверх него, параллельно загружая полные данные транзакций для последующей проверки. Такой короткий путь может обернуться против них: в июле 2015 года, вскоре после активации софтфорка, майнеры, действовавшие таким образом, построили еще пять блоков поверх недействительного — получился форк из шести блоков, от которого пришлось отказаться.
- Компактные блоки (BIP152) и специализированные ретрансляционные сети, такие как FIBRE, значительно сократили время распространения: они отправляют короткие идентификаторы транзакций и только те транзакции, которых нет у пира. Эти оптимизации снижают долю устаревших блоков по всей сети, и крупным пулам становится труднее извлекать выгоду из преимущества в задержках. Тем не менее противоречие между размером блока, временем проверки и скоростью распространения остается центральным ограничением при проектировании консенсуса.
- Эгоистичный майнинг (selfish mining), описанный Эялем и Сирером в 2013 году, показал, что майнер со значительным хешрейтом может получить преимущество, стратегически придерживая блоки, а не публикуя их сразу. Хотя реорганизации глубиной в один блок из-за естественных задержек все еще иногда случаются, более глубокие реорги редки, поскольку экономические издержки длительного враждебного поведения для большинства участников превышают возможную выгоду.
Ключевые факты
- Устаревший блок — это действительный блок, который не становится частью активной цепочки ноды.
- Более быстрое распространение блоков снижает долю устаревших блоков и уменьшает преимущество крупных майнеров с хорошей связностью.
- Майнинг без валидации — это проверка только доказательства работы в заголовке блока, чтобы сразу начать строить поверх него.
- Компактные блоки (BIP152) сокращают время распространения, отправляя короткие идентификаторы вместо полных транзакций, которые у пира уже есть.
- Эгоистичный майнинг позволяет майнеру со значительным хешрейтом получать выгоду, стратегически придерживая блоки.
- Реорганизации глубиной в один блок иногда случаются из-за задержек, а более глубокие реорги редки.
Упражнение девять, шесть, три, один
9СобратьНайдите как можно больше недавних устаревших блоков или реорганизаций глубиной в один блок (цель — 9) на mempool.space или в открытых источниках, отмечая дату и участвовавшие пулы.
6СгруппироватьСгруппируйте 9 случаев в 6 категорий по тому, что показывают записи: участвовавшие пулы, время между конкурирующими блоками, их размеры и то, какая ветвь победила.
3Выделить главноеСведите 6 категорий к 3 закономерностям того, как возникают и разрешаются такие форки.
1КристаллизоватьНапишите одно предложение о том, почему скорость распространения — критически важный параметр безопасности для систем с доказательством работы (PoW).
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.