Модуль 7: Как работает блокчейн

Урок 5 Как работает транзакция: от нажатия кнопки до записи в блокчейн

8 мин чтения Средний

В уроке о блокчейне мы проследили путь транзакции в общих чертах: создали, подписали, отправили в сеть — блок подтверждён. Теперь смотрим на тот же путь под увеличительным стеклом и узнаём детали, которые объясняют, почему комиссия разная, почему одна транзакция прошла за 10 минут, а другая «зависла» на несколько часов — и почему после подтверждения её невозможно отменить никакими способами.

В этом уроке вы узнаете:

  • чем принципиально отличается UTXO-модель Bitcoin от Account-модели Ethereum — и почему это влияет на комиссии и конфиденциальность;
  • что такое TXID и как найти любую транзакцию в блокчейне за 30 секунд;
  • как работает mempool и почему именно комиссия определяет скорость подтверждения;
  • что делать если транзакция «застряла» — Replace-By-Fee и CPFP простым языком;
  • почему подтверждённую транзакцию нельзя отменить и как избежать ошибки с неверным адресом.

После этого урока вы сможете осознанно управлять комиссиями, понимать что происходит с вашими деньгами между нажатием кнопки и записью в блокчейн — и не паниковать, если транзакция не прошла мгновенно. Для практического раздела в конце урока откройте mempool.space (для Bitcoin) или etherscan.io (для Ethereum) и держите рядом — будем разбирать реальные данные.

Две совершенно разные модели учёта

Представьте двух человек, у каждого есть 800 рублей. У первого — одна купюра в 500 и три по 100. У второго — просто цифра «800» на банковском счёте. Это абсолютно разные системы хранения денег — и именно так устроена разница между Bitcoin и Ethereum на уровне протокола.

Bitcoin — UTXO-модель

Bitcoin не хранит «баланс адреса» как одно число. Вместо этого в блокчейне существуют UTXO — Unspent Transaction Output, непотраченные выходы транзакций. Думайте о них как о купюрах разного номинала в вашем кошельке: у вас не счёт с суммой, у вас набор «монет», каждая из которых привязана к конкретной входящей транзакции.

Пример: вы получили 0,5 BTC в одной транзакции и 0,3 BTC в другой. У вас два UTXO. Хотите отправить 0,4 BTC? Кошелёк берёт UTXO на 0,5 BTC целиком — нельзя потратить «часть купюры» — отправляет 0,4 BTC получателю, а оставшиеся 0,099 BTC возвращает на ваш адрес как «сдачу». Ещё 0,001 BTC уходит майнеру как комиссия. Один UTXO уничтожен, два созданы — для получателя и для вас.

UTXO всегда тратится целиком. Нельзя потратить «половину купюры». Каждая транзакция уничтожает входные UTXO и создаёт новые. Весь баланс адреса — сумма всех его UTXO.

Почему это хорошо? Во-первых, параллельная верификация: транзакции с разными UTXO не конкурируют друг с другом, нодам (node — узел сети, компьютер-участник блокчейна) легче проверять их одновременно. Во-вторых, конфиденциальность: каждая транзакция создаёт новые выходы, и отследить всю историю сложнее — тем более если вы используете новый адрес для каждого входящего перевода.

Ethereum — Account-модель

Ethereum работает как банк: у каждого адреса просто хранится число — баланс в wei (1 ETH = 1018 wei). Транзакция означает: «уменьши мой баланс на X, увеличь баланс адреса Y на X минус комиссия». Никаких «купюр» — только арифметика над балансами.

Для отслеживания порядка транзакций Ethereum использует nonce — счётчик, порядковый номер транзакции с аккаунта, начиная с нуля. Если ваша транзакция с nonce=5 застряла в mempool (пуле транзакций, ожидающих включения в блок), транзакция с nonce=6 не пройдёт, пока не разрешится nonce=5. Сеть требует строгой последовательности. Именно этот механизм позволяет «заменить» застрявшую транзакцию — подробнее об этом в разделе про ускорение.

Если вы видите в кошельке строчку «Nonce: 47» рядом с транзакцией Ethereum — это означает, что вы отправили 47 транзакций с этого аккаунта до данной. Всё нормально, это просто счётчик истории операций.

Account-модель проще для смарт-контрактов: контракт читает «баланс адреса» как одно число, а не анализирует набор UTXO. Это упрощает логику DeFi-протоколов и объясняет, почему именно Ethereum стал платформой для сложных финансовых приложений. Теперь — как любую из этих транзакций найти в сети.

TXID: как идентифицируется транзакция

Откройте свой кошелёк и нажмите на любую завершённую транзакцию. Среди деталей будет строка из 64 символов — что-то вроде a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d. Это TXID (Transaction ID) — уникальный идентификатор транзакции. Вставьте его в строку поиска mempool.space или etherscan.io — и вы мгновенно найдёте все данные об операции: сумму, адреса, комиссию, статус.

