«Pending» (в ожидании), «sent» (отправлено), «confirmed» (подтверждено) и «filled» (исполнено) часто отображаются на одном экране, и их легко ошибочно воспринять как последовательные ступени одной лестницы. На самом деле они описывают два совершенно разных процесса. Ордер имеет собственный жизненный цикл на торговой площадке: он принимается или отклоняется, может оставаться в стакане (книге ордеров), исполняться по частям и отменяться. Блокчейн-транзакция имеет отдельный жизненный цикл: она подписывается, отправляется, обрабатывается, подтверждается, финализируется, либо завершается ошибкой или вовсе не попадает в блок. Журнал, смешивающий эти сущности, может зафиксировать сделку, которая никогда не состоялась, или упустить действительно совершённую операцию.
Два конечных автомата, два вида доказательств
Состояние ордера отвечает на торговый вопрос: сопоставила ли торговая площадка вашу инструкцию со встречным ордером, в каком объёме и по какой цене? Состояние транзакции отвечает на учётный вопрос распределённого реестра: включила ли сеть вашу подписанную транзакцию, выполнилась ли она без ошибок и насколько необратима эта запись сейчас?
Иногда одно зависит от другого. Ончейн-своп может исполниться только в том случае, если выполнилась его транзакция. В других случаях они практически не связаны: транзакция депозита переводит обеспечение на биржу, а размещённые позже ордера имеют собственные идентификаторы и статусы. В любом случае статус одного автомата не служит доказательством для другого. Финализированный депозит не подтверждает исполнение ордера, а ордер со статусом исполненного не доказывает, что вывод средств был завершён и подтверждён сетью.
Жизненный цикл ордера на бирже
Торговые площадки называют свои статусы по-разному, поэтому важно изучать документацию конкретной биржи. Примером может служить документация API биржи Hyperliquid. Размещённый ордер возвращает результат по каждому ордеру внутри списка статусов. В примерах ответов показан статус ожидания в стакане с идентификатором ордера (oid), статус исполнения с итоговым размером, средней ценой и тем же oid, а также статус ошибки с поясняющим сообщением. В одном из примеров ответ об ошибке сохраняет статус верхнего уровня «ok», что демонстрирует: факт успешного принятия запроса сервером не означает успешного исполнения ордера. Всегда читайте детальную запись по конкретному ордеру.
Та же документация позволяет присваивать ордеру опциональный клиентский идентификатор (cloid) — 128-битную шестнадцатеричную строку, выбираемую вами перед отправкой. Запрос статуса в Hyperliquid принимает либо oid, либо cloid и возвращает ордер со статусом и меткой времени обновления. Список значений включает open (открыт), filled (исполнен), canceled (отменён), triggered (сработал) и rejected (отклонён), а также множество конкретных причин: отмена из-за нехватки маржи, отмена механизмом предотвращения самоторговли (self-trade prevention), отмена по причине ликвидации или отклонение из-за недопустимой цены тика либо отсутствия ликвидности для рыночного ордера. Если ордер не удаётся найти, API возвращает ответ о неизвестном ордере.
Частичное исполнение требует особого внимания. Текстовый статус может описывать общее состояние ордера, в то время как поле количества показывает иную картину: часть объёма могла исполниться, тогда как остаток всё ещё находится в стакане или был позже отменён. Сверяйте исполненный объём, цену и комиссии по отдельным записям сделок (fills) площадки, а не делайте выводы по единому слову статуса. Руководство по типам ордеров объясняет, почему лимитные, рыночные и триггерные инструкции приводят к разным результатам.
Жизненный цикл транзакции в блокчейне
В сети Solana кошелёк формирует транзакцию, пользователь подписывает её, и она отправляется в сеть. Комиссии оплачиваются в SOL. Если транзакция включена в блок, RPC-узел может возвращать её на повышающихся уровнях подтверждения (commitment): processed (обработана), confirmed (подтверждена) и finalized (финализирована, наиболее надёжный уровень). Транзакция также может выполниться с ошибкой (что всё равно может повлечь списание комиссии) или вообще не попасть в блок и истечь по таймауту. В материале как работают транзакции Solana подробно разбираются подписи, комиссии и подтверждения, а руководство по статусам pending, confirmed и finalized сравнивает, как Bitcoin, Ethereum и Solana используют похожие слова для совершенно разных понятий.
Идентификатором здесь выступает сигнатура (signature) транзакции в Solana или хеш транзакции в других блокчейнах. Он идентифицирует запись в реестре; сам по себе он не подтверждает платёж или сделку. Разъяснение о том, что идентифицирует хеш транзакции, раскрывает эту разницу. Чтобы найти операцию, проверьте сигнатуру Solana в правильном кластере и прочитайте её статус и текст ошибки.
Почему «sent» или «pending» не означает исполнение сделки
Статус «sent» (отправлено) в кошельке обычно означает лишь то, что подписанная транзакция покинула устройство. Это не даёт ответа на вопрос, включила ли её сеть, выполнилась ли она и что именно было куплено. Интерфейс свопа, отображающий «pending» (в ожидании), находится в аналогичном положении: сделка не совершена до тех пор, пока транзакция успешно не исполнится в блоке, а полученный объём определяется тем, что фактически доставила исполненная транзакция в пределах заданных ограничений. Если своп завис, руководство по зависшим или неудачным свопам в Jupiter объясняет, что проверить перед повтором, чтобы вторая попытка не создала дублирующую сделку.
Обратная путаница также распространена. На торговой площадке отправленная инструкция может быть принята на уровне сетевого запроса, но отклонена на уровне торгового движка, либо оставаться неисполненной в стакане часами. «Submitted» (отправлено) описывает исключительно ваше действие, а не реакцию биржевого стакана.
Учебный пример сверки записей
Рассмотрим пример условного трейдера, который вносит обеспечение в стейблкоинах на биржу и затем выставляет лимитный ордер на покупку. Все идентификаторы и метки времени ниже вымышлены.
| Время (UTC) | Событие | Система | Наблюдаемый статус | Что доказывает запись |
|---|---|---|---|---|
| 09:00:05 | Депозит подписан | Блокчейн | Получена сигнатура | Транзакция создана и отправлена в сеть |
| 09:00:20 | Проверка депозита | Блокчейн | Finalized, без ошибок | Перевод зафиксирован в сети |
| 09:02:10 | Баланс площадки | Биржа | Обеспечение зачислено | Площадка выполнила внутреннюю операцию зачисления |
| 09:05:00 | Лимитный бай, cloid 0xA1… | Биржа | В стакане, oid 4411 | Ордер активен, исполнений нет |
| 09:40:00 | Тот же ордер | Биржа | 0.6 of 1.0 исполнено | Частичное исполнение, позиция не полная |
| 10:00:00 | Отмена остатка | Биржа | Отменён | Итоговый размер 0.6 по зафиксированным сделкам |
Только отчёты об исполнении биржи показывают, что именно было куплено. Только запись блокчейна подтверждает зачисление депозита. Шаг подтверждения баланса между ними принадлежит бирже, которая вправе применять собственные правила зачисления после финализации перевода сетью.
Что фиксировать в торговом журнале
Для каждого ордера: площадка, инструмент, сторона, первоначальный объём, лимитная или триггерная цена, ваш cloid (если задавался), биржевой oid, время отправки, каждый статус с меткой времени, а также размер, цена и комиссия каждого частичного исполнения. Для каждой транзакции: блокчейн и кластер, сигнатура или хеш, уровень подтверждения и время его наблюдения, наличие ошибок, уплаченная комиссия и итоговое изменение баланса. Руководство по чтению транзакций в обозревателе блоков показывает, какие поля содержат эти доказательства и чего они подтвердить не могут.
Установка клиентского идентификатора ордера перед отправкой полезна тем, что связывает вашу запись с биржевым реестром, даже если сетевой ответ на запрос был утерян. Шаблон торгового журнала позволяет вести обе колонки параллельно. Смоделированные записи также должны находиться в отдельной графе: встроенные примеры SuperQuant используют синтетические часовые данные и смоделированные исполнения; платформа не выставляет реальных ордеров и не подтверждает рыночные сделки. Сравнение демо-торговли и реального трейдинга объясняет, почему смоделированное и биржевое исполнение представляют собой разные категории доказательств.
Материалы для углубления
Обучающий трек по использованию Solana последовательно разбирает работу с транзакциями, от подписи до проверок в эксплорере. Для изучения торговой стороны совместите его с материалом о различиях лимитных и рыночных ордеров и сохраняйте оба типа идентификаторов в каждой записи журнала. Этот материал носит исследовательский и образовательный характер и не является инвестиционной консультацией.