Перейти к основному контенту

Жизненный цикл транзакции: от клиента до подтверждения в блокчейне

Теперь, когда мы разобрались с блоками, ключами и консенсусом, давайте соберем все воедино и проследим путь транзакции от вашего кошелька до ее подтверждения по всему миру — подобно отслеживанию посылки в пути.


1.5 Жизненный цикл транзакции: от клиента до подтверждения в блокчейне​

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

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


1. Создание​

Все начинается с вашего клиентского кошелька (например, MetaMask). Когда вы решаете совершить транзакцию, кошелек «конструирует» для вас пакет данных локально.

  • Основные поля включают:
    • from: Ваш адрес.
    • to: Адрес получателя (или адрес смарт-контракта).
    • value: Сумма для перевода.
    • gasLimit: Максимальный объем вычислительных ресурсов, который вы готовы оплатить за эту транзакцию.
    • gasPrice / maxFeePerGas: Цена, которую вы платите за единицу вычисления.
    • nonce: Счетчик, начинающийся с 0 и увеличивающийся на 1 для каждой транзакции, используемый для предотвращения атак повторного воспроизведения.
  • Локальная проверка: Кошелек выполняет предварительные проверки, такие как подтверждение того, что ваш баланс покрывает сумму и комиссии, проверка последовательности nonce и подтверждение правильности формата адреса.

2. Подписание​

После создания данные транзакции хешируются в короткий «отпечаток». Затем кошелек использует ваш приватный ключ, хранящийся здесь, для создания цифровой подписи этого хеша. Этот шаг имеет решающее значение; это как подписание чека, предоставляющее криптографическое доказательство миру, что «я разрешаю эту операцию». Подписанный пакет данных транзакции теперь завершен и готов к отправке.

3. Трансляция нодам​

Ваша подписанная транзакция отправляется на блокчейн-ноду, к которой ваш кошелек подключен через интерфейс, называемый RPC (Remote Procedure Call). Эта нода действует как «стойка регистрации почтового отделения» в мире блокчейна. Получив вашу транзакцию, она выполняет базовую проверку (например, проверяет действительность подписи) и затем помещает ее в место, называемое «Mempool». Mempool — это «зал ожидания» для ожидающих транзакций, где все транзакции находятся в состоянии pending (ожидание).

4. P2P-распространение​

Попав в Mempool, транзакция не остается только на одной ноде. Нода «передаст» эту транзакцию своим подключенным соседним нодам через P2P (peer-to-peer) сеть. Эти соседние ноды затем передадут ее своим соседям. Этот процесс распространяется как вирус, и в течение нескольких секунд ваша транзакция станет известна тысячам активных нод в сети. Все майнеры/валидаторы могут видеть эту транзакцию, ожидающую упаковки в их Mempool.

5. Упаковка в блок​

Теперь настала очередь майнеров (PoW) или валидаторов (PoS). Они являются «бухгалтерами» сети, отвечающими за выбор транзакций из Mempool и их упаковку в новый блок.

  • Стратегия выбора: Обычно они отдают приоритет транзакциям с более высокими предложениями комиссий, потому что эти комиссии являются их прямым вознаграждением.
  • Процесс упаковки: После выбора пакета транзакций валидаторы вычисляют их корень дерева Меркла (merkle_root) и объединяют его с такими полями, как хеш предыдущего блока, чтобы сформировать заголовок блока, а затем начинают процесс консенсуса (соревнование вычислительной мощности PoW или предложение блока PoS).

6. Трансляция нового блока​

Как только майнер/валидатор успешно создает новый блок, он немедленно транслирует его по всей сети. Другие ноды, получающие этот новый блок, выполняют строгую проверку: Соответствует ли хеш заголовка блока требованию сложности? Действительны ли все подписи транзакций в блоке? и т.д. После проверки нода добавляет этот новый блок в конец своего локально поддерживаемого блокчейна. В этот момент ваша транзакция официально становится «ончейн».

  • Обработка форков: Иногда два валидатора могут транслировать новый блок почти одновременно, вызывая временный «форк» в цепи. Правила консенсуса гарантируют, что в конечном итоге выживает только одна цепь, обычно самая длинная цепь (PoW) или самая тяжелая цепь (PoS) принимается всей сетью как легитимная история.