TXID — это хэш всех данных транзакции. В Bitcoin для его вычисления применяется двойной SHA-256, в Ethereum — Keccak-256. Суть одна: любое изменение в данных транзакции полностью меняет TXID. Идентификатор однозначно привязан к конкретной операции и не может совпасть с другой.

До 2017 года у Bitcoin была проблема transaction malleability (пластичность транзакции): TXID мог измениться, пока транзакция не подтверждена, потому что данные подписей (witness) входили в расчёт хэша. Обновление SegWit вынесло данные подписи в отдельное поле — TXID теперь считается только по основным данным и неизменен с момента создания транзакции.

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

SegWit и vbytes: почему SegWit-транзакции дешевле

Откройте любую Bitcoin-транзакцию на mempool.space и найдите строчки «Size» и «Virtual size». Второе число обычно меньше первого — и именно оно определяет сумму комиссии. Разберёмся почему.

До обновления SegWit (Segregated Witness, 2017) комиссия считалась от физического размера транзакции в байтах. Самая большая часть транзакции — данные подписей (witness), которые доказывают владение монетами. Подписи могут занимать 60–70% от всего объёма транзакции. Платить за них по полной было невыгодно.

SegWit вынес данные подписей за пределы «основного» блока транзакции. Эти данные по-прежнему существуют и передаются по сети, но при расчёте комиссии считаются с весовым коэффициентом 0,25 — то есть 1 байт данных подписи считается как 0,25 байта. Отсюда и появился vbyte (virtual byte) — взвешенная единица размера. SegWit-транзакция имеет меньше vbytes → платит меньше комиссию при тех же данных.

Кошельки, использующие SegWit-адреса (они начинаются с bc1), автоматически платят на 30–40% меньше комиссии, чем старые Legacy-адреса (начинаются с 1 или 3). Если ваш кошелёк предлагает выбрать тип адреса — выбирайте Native SegWit (bc1). Настраивать ничего вручную не нужно, современные кошельки используют его по умолчанию.

С понятием vbytes связан fee rate — комиссия в satoshis за vbyte. Именно этот параметр определяет, насколько быстро транзакцию включат в блок. А выстраивается эта очередь в mempool.

Mempool: зал ожидания для транзакций

Представьте большой зал ожидания перед автобусом, который отправляется каждые 10 минут и берёт на борт ограниченное число пассажиров — причём тех, кто готов заплатить больше. Именно так работает mempool.

Mempool (memory pool — пул памяти) — буфер неподтверждённых транзакций, который существует на каждой ноде сети отдельно. Когда вы нажимаете «Отправить» в кошельке, транзакция уходит на несколько ближайших нод по P2P-сети. Те проверяют: верна ли подпись (как мы разбирали в уроке о приватном ключе), не потрачены ли уже эти UTXO, соответствует ли формат правилам протокола. При успехе — добавляют транзакцию в свой mempool и передают дальше. За несколько секунд о транзакции знает большинство нод.

Когда майнер или валидатор формирует следующий блок, он отбирает транзакции из своего mempool. Bitcoin-майнеры сортируют по fee rate (satoshis/vbyte): чем выше ставка — тем приоритетнее место в блоке. В спокойный период достаточно 2–5 sat/vbyte, при перегрузке сети ставки взлетают до 100–500 sat/vbyte.

В Bitcoin существует dust limit — минимальная сумма выходного UTXO, обычно около 546 satoshis (~$0,35 при цене BTC $65 000). Если сумма UTXO меньше этого порога — нода отклонит транзакцию: комиссия за будущую трату такого UTXO превысит его стоимость. Следите за «сдачей» при работе с мелкими суммами.

Ethereum работает иначе: транзакции сортируются по priority fee (чаевые, tip) — добровольной надбавке сверх базовой комиссии. О механике EIP-1559 и точном расчёте base fee — подробнее в уроке 2.7 про газ в Ethereum.

Размер mempool Bitcoin в спокойное время — 5–50 MB. В пик ажиотажа вокруг Ordinals в мае 2023 года он раздувался до 300+ MB, комиссии доходили до $30 за перевод. Мониторить текущую ситуацию можно на mempool.space — там видна очередь транзакций и рекомендуемый fee rate в реальном времени. Но сколько же нужно ждать, пока транзакция наберёт достаточно подтверждений?

Подтверждения: сколько ждать и почему

Транзакция попала в блок — получила 1 подтверждение. Следующий добытый блок ложится поверх него — уже 2 подтверждения. И так далее. Каждое новое подтверждение делает транзакцию всё труднее атаковать: злоумышленнику пришлось бы пересчитать не один блок, а весь хвост цепочки — и делать это быстрее, чем вся честная сеть добывает новые.

