Подписать транзакцию на устройстве без подключения к сети можно потому, что подпись и отправка — две разные операции. Одно устройство собирает заготовку операции и знает состояние сети. Второе хранит ключ, подписывает заготовку и в сеть не выходит вовсе. Третье забирает подписанный результат и рассылает его узлам. Ключ при этом не покидает изолированное устройство ни на одном шаге, а риск смещается с кражи ключа на подмену того, что подписывается.
Подпись вне сети — это создание криптографической подписи транзакции на устройстве, не имеющем сетевого соединения, с передачей заготовки и результата через внешний носитель. Сеть в процессе не участвует. Проверку и рассылку выполняет отдельное подключённое устройство.
Почему это работает: механика без упрощений
Формат, который сделал схему стандартной, описан в предложении BIP 174. Назначение сформулировано там прямым текстом: «This transaction format will allow offline signers such as air-gapped wallets and hardware wallets to be able to sign transactions without needing direct access to the UTXO set». Вывод короткий. Подписывающая сторона не обязана видеть состояние сети.
Для этого заготовка несёт в себе всё нужное. Формат описан как двоичная структура, которая содержит информацию, необходимую подписывающей стороне, и хранит подписи по входу, пока их набор не полон. Отсюда и устройство процесса. Данные идут к ключу, а не ключ к данным.
Роли в стандарте разведены по шести позициям. Создатель формирует неподписанную заготовку. Обновляющий добавляет сведения о входах и пути вывода ключей. Подписывающий ставит подпись. Роль у него одна. Объединяющий собирает подписи из нескольких источников. Завершающий вход собирает готовые разблокирующие структуры. Извлекающий проверяет, что по всем входам собраны полные разблокирующие структуры, и формирует транзакцию в сетевом виде, пригодном для рассылки узлам.
В сетях с учётной моделью логика та же, хотя терминология иная. Подпись в Ethereum, как описывает документация сети, подтверждает авторизацию отправителя и создаётся его приватным ключом; хэш транзакции формируется при отправке, после чего операция попадает в пул ожидающих. Понимание состава операции здесь помогает так же, как умение читать данные смарт-контракта в обозревателе: подписывают не «перевод», а конкретный набор полей.
Как понять, что именно подписывается
Это главный вопрос всей схемы. Изолированное устройство не может сверить заготовку с сетью и обязано проверять её внутреннюю согласованность — то есть убеждаться, что переданные вместе с заготовкой сведения о входах, скриптах и типе подписи не противоречат друг другу. Стандарт перечисляет такие проверки явно.
| Проверка подписывающей стороны | Что сверяется | Что ловит проверка | Источник требования |
|---|---|---|---|
| Соответствие несвидетельского входа | Хэш переданного входа и ссылка на предыдущий выход | Подмену сведений о входе, из которой берётся сумма | Раздел о роли подписывающего в BIP 174 |
| Запрет несвидетельской подписи | Наличие свидетельского входа в заготовке | Создание подписи неверного типа | Там же |
| Соответствие скрипта выкупа | Скрипт выкупа и блокирующий скрипт выхода | Подстановку чужого условия расходования | Там же |
| Допустимость типа подписи | Переданный тип подписи, при недопустимом — отказ | Подпись, покрывающую не те части операции | Там же |
| Полнота разблокирующих структур | Все входы на этапе извлечения транзакции | Отправку недоподписанной операции | Роль извлекающего в BIP 174 |
Из таблицы виден и источник риска. Стандарт отмечает, что подписывающей стороне не требуются дополнительные источники данных, поскольку вся необходимая информация содержится в самой заготовке. Удобство оборачивается доверием. Чему изолированное устройство доверяет, то и подписывает.

