MSTR Cat

Блокчейн/Уровень II · Механика/2.2 Транзакции/Урок 7

Жизненный цикл транзакции

От подписи до финальности: как транзакция проходит через сеть

МатериалыВеб-сайт mempool.spaceОбозреватель блоков для отслеживания глубины подтверждения

Любопытство

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

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

  1. Путь начинается в программе-кошельке. Пользователь выбирает конкретные непотраченные выходы транзакций (UTXO), чтобы покрыть платёж и комиссию. Кошелёк формирует новый объект транзакции, задавая входы, которые ссылаются на предыдущие выходы через идентификатор транзакции и индекс, и выходы, которые направляют средства на адреса получателей или адреса сдачи. Каждый вход подписывается приватным ключом, соответствующим его скрипту блокировки; так создаются цифровые подписи, доказывающие владение без раскрытия самого ключа.
  2. Полностью подписанная транзакция сериализуется в двоичный формат и рассылается подключённым пирам по одноранговой (peer-to-peer) сети. Получив её, каждая нода самостоятельно проверяет её на соответствие правилам консенсуса: что входы покрывают выходы, что криптографические подписи верны, что нет двойной траты существующих UTXO и что логика скриптов корректна. Если транзакция допустима согласно политике, нода добавляет её в свой локальный мемпул и сообщает о ней пирам сообщениями 'inv' (inventory); пиры, у которых её нет, запрашивают полную транзакцию с помощью 'getdata'.
  3. Майнеры постоянно отслеживают свои мемпулы в поиске выгодных транзакций. Они отбирают набор транзакций с высокой ставкой комиссии для включения в шаблон блока-кандидата, который также содержит coinbase-транзакцию, начисляющую текущую субсидию за блок и собранные комиссии. Затем майнер выполняет доказательство работы (PoW), раз за разом хешируя заголовок блока, пока не найдёт хеш, удовлетворяющий текущей цели сложности сети. Эта работа делает блок дорогим в производстве и дешёвым в проверке; найденный блок рассылается по всей сети.
  4. Ноды, получившие новый блок, проверяют его доказательство работы и валидность транзакций, прежде чем добавить его в свою локальную копию цепочки. Транзакции этого блока теперь считаются подтверждёнными с глубиной один. Их входы помечаются в наборе UTXO как потраченные, а их выходы становятся доступными для дальнейшей траты после истечения необходимых временных блокировок или периодов созревания. Если на той же высоте появляется конкурирующий блок, ноды следуют той ветке, в которой накоплено больше всего работы; если короткая реорганизация заменяет блок, его транзакции возвращаются в мемпул, если только новая ветка уже их не содержит.
  5. Безопасность растёт с каждым следующим блоком, добавленным поверх подтверждающего. Таблицы из whitepaper показывают, что у атакующего с 10% хешрейта вероятность догнать цепочку, отставая на пять блоков, меньше 0,1%. Шесть подтверждений — около часа — стали общепринятой нормой на основе такого анализа, хотя реальный риск зависит от доли атакующего и суммы на кону. Некоторые продавцы принимают платежи без подтверждений на небольшие суммы, но при более крупных переводах обычно ждут нескольких подтверждений, чтобы снизить риск атаки двойной траты через реорганизацию цепочки.
  6. Coinbase-транзакции, которые создают новые биткоины из вознаграждения за майнинг и комиссий, имеют особое ограничение: их выходы нельзя потратить, пока они не наберут 100 подтверждений. Это правило существует потому, что coinbase-выход исчезает, если его блок заменяется в ходе реорганизации; задержка не даёт таким монетам распространиться в последующие транзакции, которые тогда стали бы недействительными. Для обычных переводов между пользователями такой задержки нет; после подтверждения выходы технически можно тратить, хотя ожидание дополнительных подтверждений — это решение по управлению рисками, зависящее от суммы на кону и допущений о доверии.

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

  • Ноды проверяют транзакции на соответствие правилам консенсуса, прежде чем добавить их в свои мемпулы.
  • Валидность блока зависит от того, соответствует ли его доказательство работы текущей цели сложности.
  • Шесть подтверждений (около часа) — общепринятая норма, а не правило протокола.
  • Coinbase-выходы требуют созревания в 100 блоков, прежде чем их можно потратить.
  • При реорганизации обычные транзакции из заменённого блока возвращаются в мемпул, если они не конфликтуют с новой веткой; его coinbase-транзакция исчезает.
  • Ноды объявляют о новых транзакциях сообщениями 'inv' и отправляют их по запросу ('getdata').

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

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

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

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

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

EN PT ES ZH JA KO DE FR MS