Стандарты подтверждений отличаются для разных сетей. Ниже — практические ориентиры, которыми пользуются биржи и сервисы:

Сеть Время 1 блока Стандарт необратимости Ожидание Комментарий
Bitcoin ~10 мин 6 подтверждений ~60 мин Для суммы >$10 000 биржи ждут 6+. Для малых переводов достаточно 1–2
Ethereum ~12 сек Checkpoint finality ~12 мин Финализация через механизм Casper. 1–2 подтверждения подходят для большинства операций
Solana ~0,4 сек ~2 сек Секунды Почти мгновенная финализация, другая архитектура консенсуса
TRON ~3 сек ~1 мин Минуты Популярен для USDT-переводов из-за низких комиссий ($0,30 против $1–5 на Ethereum)
BNB Chain ~3 сек ~15–20 подтверждений ~1 мин Биржи обычно требуют 15 подтверждений для зачисления BNB и токенов

Почему для Bitcoin именно 6 подтверждений стали стандартом? Математика консенсуса: вероятность успешной реорганизации цепи (атака с переписыванием блоков) после 6 блоков не превышает 0,1% даже при наличии у атакующего 10% вычислительной мощности всей сети. Для перевода в $50 ждать 60 минут нет смысла; для перевода в $100 000 — биржа обязана ждать.

Не паникуйте, если транзакция «висит в pending» несколько минут. Проверьте статус по TXID в block explorer. Pending означает: транзакция в mempool, ждёт включения в блок. Если fee rate был рыночным — она попадёт в следующий-через-один блок.

Но что если fee rate оказался недостаточным — и транзакция зависла надолго?

Что делать если транзакция застряла

Вы отправили транзакцию с низкой комиссией в спокойный момент — а через час сеть резко нагрузилась, fee rate вырос, и ваша транзакция оказалась в хвосте очереди. Mempool переполнен, майнеры берут только высокие ставки. Есть два способа ускорить операцию в Bitcoin.

Первый — RBF (Replace-By-Fee, замена по комиссии): вы создаёте новую транзакцию с теми же UTXO, но указываете более высокий fee rate. Нода заменяет старую транзакцию в mempool на новую. Важное условие: исходная транзакция при отправке должна была быть помечена флагом RBF (opt-in RBF). Большинство современных кошельков включают этот флаг по умолчанию.

Второй способ — CPFP (Child-Pays-For-Parent, «ребёнок платит за родителя»): вы создаёте новую транзакцию, которая тратит «сдачу» из застрявшей, и выставляете ей очень высокую комиссию. Майнер видит: чтобы включить выгодную «дочернюю» транзакцию, ему нужно сначала подтвердить «родительскую». Суммарно это выгодно — и обе транзакции попадают в блок вместе.

RBF подходит, когда вы отправили транзакцию и хотите её заменить. CPFP удобен, когда вы получили застрявшую транзакцию на свой адрес — «родительскую» — и хотите её ускорить, создав дочернюю. Если исходная транзакция не помечена RBF — остаётся только CPFP или терпеливое ожидание.

В Ethereum механизм проще, потому что работает nonce. Вы повторно отправляете транзакцию с тем же nonce, но более высоким gas price. Кошельки вроде MetaMask называют это кнопкой «Speed Up». Сеть принимает транзакцию с более высокой ставкой и отклоняет первоначальную.

Хотите полностью отменить транзакцию Ethereum? Отправьте сами себе 0 ETH с тем же nonce и максимально высоким gas price. Эта «пустая» транзакция вытолкнет застрявшую и «потратит» nonce впустую — деньги никуда не уйдут.

Заменить или отменить застрявшую транзакцию можно только пока она в mempool — то есть пока не включена ни в один блок. После первого подтверждения никакая замена невозможна.

Почему транзакцию нельзя отменить после подтверждения

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

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

Проверяйте адрес получателя трижды — всегда. Ошибка в одном символе — и деньги уходят навсегда. Кошельки используют контрольные суммы (checksum) в адресах Bitcoin и Ethereum, чтобы поймать случайные опечатки, но они не защищают от отправки на чужой правильный адрес. Привычка: скопировать адрес → проверить первые 4 и последние 4 символа → отправить.

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

Перегрузка сети: когда комиссии взлетают

В 2021 году простой обмен токенов на Ethereum обходился в $50–100. В мае 2023 года ажиотаж вокруг Bitcoin Ordinals — NFT-подобных надписей прямо в транзакциях — поднял комиссии в Bitcoin до $30+ за перевод. Принцип один: когда спрос на место в блоке превышает предложение, начинается аукцион. Кто платит больше — проходит первым.

