MSTR Cat

Блокчейн/Уровень III · Сеть/3.1 Ноды/Урок 7

Правила консенсуса и верификация

Список правил, превращающих блок в деньги

МатериалыПубличный обозреватель блоковСпецификация BIP141Необязательно: нода Bitcoin Core

Любопытство

  1. Что мешает майнеру с наибольшей мощностью напечатать бесконечное количество монет?
  2. Почему транзакция, которую ваша нода отказывается ретранслировать, всё равно может попасть в действительный блок?
  3. Если код консенсуса меняется, должны ли все обновиться в одну и ту же секунду?

Исследование

  1. Правила консенсуса — это строгие критерии, по которым каждая полная нода проверяет блоки. Они определяют, что технически возможно: график эмиссии, лимит веса блока в 4 000 000 единиц, сложность доказательства работы и действительность подписей. Блок, нарушивший хотя бы одно правило, отклоняется каждой честной нодой, сколько бы вычислительной мощности ни ушло на его создание. Майнеры предлагают блоки; ноды решают, засчитываются ли они. Такое разделение гарантирует, что ни одна сторона не может в одностороннем порядке изменить состояние реестра.
  2. Правила политики (policy) определяют, что нода ретранслирует своим пирам до майнинга. К ним относятся пороги для «пыли» (dust), минимальные комиссии за ретрансляцию и стандартные типы скриптов. Транзакция, нарушающая политику, отбрасывается большинством нод, но остаётся действительной, если майнер включит её в блок. Это различие важно: полагаться в вопросах безопасности на отклонение по политике рискованно, поскольку настойчивый участник может обойти фильтры пиров и отправить транзакцию напрямую майнерам, вынудив сеть принять нестандартные транзакции, если они удовлетворяют правилам консенсуса.
  3. Код и есть спецификация. Правила — это то, что фактически применяет широко используемое ПО нод, включая пограничные случаи; поэтому код консенсуса меняется медленно и проходит более строгое ревью, чем что-либо ещё в Bitcoin Core. Ошибки консенсуса устраняются в аварийном режиме: ошибка переполнения значения 2010 года и ошибка инфляции 2018 года были исправлены в срочном порядке скоординированными релизами.
  4. Изменение этих правил требует скоординированного принятия. Софтфорки ужесточают правила, поэтому необновлённые ноды по-прежнему принимают новые блоки; хардфорки ослабляют или меняют их, поэтому каждая нода должна обновиться или отколоться. Подробно оба типа разобраны в одном из следующих уроков. SegWit (август 2017) был софтфорком; Bitcoin Cash (август 2017) появился в результате хардфорка после спора о лимите размера блока.
  5. Создать блок дорого, проверить — дёшево. Майнер, создавший недействительный блок, теряет награду и потраченную энергию, поскольку каждая валидирующая нода его отбросит, — это превращает нарушение правил в дорогостоящую авантюру. Эти издержки подкрепляют строгость проверки: безопасность сети опирается на тысячи независимых нод, проверяющих каждый заголовок и каждую транзакцию, так что никакая единая точка отказа не может испортить общее состояние.
  6. Откройте обозреватель блоков, например mempool.space или blockchain.com. Выберите любой недавний блок и посмотрите на его поле 'weight' (вес). Сравните это число с лимитом в 4 000 000 единиц веса, определённым в BIP141. Обратите внимание, насколько близко современные блоки подходят к этому потолку: майнеры максимизируют доход на байт, оставаясь в рамках ограничений консенсуса, которые применяет каждая нода.

Ключевые факты

  • Правила консенсуса определяют действительность блока; правила политики — ретрансляцию транзакций.
  • Максимальный вес блока при использовании SegWit (BIP141) составляет 4 000 000 единиц.
  • Выходы coinbase-транзакции можно потратить только после 100 подтверждений.
  • SegWit был активирован в августе 2017 года в качестве мягкого форка на блоке 481,824.
  • Код консенсуса проверяется гораздо осторожнее, чем остальной код, поскольку любое расхождение может расколоть цепочку.
  • Нестандартные транзакции могут быть действительными, если попали в блок, хотя ретранслирующие ноды их отбрасывают.

Упражнение девять, шесть, три, один

9СобратьПеречислите 9 конкретных проверок, которые Bitcoin Core выполняет для нового заголовка блока или транзакции.
6СгруппироватьРазделите 9 проверок на 6 категорий: структурная целостность, экономические ограничения, криптографическая действительность, временные ограничения, переходы состояний и параметры сети.
3Выделить главноеСократите 6 категорий до 3 видов вреда, которые предотвращаются правилами консенсуса.
1КристаллизоватьНапишите одно предложение о том, почему отказ ноды принять блок окончателен независимо от намерений майнера.

Проверка фактов

Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.

Открыть в интерактивной академии →

EN PT ES ZH JA KO DE FR MS