Транзакция в блокчейне: что это такое и как она работает

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

В сетях вроде Bitcoin (BTC) транзакция фиксирует перевод определённого количества монет от отправителя к получателю и подписывается его приватным ключом. В платформах для смарт-контрактов, таких как Ethereum, транзакции дополнительно определяют лимит вычислений (gas) и могут содержать произвольные данные для вызова контрактов.

От того, как вы создаёте и отправляете транзакции, зависит не только скорость перевода, но и безопасность ваших средств.

Транзакция в блокчейне: что это такое и как она работает

Основная идея транзакции

В упрощённом виде транзакция отвечает на три вопроса:

  • кто отправляет — владелец средств, подтверждающий свои права цифровой подписью;
  • кому отправляет — один или несколько адресов получателей;
  • что именно меняется — сумма, набор «входов» и «выходов», дополнительные данные для протокола или смарт-контрактов.

Чтобы сеть приняла транзакцию:

  • она должна соответствовать формату и правилам конкретного блокчейна;
  • у отправителя должно быть достаточно средств (монет, токенов, газа);
  • цифровая подпись должна быть корректной;
  • транзакция не должна нарушать запреты вроде «двойной траты».

После включения в блок транзакция становится частью общей истории блокчейна (blockchain). Изменить её задним числом практически нереально: пришлось бы переписать цепочку блоков и убедить большинство узлов принять такую версию.

Из чего состоит транзакция

Структура транзакции зависит от типа блокчейна (UTXO-модель, аккаунтная модель, наличие смарт-контрактов), но в общем случае можно выделить несколько элементов.

  • Идентификатор и заголовок.

Версия формата, уникальный ID (обычно хеш содержимого), служебные поля для порядка обработки.

  • Входы (inputs) — чаще в UTXO-модели.

Указывают, какие ранее полученные и ещё не потраченные «монеты» (UTXO) мы тратим в этой транзакции. См. UTXO.

  • Выходы (outputs).

Описывают, кому и сколько монет отправляется. Каждый выход содержит сумму и «скрипт блокировки» — условие, при котором средства можно будет потратить (подпись владельца, мультиподпись и т.п.).

  • Адреса и суммы (в аккаунтной модели).

В сетях вроде Ethereum достаточно указать адрес получателя, сумму и дополнительные данные; баланс адреса перерасчитывается по итогам выполнения.

  • Подписи и данные авторизации.

Доказывают, что отправитель вправе распоряжаться средствами. Включают подпись приватным ключом и, при необходимости, скрипты/данные разблокировки.

  • Комиссия (fee).

В UTXO-сетях часто задаётся как разница между суммой входов и суммой выходов. В аккаунтных моделях, как в Ethereum, указывается явно через параметры газа (gas limit, gas price) и влияет на приоритет обработки.

  • Дополнительные данные.

Поле данных (data, memo, payload) может использоваться для сообщений, вызова функций смарт-контрактов, указания ID цепочки и т.п.

Пример транзакции Bitcoin

В Bitcoin используется модель UTXO. Упрощённо структура транзакции может выглядеть так:

{
  "version": 2,
  "vin": [
    {
      "txid": "идентификатор_предыдущей_транзакции",
      "vout": 0,
      "scriptSig": "данные_разблокировки",
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 0.01000000,
      "scriptPubKey": "скрипт_блокировки_получателя"
    },
    {
      "value": 0.08900000,
      "scriptPubKey": "скрипт_блокировки_сдачи"
    }
  ],
  "locktime": 0
}

Ключевые поля:

  • version — версия формата транзакции.
  • vin — список входов: какие UTXO тратим и как их разблокируем.
  • vout — список выходов: кому и сколько отправляем (включая «сдачу» обратно отправителю).
  • locktime — момент, до которого транзакция не может быть включена в блок (0 означает отсутствие задержки).

На практике кошелёк формирует такие структуры автоматически, но понимание общей схемы помогает лучше оценивать риски и поведение сети.

Транзакции в Ethereum и на L2

В Ethereum и совместимых сетях (включая L2-решения) используется аккаунтная модель. Базовые поля транзакции:

  • from — адрес отправителя;
  • to — адрес получателя (кошелёк или смарт-контракт); может быть пустым при развёртывании нового контракта;
  • value — сумма в нативной монете (ETH или токене газа конкретной сети);
  • nonce — порядковый номер транзакции с этого адреса, защищающий от повторной отправки;
  • gas limit — максимальное количество gas, которое готов потратить отправитель;
  • gas price / maxFeePerGas / maxPriorityFeePerGas — настройки комиссии за единицу газа (с учётом EIP-1559);
  • data / input — данные для вызова смарт-контракта (код функции и аргументы), либо пусто для простого перевода.

Особенности:

  • транзакция может быть простым переводом ETH между адресами или вызовом контракта (swap на DEX, минт NFT, участие в DeFi и т.д.);
  • в L2-сетях (например, Arbitrum, Optimism, Base) структура транзакции похожа, но в комиссии зашиты как «внутренние» расходы L2, так и доля затрат на публикацию данных в L1;
  • часть транзакций в L2 служит для мостов: депозиты и выводы между L1 и L2, взаимодействие с мостами и прокси-контрактами.

Подробнее о модели Ethereum и комиссии см.:

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

  • Создание.