Но Ethereum с тех пор изменился. После перехода на Proof of Stake (сентябрь 2022) и особенно после обновления Dencun (март 2024), которое добавило специальный формат данных для Layer 2, большая часть транзакций ушла с Ethereum L1 на сети второго уровня — Arbitrum, Optimism, Base. Нагрузка на L1 упала, и вместе с ней упали базовые комиссии. В спокойный период 2025–2026 годов простой перевод ETH на L1 стоит $0,10–1, а не $50. Но механизм аукциона никуда не делся: если завтра случится новый NFT-ажиотаж или громкий листинг — L1 снова перегрузится и комиссии вырастут в разы. Детали механизма EIP-1559, который управляет этим автоматически — в уроке 2.7 про газ в Ethereum.

Bitcoin устроен иначе: у него нет полноценного L2 с такой же пропускной способностью, поэтому перегрузка L1 — по-прежнему актуальная проблема. В периоды ажиотажа комиссии остаются высокими, и пережидать или платить больше — единственные варианты.

Практические подходы для работы при высоких комиссиях:

  • Bitcoin, мелкие переводы: перенесите на время низкой активности — ночь по UTC (01:00–08:00) и выходные дни. Разница в fee rate может быть в 5–10 раз.
  • Bitcoin, срочные переводы: установите fee rate выше рекомендуемого на mempool.space в 1,5–2 раза. Переплатить $5 лучше, чем ждать 8 часов.
  • Ethereum, любые DeFi-операции: работайте на Layer 2 — Arbitrum, Optimism, Base. Комиссии там $0,01–0,10 против $0,50–10 на L1 — при той же безопасности (подробнее — в уроке 2.9 о Layer 2).
  • Переводы USDT и стейблкоинов: рассмотрите TRON (TRC20), комиссия около $0,30. Убедитесь, что получатель принимает TRC20, — перепутать сеть и потерять деньги очень легко.
  • Следите за рынком через ленту крипто-новостей: крупные события — листинги, хаки, NFT-волны — часто предсказывают всплески комиссий.

Лайфхак для Bitcoin: mempool.space показывает рекомендуемый fee rate прямо на главной странице. Три колонки: High Priority (следующий блок), Medium Priority (~30 мин), Low Priority (~1 час). Выбирайте исходя из срочности — в спокойный период экономия бывает значительной.

Практика: отследи свою транзакцию прямо сейчас

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

Порядок для Bitcoin через mempool.space:

  • Откройте историю транзакций в кошельке и найдите TXID любой завершённой операции — строка из 64 символов. Скопируйте его.
  • Перейдите на mempool.space и вставьте TXID в строку поиска. Нажмите Enter.
  • На странице транзакции найдите: Fee rate (в sat/vbyte — сколько вы заплатили за каждый виртуальный байт), Virtual size (размер транзакции в vbytes), Confirmations (сколько блоков подтвердили операцию).
  • Прокрутите вниз: раздел Inputs — UTXO, которые были потрачены. Раздел Outputs — новые UTXO: адрес получателя и ваша сдача.
  • Бонус: вернитесь на главную mempool.space и откройте вкладку Mempool. Там видна «очередь» всех ожидающих транзакций, разбитых по fee rate, и текущий рекомендуемый порог для включения в следующий блок.

Для Ethereum через etherscan.io порядок аналогичный. Найдите транзакцию и обратите внимание на следующие поля:

  • Status: Success (включена и исполнена), Pending (в mempool), Failed (исполнена, но revert — газ при этом не возвращается!).
  • Gas Used: фактически потреблённый газ из установленного лимита.
  • Gas Price: цена газа в gwei (1 gwei = 0,000000001 ETH) в момент транзакции.
  • Nonce: порядковый номер этой транзакции с вашего аккаунта.

Если статус транзакции Ethereum — Failed с пометкой «Out of gas», значит: лимит газа (gas limit — максимальное количество газа, которое вы разрешаете потратить) оказался слишком низким, транзакция не завершилась, но весь выделенный газ уже сожжён — возврата нет. При следующей попытке кошелёк автоматически предложит более высокий лимит — примите его.

Вы прошли весь путь транзакции: от модели хранения данных через mempool — до реального наблюдения в block explorer. В следующем уроке — смарт-контракты: код, который исполняется без посредников и никогда не останавливается после запуска.

Урок пройден

Закрепите знания

Ответьте на вопросы по уроку — это поможет лучше запомнить материал

1 Что такое UTXO в Bitcoin?

2 Вы отправили Bitcoin-транзакцию, но она зависла в mempool. Как работает метод CPFP?

3 Почему SegWit-транзакции Bitcoin дешевле Legacy-транзакций?

4 Сколько подтверждений Bitcoin обычно требуют биржи для зачисления крупных сумм (>$10 000)?

5 Что такое nonce в транзакции Ethereum и зачем он нужен?

Не хотите проходить тест?
Зарегистрируйтесь, чтобы прогресс сохранялся на всех устройствах
Поделиться:
Следующий урок
Содержание