Что можно исправить, а что уже нет
Границу стоит запомнить. До рассылки исправимо всё. Заготовку можно пересобрать, подпись выбросить, носитель переписать, и ни одно из этих действий не оставляет следа в сети, потому что сеть о заготовке ничего не знает. После рассылки правка невозможна — остаётся только замена операции по правилам конкретной сети.
Отдельно учитывайте природу подписанного файла. Подписанная транзакция ведёт себя как ценная бумага на предъявителя: разослать её может любой, у кого она окажется, и сделать это он способен не сегодня, а через недели, когда состояние счёта будет другим. Удалять подписанные файлы с промежуточного носителя стоит сразу после отправки, иначе забытая копия отправится в сеть позже и при неподходящем состоянии счёта.
Пошаговый порядок
- На подключённом устройстве соберите заготовку: получатель, сумма, комиссия, сведения о входах. Сеть нужна именно здесь, потому что без актуальных сведений о входах и о текущей оценке комиссии заготовка получится негодной.
- Перенесите заготовку на изолированное устройство выбранным носителем — QR-кодом, картой памяти или файлом.
- Сверьте на экране изолированного устройства адрес получателя, сумму, адрес для остатка и размер комиссии. Расхождение в любом поле — повод прервать операцию.
- Подпишите заготовку. Ключ остаётся на устройстве, наружу уходит подпись.
- Верните подписанный результат на подключённое устройство и извлеките транзакцию в сетевом виде.
- Разошлите операцию узлам и дождитесь появления её в пуле, а затем включения в блок.
Сколько это стоит
Суммы условные, названы для иллюстрации структуры издержек. Сама подпись бесплатна: изолированное устройство ничего в сеть не отправляет, и платить за неё некому. Платная часть одна — комиссия сети за включение транзакции, и её размер зависит от веса операции и текущего спроса на место в блоке. Разделение функций по устройствам на размер комиссии не влияет никак: сеть видит обычную подписанную транзакцию и не отличает её от операции, подписанной в подключённом кошельке. Дополнительный расход появляется лишь при ошибке: если заготовка собрана со слишком низкой комиссией, операцию придётся заменять, а это ещё одна подпись и ещё один круг переноса между устройствами.
Задержка в пуле — отдельный сюжет, и решается она заменой операции с повышенной комиссией. Порядок замены разобран в материале о том, как ускорить зависшую транзакцию в Ethereum через повышение комиссии, и при офлайновой подписи он удлиняется на один цикл переноса.
Где в цепочке возникает риск
Риск смещается, а не исчезает. Подменить подпись носитель не может — для этого нужен ключ. Подменить можно заготовку: в неё подставляют свой адрес получателя, свой адрес для остатка или завышенную комиссию, и изолированное устройство подпишет такую заготовку как полностью корректную операцию, не имея возможности сверить её с сетью. Поэтому сверка полей на экране изолированного устройства — единственная защита, а не формальность. Второй участок риска — подписание без чтения полей, когда экран мелкий, а транзакция сложная. Третий участок — забытая копия подписанной транзакции на промежуточном носителе, которая сохраняет силу и остаётся отправляемой в сеть спустя сколько угодно времени. Четвёртый — заготовка, собранная по устаревшему состоянию сети, из-за чего операция уходит с неподходящими входами или номером.
Многоадресные переводы требуют дополнительного внимания. Чем больше выходов в операции, тем сложнее сверить их глазами, и тем выше вероятность пропустить подменённый адрес — здесь полезно заранее понимать, как разделить один перевод на несколько адресов и какие поля при этом появляются в заготовке.
Как не повторить ошибку
- Сверяйте адрес получателя целиком, а не первые и последние символы. Подставной адрес часто подбирают по совпадению краёв.
- Проверяйте адрес для остатка: он принадлежит вашему же кошельку, и подмена именно этого поля заметна хуже всего.
- Сравнивайте комиссию с текущей оценкой по сети до переноса заготовки, а не после подписи.
- Удаляйте подписанные файлы с промежуточного носителя сразу после рассылки операции.
- Держите изолированное устройство изолированным: без обновлений из сети, без сторонних файлов, без совмещения с рабочим компьютером.
- Проверяйте вызов контракта до подписи, если операция обращается к контракту: понять, кто вызывал контракт и с какими параметрами, проще до отправки, чем после.
Итог
Схема с офлайновой подписью разводит три функции по трём устройствам: сборка операции, подпись и рассылка. Ключ наружу не выходит. Это главное свойство схемы. Стандарт BIP 174 делает такой обмен переносимым между разными программами и перечисляет проверки, обязательные для подписывающей стороны. Слабое место при этом смещается на содержимое заготовки, и закрывается оно сверкой полей на экране изолированного устройства. Ни одна часть схемы не защищает от подписи того, что человек не прочитал.
Частые вопросы
Можно ли подписать транзакцию, не зная состояния сети?
Да, и это прямое назначение формата. BIP 174 указывает, что изолированные и аппаратные кошельки получают возможность подписывать операции без непосредственного доступа к набору неизрасходованных выходов. Все сведения, нужные для подписи, передаются внутри заготовки. Состояние сети при этом учитывает устройство, которое заготовку собирало.
Что мешает подменить операцию по дороге к изолированному устройству?
Технически — ничто, и именно поэтому проверка выполняется на экране подписывающего устройства. Носитель может принести изменённую заготовку, но подписать её без ключа нельзя. Стандарт требует от подписывающей стороны сверять согласованность переданных данных: хэш входа со ссылкой на предыдущий выход, скрипт выкупа с блокирующим скриптом выхода, а также допустимость заявленного типа подписи.
Сколько стоит подпись вне сети?
Сама подпись бесплатна: изолированное устройство в сеть не обращается. Платить приходится только комиссию сети за включение транзакции в блок, и она не зависит от того, на каком устройстве ставилась подпись. Дополнительные расходы возникают при замене операции, если комиссия изначально оказалась заниженной.
Что будет с подписанной транзакцией, если её не отправить?
Она останется файлом, который можно отправить позже. Сеть о ней ничего не знает, пока операция не разослана узлам, и по хэшу такую транзакцию обозреватель не найдёт. Это и есть причина удалять подписанные копии: неотправленная операция сохраняет силу и может уйти в сеть при неподходящем состоянии счёта.
Нужны ли для схемы три отдельных устройства?
Ролей в стандарте шесть, а устройств достаточно двух: подключённое собирает заготовку и рассылает готовый результат, изолированное хранит ключ и ставит подпись. Третье устройство появляется в сценариях с несколькими подписями, когда подписи собирают из разных мест и объединяют. Совмещать сборку и подпись на одном подключённом устройстве смысла нет — тогда изоляция теряется.
Материалы по теме
- Как читать данные смарт-контракта в обозревателе — что именно скрывается за словом «перевод» в полях операции.
- Как ускорить зависшую транзакцию в Ethereum через повышение комиссии — порядок замены операции с заниженной комиссией.
- Как разделить один перевод на несколько адресов — какие поля появляются в заготовке при нескольких выходах.
- Как понять, кто вызывал контракт и с какими параметрами — проверка вызова до подписи, а не после.
Вердикт
Изолированная подпись закрывает самую дорогую ошибку — утечку ключа — и открывает другую, дешёвую на вид: подпись непрочитанной заготовки. Из обращений читателей видно, что теряют деньги не на взломе устройства, а на подменённом адресе, который никто не сверил целиком. Польза схемы прямо зависит от дисциплины чтения экрана. Если поля не проверяют, изоляция превращается в ритуал: ключ в безопасности, а средства уходят по подписи владельца.
Разборы транзакций и форматов подписи выходят в нашем Telegram-канале — там же показываем, что видно в заготовке до отправки.
Первоисточники: спецификация BIP 174 о формате частично подписанной транзакции с перечнем ролей и проверок и справочник публичного обозревателя mempool.space о пуле неподтверждённых операций. Данные проверены 20 октября 2026 года.
Обсуждение
Добавить комментарий