7. Подтверждение и финализация​

Хотя транзакция находится в блокчейне, ее путь еще не завершен полностью.

  • Подтверждения: За каждый новый блок, добавленный после блока, содержащего вашу транзакцию, ваша транзакция получает одно «подтверждение». Чем больше подтверждений, тем экспоненциально ниже вероятность отката транзакции (отмены из-за форка). В сети Биткойн транзакция обычно считается безопасной после 6 подтверждений (около 1 часа). Учреждения, такие как биржи, устанавливают различные требования к подтверждениям в зависимости от важности актива.
  • Финализация: Многие PoS-цепи вводят более сильные гарантии. Когда блок проходит определенное голосование консенсуса (например, Casper FFG), он может достичь «финализированного» состояния. Это означает, что блок заблокирован самим протоколом, теоретически абсолютно необратим и не подлежит реорганизации, обеспечивая более высокую степень уверенности, чем множественные подтверждения.

Обзор статусов транзакций​

СтатусОписание на русскомОбъяснение
СозданасозданаЗавершена только в вашем локальном кошельке, еще не отправлена.
ПодписанаподписанаТранзакция подписана, готова к трансляции, но еще не в сети.
В ожиданиив ожиданииПопала в Mempool, распространяется по сети, ожидает упаковки.
Упакованав блокеТранзакция включена в блок, высота блока определена.
ПодтвержденаподтвержденаНесколько новых блоков добавлены после блока транзакции, очень низкий риск форка, считается практически необратимой.
ФинализированафинализированаВ PoS-цепях, поддерживающих эту функцию, блок заблокирован протоколом, достигая криптографической абсолютной необратимости.

🤔 Практические упражнения​

  1. Откройте Etherscan.io, найдите недавнюю транзакцию в статусе pending (в ожидании) на главной странице и нажмите на ее хеш транзакции (Txn Hash), чтобы отследить ее. Проследите, сколько времени занимает переход из состояния pending в окончательно подтвержденное (с синей меткой «Success» и номером блока). Обратите внимание на Gas Price (цену газа), уплаченную за эту транзакцию.
  2. В вашем кошельке MetaMask перейдите в Настройки -> Дополнительно и включите переключатель «Расширенное управление газом». В следующий раз, когда вы будете совершать транзакцию в тестовой сети, попробуйте вручную отрегулировать Max fee per gas (максимальную комиссию за газ) вверх или вниз, чтобы лично ощутить значительное влияние уровня ставки на скорость упаковки транзакции.

📚 Дополнительная литература​

  • «Жизненный цикл транзакций Ethereum» - Официальная документация Ethereum Foundation, авторитетное объяснение жизненного цикла транзакций.
  • «Глубокое погружение в Mempool Ethereum» - Некоторые профессиональные аналитические статьи (например, от Blocknative или BitMEX Research) могут дать вам глубокое понимание механизма работы Mempool и MEV (Miner Extractable Value — извлекаемая майнером ценность).
  • «Осваиваем Ethereum» Глава 6: Транзакции - Классическая интерпретация структуры и жизненного цикла транзакций Ethereum.

Теперь у вас есть полное понимание того, как транзакция проходит путь от несуществующей до становления вечной частью глобального реестра. При создании транзакций мы неоднократно упоминали ключевой фактор — Газ и Комиссии. В следующем разделе (1.6) мы подробно проанализируем «Газ и Комиссии: Механизм ценообразования ончейн-ресурсов», помогая вам полностью понять, почему вы должны платить за что-либо в блокчейне и как платить умнее.