В уроке о блокчейне мы проследили путь транзакции в общих чертах: создали, подписали, отправили в сеть — блок подтверждён. Теперь смотрим на тот же путь под увеличительным стеклом и узнаём детали, которые объясняют, почему комиссия разная, почему одна транзакция прошла за 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. В следующем уроке — смарт-контракты: код, который исполняется без посредников и никогда не останавливается после запуска.