ЗНАНИЯ БЕЗ ЛИШНЕГО ШУМА

Fingerprint кошелька Bitcoin. Как сверить отпечаток ключа

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

Два устройства с одинаковым условным отпечатком

Fingerprint в кошельке Bitcoin — короткий идентификатор публичного ключа. В происхождении ключа в дескрипторе или в данных для подписи часто указывают отпечаток мастер-ключа и путь до нужной ветви. Отпечаток помогает сопоставить файл с устройством, но из-за длины не заменяет проверку полного адреса, публичного ключа или условий подписи.

Как выглядит отпечаток

BIP32 использует первые четыре байта идентификатора публичного ключа. В текстовом виде это восемь шестнадцатеричных символов, например a1b2c3d4. Нули в начале тоже часть записи. Сумма, баланс и данные последних переводов в отпечаток не входят. Если интерфейс показывает мастер-отпечаток, несколько аккаунтов одного мастер-ключа могут иметь одинаковое значение. Их различают по пути.

У расширенного ключа в сериализованном виде также есть поле отпечатка родителя. Оно относится к непосредственному родителю этого ключа и обычно отличается от мастер-отпечатка в записи происхождения. Перед сравнением прочитайте подпись поля. Если программа показывает одно значение в дескрипторе, а другое после разбора дочернего xpub, это может объясняться разными точками дерева.

Пример с двумя аккаунтами

Допустим, в описании ключа указан a1b2c3d4 и путь m/84′/0′/0′. На устройстве виден тот же мастер-отпечаток, но в приложении выбран путь m/84′/0′/1′. Последняя часть указывает на другой аккаунт. Если адреса при одинаковом индексе различаются, сперва сравните выбранный аккаунт. Для надёжной проверки откройте адрес с тем же индексом и той же ветвью на доверенном экране устройства, затем сопоставьте всю строку.

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

Из чего состоит сверка. Fingerprint — 8 символов hex. Путь — нужный аккаунт. Адрес — полная строка
Из чего состоит сверка

Чего не доказывает совпадение

Четыре байта позволяют записать только 2³² разных значений. У двух различных ключей отпечатки могут совпасть. Программы используют его как подсказку при выборе подписанта, а не как единственное криптографическое доказательство происхождения. Если совпал отпечаток, но устройство показывает другой адрес для тех же параметров, остановитесь и выясните расхождение. Дополнительная проверка особенно важна, если файл подготовила другая программа или его передали через незнакомое устройство.

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

Два возможных итога. Всё совпало — тот же набор. Путь другой — другой аккаунт. Адрес другой — проверьте схему
Два возможных итога

Что проверять перед подписью

Сопоставьте мастер-отпечаток и путь с тем, что ожидает устройство. Затем проверьте адрес получателя, сумму и то, что устройство правильно распознало сдачу. Для восстановления сравнивайте несколько известных адресов из правильных ветвей. Сами слова восстановления для такой сверки передавать не требуется.

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

Поиск по сайту