Перейти к содержимому
buybitcoinsmart

Глоссарий / Адреса и ключи

Отпечаток ключа

Что такое отпечаток ключа?
Отпечаток ключа представляет собой первые 32 бита Hash160 публичного ключа, записанные восемью шестнадцатеричными символами; кошельки используют его, чтобы указать, от какого ключа начинается путь производных ключей.

Определено в BIP-32.

Отпечаток является меткой ключа фиксированной ширины, и его ширина определяется форматом, а не выбором отображения. BIP-380 требует ровно 8 шестнадцатеричных символов внутри квадратных скобок дескриптора, и его собственные тестовые векторы отвергают отпечаток из семи символов, отпечаток из девяти символов и отпечаток, содержащий букву за пределами шестнадцатеричного набора. Если кошелек отказывается импортировать ваш дескриптор, сначала посчитайте символы в этом поле.

Как это работает

BIP-32 дает расширенному ключу две идентичности разной длины, и отпечаток является короткой из них. Идентификатор представляет собой Hash160 сериализованного публичного ключа, RIPEMD-160 от SHA-256, при этом цепной код не учитывается, и только первые 32 бита этого идентификатора называются отпечатком. Остальные 128 бит не отбрасываются: BIP-32 указывает, что полный 160-битный идентификатор может использоваться внутри, а короткая форма служит лишь быстрым способом обнаружения родительских и дочерних узлов, поэтому программное обеспечение должно быть готово иметь дело с коллизиями.

Согласованность между полем отпечатка и окружающим его ключом является правилом действительности, а не условностью. Мастер-ключ не имеет родителя и записывает 0x00000000 в поле отпечатка родительского ключа, а пятый тестовый вектор BIP-32, набор, охватывающий ключи, которые должны распознаваться как недействительные, включает и xprv, и xpub с нулевой глубиной и ненулевым отпечатком родительского ключа. Программное обеспечение, которое импортирует любую из этих строк без возражений, не следует спецификации, и это стоит знать, прежде чем доверить ему восстановление.

Где это встречается

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

BIP-380 помещает сведения о происхождении ключа в квадратные скобки перед ключом и строг к ширине: ровно 8 шестнадцатеричных символов, затем жесткие и нежесткие шаги. Его список недопустимых выражений называет три ошибки в одном этом поле: deadbef из семи символов, deadbeeef из девяти и gaaaaaaa, начинающийся с буквы, которая не является шестнадцатеричной цифрой. Все три отвергаются сразу, так что опечатка в отпечатке приводит к ошибке импорта, а не к кошельку, который молча следит за неверной ветвью.

BIP-174 связывает отпечаток размером 4 байта с путем, записанным как 32-битные целые числа в порядке little endian, и для записи глобального расширенного публичного ключа количество этих целых чисел должно совпадать с глубиной, которую объявляет сам xpub. Это количество позволяет подписывающему устройству сопоставить указанный путь с ключом, который ему передали, вместо того чтобы полагаться на метку.

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

Отпечаток ключа vs адрес биткоина

Отпечаток ключа и адрес биткоина начинаются с одного хеша и сразу после этого перестают быть сравнимыми. BIP-32 отмечает, что идентификатор расширенного ключа точно соответствует данным, используемым в традиционных адресах биткоина, а затем не советует записывать этот идентификатор в base58, потому что его прочли бы как адрес, а программное обеспечение кошелька не обязано принимать платежи на сам ключ цепочки. Отпечаток сохраняет 4 из 20 байт идентификатора и записывается простым шестнадцатеричным кодом, поэтому он слишком короток, чтобы его даже случайно приняли за адрес получателя. Восемь шестнадцатеричных символов в дескрипторе говорят, с какого ключа начался путь; адрес говорит, куда разрешено отправлять средства.

Не путать с

Часто задаваемые вопросы

Является ли отпечаток моего кошелька секретом?

Нет, он выводится из публичного ключа и не дает никому возможности тратить средства или выводить адрес. При этом он остается идентификатором, поэтому тот, кто видит одинаковые восемь символов в двух дескрипторах, видит связь между этими двумя ветвями.

Могут ли два разных ключа иметь одинаковый отпечаток?

Да. Отпечаток имеет размер всего 32 бита, поэтому BIP-32 указывает, что программное обеспечение должно быть готово иметь дело с коллизиями и что полный 160-битный идентификатор доступен там, где важна уникальность. Перед отправкой средств сверьте адрес получения, а не только отпечаток.

Читайте далее

Связанные термины

Еще в разделе «Адреса и ключи»

Читать эту страницу на английском