Криптовалюты

Как проверить адрес сдачи Bitcoin на экране аппаратного кошелька

Показываем, что проверить у change output в Bitcoin-транзакции: адрес назначения, сумму, сеть, экран подписывающего устройства и контроль сдачи.

Как проверить адрес сдачи Bitcoin на экране аппаратного кошелька

В Bitcoin кошелёк часто тратит целый выход транзакции, даже если получателю нужна лишь часть суммы. Разница возвращается отдельным выходом, который называют сдачей или change. С точки зрения блокчейна это обычный выход транзакции; принадлежность сдачи именно вашему кошельку определяется его внутренним состоянием и ключами. Поэтому перед подписью важно проверить получателя, сумму, сдачу и комиссию, а не полагаться на то, что каждое приложение одинаково объясняет назначение выходов.

Что такое change output

UTXO – это ещё не потраченный выход предыдущей транзакции. Если кошелёк использует UTXO на 0,01 BTC для платежа 0,006 BTC, он может создать выход получателю, выход сдачи для себя и оплатить комиссию майнерам. Пример упрощён: выбранные входы и размер комиссии зависят от конкретной транзакции. Change не является отдельным видом токена или особой записью в блокчейне; это обычный выход с адресом и условием расходования.

Сам факт, что адрес сдачи новый, не делает его подозрительным. HD-кошельки обычно выводят новые адреса из своего ключевого материала для повышения приватности. Однако программный интерфейс должен правильно распознать его, а пользователь должен удостовериться, что устройство подписи проверяет ожидаемую транзакцию. Подробно о структуре входов и комиссии – в материале о проверке UTXO и комиссии Bitcoin.

Почему сдачу нельзя опознать только по адресу

Сама транзакция не помечает выход как «сдачу владельцу». Кошелёк считает выход своим, потому что может вывести соответствующий публичный ключ или скрипт по своей политике. Блокчейн-наблюдатель видит адреса, суммы и скрипты, но не знает, какой выход интерфейс называет сдачей. Это различие важно: пользователь не должен считать любой второй выход автоматически безопасным.

Аппаратное устройство может показывать получателя и другие детали в соответствии со своей прошивкой и интеграцией, но отображение change зависит от модели и протокола взаимодействия. На некоторых устройствах пользователь видит прямое подтверждение адреса, на других сведения ограничены. Сверяйте инструкцию конкретной модели и не переносите поведение одного кошелька на другой. Ваша цель – понять, какие поля устройство действительно подтверждает перед подписью.

Сверьте сумму получателя, сдачу и комиссию

Начните с назначения платежа: сеть Bitcoin, адрес получателя и сумма должны совпадать с тем, что вы намерены отправить. Проверьте, не перепутана ли единица измерения – BTC и сатоши – и нет ли подмены адреса в буфере обмена. Затем проверьте сумму каждого выхода и размер комиссии. Комиссия платится не отдельному адресу получателя: в обычной модели она равна сумме входов минус суммы всех выходов.

Если кошелёк показывает отдельную строку change, сопоставьте её с ожидаемой сдачей. Если интерфейс не показывает, какой выход внутренний, сравните PSBT или детали транзакции с документированным способом проверки вашего кошелька. Небольшие различия из-за выбора UTXO и округления стоит понять до подписи. Не принимайте решение по общему балансу без разбора входов и выходов. Для предварительного разбора полезен чек-лист UTXO.

Проверьте адрес на самом устройстве

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

Задача экрана устройства – показать сведения, которые подписываются, независимо от потенциально заражённого компьютера. Но экран не может сам понять коммерческое намерение: он подтверждает поля транзакции, а решение о том, верны ли они, остаётся за вами. Если аппаратный кошелёк сообщает, что устройство не может разобрать транзакцию, не соглашайтесь на слепую подпись. Сначала разберитесь, какие именно данные будут подписаны.

Поймите связь сдачи с descriptor

В кошельке на базе descriptor адреса принадлежат заданному набору ключей, скрипту и пути derivation. Для change используется соответствующая внутренняя ветвь, которую wallet-программа отслеживает отдельно. Если импортирована неправильная политика, адрес может быть распознан неверно или не восстановиться при импорте на другое устройство. Узнайте, как в вашем кошельке резервируется политика и как проверить descriptor и условия траты Bitcoin.

Не пытайтесь вручную вычислить адрес сдачи, подставляя публичный ключ в случайный генератор. Формат выходного скрипта, derivation path, индекс и обёртка важны. Для мультиподписного кошелька дополнительно имеет значение порог подписей и ключи участников. Сверьте устройство, которое подписывает, с тем descriptor, который был ранее согласован. Если адрес change неизвестен кошельку, не подписывайте транзакцию, пока не поняли причину.

Как действовать, если сведения расходятся

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

При подозрении на вредоносную подмену смените среду подготовки, проверьте адрес на устройстве и свяжитесь с поддержкой через официальный канал производителя. Не сообщайте seed-фразу для проверки транзакции. Подпись подтверждает содержимое транзакции; если выход уходит злоумышленнику, отменить обычную подтверждённую Bitcoin-транзакцию нельзя. Для разминки рассмотрите общую проверку Bitcoin-перевода.

Мини-чек-лист перед подписью

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

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

Вывод

Change output – обычный выход Bitcoin, который кошелёк распознаёт как принадлежащий своей политике. Проверка требует одновременно понять транзакцию и доверенную процедуру отображения адреса сдачи. Не считайте второй выход сдачей только из-за его позиции; проверьте скрипт, сумму, ожидаемую ветвь и сведения на аппаратном устройстве. Отдельно проверяйте получателя и комиссию, даже если change выглядит правильным.

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