В кошельке или приложении формируется черновик: указываются адрес получателя, сумма, сеть и (при необходимости) данные для контракта.

  • Подписание.

Транзакция подписывается приватным ключом или через смарт-кошелёк с account abstraction. Подпись доказывает, что операцию инициировал владелец.

  • Отправка в сеть.

Подписанная транзакция отправляется на узел (node) или провайдера (RPC/API), который проверяет формат, подпись и базовые правила.

  • Попадание в мемпул.

Валидные транзакции попадают в очередь (мемпул). Транзакции с более высокой комиссией получают больший приоритет (как в Bitcoin, так и в Ethereum/L2).

  • Включение в блок.

Майнеры или валидаторы выбирают набор транзакций и формируют блок. После добавления блока в цепочку транзакции в нём считаются подтверждёнными.

  • Нарастание подтверждений.

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

Время от отправки до первого подтверждения может варьироваться от секунд до часов в зависимости от сети, нагрузки и выставленной комиссии.

Комиссии и приоритет транзакций

Блокчейны ограничены по количеству данных и вычислений в блоке, поэтому:

  • при низкой нагрузке транзакции с минимальной комиссией попадают в блок быстро;
  • при высокой нагрузке пользователи конкурируют за место в блоке и повышают fee.

Особенности:

  • в UTXO-сетях (Bitcoin) комиссия часто измеряется в sat/vbyte и задаётся как разница между суммой входов и выходов;
  • в Ethereum и L2 комиссия считается как gas_used × gas price, где gas price обычно указывается в gwei; после EIP-1559 часть комиссии сжигается, часть идёт валидатору;
  • кошельки обычно предлагают несколько профилей: «быстро», «средне», «экономно» с учётом текущего состояния мемпула.

Если выставить слишком низкую комиссию:

  • транзакция может надолго «застрять» в мемпуле;
  • узлы могут со временем перестать ретранслировать её;
  • в некоторых сетях её можно заменить новой транзакцией с более высокой fee (механизмы вроде RBF или «speed up» в интерфейсе кошелька).

Подробнее о комиссионной модели см. Комиссии (fee).

Риски и типичные ошибки с транзакциями

  • Неверный адрес получателя.

Отправка на некорректный или чужой адрес почти всегда необратима. В блокчейне нет «кнопки отмены» и службы поддержки, которая сможет отменить запись в реестре. Проверяйте адрес вручную или через QR, делайте тестовый перевод малой суммы.

  • Неправильный выбор сети или токена.

Один и тот же интерфейс кошелька может работать с разными сетями: Bitcoin, Ethereum, L2, EVM-чейнами и т.п. Перевод токена ERC-20 на адрес в другой сети (или на адрес монеты с тем же тикером, но в другом блокчейне) может привести к потере доступа к средствам.

  • Отправка напрямую на адрес смарт-контракта.

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

  • Недостаточная комиссия.

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

  • Компрометация ключей.

Если злоумышленник получает ваш приватный ключ или seed-фразу, он может подписывать транзакции от вашего имени. Подробнее о хранении — в статьях Криптокошелёк и Хранение на бирже и self-custody.

  • Ошибки с мемо/тегами.

В некоторых сетях и на биржах нужно указывать дополнительное поле (memo, destination tag). Ошибка или пустое мемо могут привести к тому, что сервис не зачислит перевод автоматически.

Транзакции в UTXO- и аккаунтных моделях

Критерий UTXO-модель Аккаунтная модель
Представление баланса Набор непотраченных выходов (UTXO). Числовой баланс на адресе.
Структура транзакции Входы ссылаются на старые UTXO, выходы создают новые; есть «сдача». Адрес отправителя → адрес получателя, баланс пересчитывается; часто есть поле данных.
Гибкость скриптов Мощные скрипты блокировки/разблокировки, но без полноценной виртуальной машины. В сетях со смарт-контрактами (Ethereum и EVM-совместимые) допускаются произвольные программы (контракты).
Аналитика и трекинг Сложнее однозначно привязать UTXO к одному владельцу; выше вариативность схем. Проще отслеживать потоки по адресу, что облегчает аналитику, но снижает приватность.
Примеры сетей Bitcoin, Litecoin, Bitcoin Cash и др. Ethereum, EVM-чейны и L2, аккаунтные L1 (например, Solana — с отличиями в модели).

Частые вопросы

Можно ли отменить транзакцию после отправки? После включения транзакции в блок и появления подтверждений отменить её нельзя. Пока транзакция в мемпуле, некоторые сети и кошельки позволяют заменить её новой версией (например, с большей комиссией), но это не гарантия «отмены» — нужно смотреть правила конкретной сети.

Почему моя транзакция долго висит без подтверждений? Чаще всего — из-за слишком низкой комиссии на фоне текущей нагрузки. Также возможны локальные проблемы у кошелька или сервиса. Проверить статус можно через блокчейн-обозреватель (explorer) и сравнить комиссию вашей транзакции с рыночными значениями.

Что такое RBF и CPFP? RBF (Replace-By-Fee) — замена неподтверждённой транзакции новой с более высокой fee (там, где протокол и кошелёк это поддерживают). CPFP (Child Pays For Parent) — создание зависимой транзакции-«ребёнка» с высокой комиссией, чтобы майнеру было выгодно взять в блок и её, и «родителя».

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

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

См. также

Task Runner