
Fingerprint в кошельке Bitcoin — короткий идентификатор публичного ключа. В происхождении ключа в дескрипторе или в данных для подписи часто указывают отпечаток мастер-ключа и путь до нужной ветви. Отпечаток помогает сопоставить файл с устройством, но из-за длины не заменяет проверку полного адреса, публичного ключа или условий подписи.
Как выглядит отпечаток
BIP32 использует первые четыре байта идентификатора публичного ключа. В текстовом виде это восемь шестнадцатеричных символов, например a1b2c3d4. Нули в начале тоже часть записи. Сумма, баланс и данные последних переводов в отпечаток не входят. Если интерфейс показывает мастер-отпечаток, несколько аккаунтов одного мастер-ключа могут иметь одинаковое значение. Их различают по пути.
У расширенного ключа в сериализованном виде также есть поле отпечатка родителя. Оно относится к непосредственному родителю этого ключа и обычно отличается от мастер-отпечатка в записи происхождения. Перед сравнением прочитайте подпись поля. Если программа показывает одно значение в дескрипторе, а другое после разбора дочернего xpub, это может объясняться разными точками дерева.
Пример с двумя аккаунтами
Допустим, в описании ключа указан a1b2c3d4 и путь m/84′/0′/0′. На устройстве виден тот же мастер-отпечаток, но в приложении выбран путь m/84′/0′/1′. Последняя часть указывает на другой аккаунт. Если адреса при одинаковом индексе различаются, сперва сравните выбранный аккаунт. Для надёжной проверки откройте адрес с тем же индексом и той же ветвью на доверенном экране устройства, затем сопоставьте всю строку.
Бывает обратная ситуация. Кошелёк показывает другую величину при прежнем названии аккаунта. Если восстановление выполняли со словами и дополнительной passphrase, проверьте, что выбран исходный набор параметров. Другая passphrase даёт другой мастер-ключ. Даже похожие названия в меню не делают их одним кошельком. Если применён иной формат импорта, сверьте также тип адресов и настройки сети.
Чего не доказывает совпадение
Четыре байта позволяют записать только 2³² разных значений. У двух различных ключей отпечатки могут совпасть. Программы используют его как подсказку при выборе подписанта, а не как единственное криптографическое доказательство происхождения. Если совпал отпечаток, но устройство показывает другой адрес для тех же параметров, остановитесь и выясните расхождение. Дополнительная проверка особенно важна, если файл подготовила другая программа или его передали через незнакомое устройство.
При мультиподписи сверяйте каждого участника и всё условие расходования. Порог «два из трёх» может остаться тем же даже при замене одного ключа. Отпечаток своего устройства ничего не говорит об остальных участниках. Сравнивайте состав и порядок ключей там, где порядок важен для построения скрипта, а также проверяйте адрес из зарегистрированной конфигурации. Полный набор параметров лучше хранить вместе с рабочими сведениями о дескрипторе.
Что проверять перед подписью
Сопоставьте мастер-отпечаток и путь с тем, что ожидает устройство. Затем проверьте адрес получателя, сумму и то, что устройство правильно распознало сдачу. Для восстановления сравнивайте несколько известных адресов из правильных ветвей. Сами слова восстановления для такой сверки передавать не требуется.
Если задача состоит в том, чтобы проверить исходные настройки после восстановления, полезно пройти проверку резервной копии на отдельном учебном примере. В записи для учёта держите отпечаток вместе с указанием его уровня и полным путём, чтобы позже не сравнивать значения от разных узлов дерева.