Fingerprint BIP32 to pierwsze 4 bajty HASH160 skompresowanego klucza publicznego. HASH160 oznacza SHA-256, a następnie RIPEMD-160, dwie funkcje obliczające skróty danych. Uzyskane 32 bity zwykle wyświetla się jako 8 znaków szesnastkowych, czyli cyfr i liter. Chain code, dodatkowa informacja do wyprowadzania dalszych kluczy, nie wchodzi do tego krótkiego identyfikatora.
Wyobraź sobie zapiski dotyczące kilku portfeli, które musisz rozróżnić. Fingerprint jest krótką etykietą obliczoną z klucza publicznego zapisanego w ściśle określony sposób. Nie jest bezpośrednim haszem słów kopii ani klucza prywatnego. Sama etykieta nie jest adresem odbiorczym, nie podpisze płatności i nie pozwoli odtworzyć kluczy. Zapisanie jej nie zastępuje więc kopii, z której można naprawdę odzyskać portfel. [1]
BIP32 tworzy drzewo kluczy: z klucza głównego wyprowadza się następne, podobnie jak gałęzie wyrastają ze wspólnego pnia. Zapis rozszerzonego klucza publicznego xpub lub prywatnego xprv zawiera fingerprint klucza nadrzędnego, położonego poziom wyżej. Klucz główny nie ma takiego rodzica, dlatego w tym polu widnieje 00000000. Nie jest to jednak jego własny fingerprint. Aplikacja może pokazywać właśnie własny identyfikator klucza głównego; przed porównaniem ustal, który odczytujesz. [1]
Klucz główny z publicznego wektora testowego BIP32 numer 1 ma własny fingerprint 3442193e. Tymczasem pole rodzica w jego głównym xpub zawiera 00000000. To nie sprzeczność: jedna wartość opisuje sam klucz, a druga jego nieistniejącego rodzica. Wektor testowy to opublikowane dane wejściowe i oczekiwane wyniki służące do sprawdzania programu. Nigdy nie używaj tych powszechnie znanych danych jako podstawy portfela na własne pieniądze. [1]
PSBT to pakiet danych transakcji, który można przekazać urządzeniu do podpisania. Według BIP174 łączy główny fingerprint ze ścieżką wyprowadzania, czyli instrukcją dojścia do konkretnego klucza publicznego. Pochodzenie klucza może też zapisać Output Descriptor, tekstowy opis kluczy i zasad wydawania środków. Gdy urządzenie podpisujące sprawdza resztę z płatności, zgodny fingerprint nie wystarcza. Musi wyprowadzić i porównać rzeczywisty klucz oraz odpowiednie warunki, żeby nie uznać cudzego wyjścia za własne. [2] [3]
Krótki identyfikator oszczędza miejsce, lecz ma ograniczony zakres: 32 bity pozwalają zapisać tylko 4294967296 wartości. Różne klucze mogą więc mieć ten sam fingerprint. To kolizja, a BIP32 wyraźnie wymaga, by programy ją uwzględniały. Zgodność nie sprawdza wszystkich kont, ścieżek ani typów skryptów, czyli reguł wydawania środków. Nie dowodzi też, że dysponujesz potrzebnymi kluczami prywatnymi. [1] [3]
Najpierw upewnij się, że porównujesz ten sam rodzaj identyfikatora na tym samym poziomie drzewa. Różnica może wskazywać na inny seed, tajną podstawę kluczy, albo inną passphrase, dodatkowe hasło. Zanim to uznasz, wyklucz pomylenie pola głównego z polem rodzica. Zgodność uzupełnij sprawdzeniem znanych adresów, ścieżek i zasad wydawania środków. Fingerprint to użyteczna kontrola częściowa, ale nie zastąpi dobrze przechowywanej kopii i sprawdzonej procedury odzyskiwania. [1] [3]
Pełniejszy obraz uzyskasz, czytając to hasło razem z HD Wallet, PSBT, BIP39 passphrase, Output Descriptor. Do tego hasła prowadzą również odsyłacze z SeedQR.