61 / 736DESC

Output Descriptor

Deskryptor wyjścia

Odzyskanie kluczy nie zawsze oznacza odnalezienie właściwych adresów. Portfel potrzebuje też reguł, według których je tworzył. Output Descriptor zapisuje je precyzyjnie, tak aby inny zgodny portfel mógł je odczytać. Jest szczególnie ważny przy samodzielnym przechowywaniu środków z użyciem kilku kluczy.

Output Descriptor to tekstowy opis kluczy i reguł, z których portfel ma tworzyć wyjścia Bitcoin — zapisy kwot oraz warunków późniejszego wydania środków. Pomaga odtworzyć właściwe adresy i odnaleźć ich płatności. Sam nie jest transakcją ani pełną kopią zapasową. Może zawierać wyłącznie dane publiczne albo również tajne klucze.

Anna zmienia aplikację, w której obserwuje swój portfel sprzętowy. Chce przenieść podgląd środków bez wpisywania słów odzyskiwania do komputera. Słowa odzyskiwania, nazywane Seed Phrase, są kopią zapasową, z której można odtworzyć klucze portfela. Publiczny descriptor powie nowej aplikacji, których kluczy publicznych użyć i jak uzyskać te same adresy. Pomyśl o nim jak o dokładnej instrukcji budowania adresów, a nie kolejnym haśle. Przy zwykłym portfelu program często sam rozpoznaje standardowe ustawienia. Nietypowa konfiguracja albo Multisig (konfiguracja portfela z kilkoma kluczami do podpisywania) wymagają jednak czegoś więcej niż zgadywania. Descriptor niczego nie przelewa i nie zmienia już otrzymanych płatności. Opisuje reguły, które trzeba zachować podczas odtwarzania portfela. [1] [8]

Klucz prywatny pozwala utworzyć podpis cyfrowy zatwierdzający wydanie środków. Klucz publiczny pozwala taki podpis sprawdzić, ale nie utworzyć. Publiczny descriptor może zawierać xpub, czyli dane pozwalające wyprowadzać kolejne klucze publiczne bez możliwości podpisywania. Pasuje to do Watch-only Wallet: taki portfel obserwuje płatności, lecz sam ich nie wysyła. Nadal należy chronić ten eksport ze względu na prywatność, bo może połączyć wiele twoich adresów i ich historię. Inny descriptor może zawierać xprv, rozszerzony klucz prywatny, albo WIF, zapis pojedynczego klucza prywatnego. To już tajne dane, które mogą umożliwić wydawanie środków na odpowiednich warunkach. Nie wysyłaj ich do internetowego sprawdzacza ani nie przechowuj jak niewinnej notatki. Publiczna konfiguracja nie zastępuje kopii potrzebnych do podpisywania. [1] [8]

Po imporcie Anna porównuje kilka adresów odbiorczych z pierwotnym portfelem. W przypadku portfela sprzętowego sprawdza adresy na jego zaufanym ekranie zgodnie z procedurą producenta. Sprawdza też konfigurację gałęzi reszty, do której przy płatności wraca niewydana część środków. Zgodna nazwa konta nie wystarcza. Zanim zaufa nowej kopii, weryfikuje pełną procedurę odzyskiwania swojego portfela, nie ujawniając niepotrzebnie tajnych kluczy. Jeśli aplikacja nie obsługuje deskryptora albo pokazuje inne adresy, najpierw należy sprawdzić zgodność, sieć i ustawienia. Przepisywanie niezrozumiałego wyrażenia na wyczucie nie jest bezpieczną naprawą. [5] [8]

W portfelu wymagającym dwóch podpisów z trzech nie wystarczą dwa zestawy słów odzyskiwania i wspomnienie, że „to było dwa z trzech”. Do odtworzenia właściwych warunków potrzebne są dane publiczne wszystkich trzech kluczy, zasady ich wyprowadzania i dokładny typ skryptu. Skrypt określa warunki, które trzeba spełnić, aby wydać środki. Techniczny zapis multi(k,...) zachowuje podaną kolejność kluczy; k oznacza wymaganą liczbę podpisów. Wariant sortedmulti(k,...) przy tworzeniu każdego skryptu sortuje wyprowadzone klucze publiczne według ich bajtów. To różne reguły, a nie zamienne nazwy. Zachowaj więc pełny eksport konfiguracji obok osobno chronionych kopii kluczy potrzebnych do podpisywania. Lista nazw urządzeń nie wystarczy. [2] [8]

Po znaku # może występować osiem znaków checksum, czyli sumy kontrolnej opisanej w BIP380. Program wykrywa dzięki niej wiele błędów kopiowania. Nie jest to podpis autora, szyfrowanie ani dowód, że descriptor należy do ciebie. Kto celowo podstawi własne klucze, potrafi też obliczyć nową poprawną sumę. Kontrola zapisu ma więc sens razem z weryfikacją adresów i pochodzenia konfiguracji. Gdy aplikacja zgłasza błąd sumy, najpierw ponownie pobierz oryginalny eksport. Samo wygenerowanie nowej sumy mogłoby jedynie dopasować ją do już uszkodzonego tekstu. [1]

Przed kluczem może znajdować się [fingerprint/path], czyli informacja o jego pochodzeniu, nazywana key origin. Fingerprint to krótki identyfikator klucza wyjściowego, a path to ścieżka, którą uzyskano klucz zapisany dalej. Pomaga to urządzeniu podpisującemu odnaleźć właściwy klucz. Po xpub może wystąpić kolejna ścieżka prowadząca do poszczególnych adresów. Te dwie części mają różne zadania; nie są tylko etykietą konta. Różne klucze mogą przypadkiem mieć ten sam fingerprint, więc nie uwierzytelnia on urządzenia. Eksport publiczny nie może też dowolnie przechodzić przez Hardened Derivation, etap wymagający danych prywatnych. Aplikacja eksportująca musi dobrać odpowiedni poziom klucza. [1]

Gwiazdka w /* oznacza podstawianie kolejnych liczb, na przykład 0, 1 i 2. Taki ranged descriptor opisuje więcej niż jeden adres; przy konkretnej operacji program określa zakres indeksów do przetworzenia. Zapis <0;1> według BIP389 może obejmować dwie gałęzie, zwykle odbiorczą i reszty, jeśli aplikacja go obsługuje. Sam descriptor nie prowadzi jednak listy użytych adresów ani nie zapisuje następnego wolnego numeru. Również gap limit, liczba kolejnych nieużytych adresów kończąca wyszukiwanie, nie jest automatycznie częścią wyrażenia. Nieużyty oznacza tu brak historii transakcji: adres, na który wpłynęły środki później wydane, nie jest adresem nieużytym. Przy odzyskiwaniu może więc być potrzebny dodatkowy stan portfela i przeszukanie odpowiednio szerokiego zakresu. [5] [6] [9]

Wyjście transakcji zawiera scriptPubKey, skrypt określający warunki późniejszego wydania środków. Descriptor mówi, jak go zbudować. Zapis wpkh(KEY) opisuje Native SegWit z jednym kluczem; KEY jest tu symbolem zastępczym, nie prawdziwym kluczem. Otoczenie go przez sh(wpkh(KEY)) zmienia format wyjścia i adres, choć klucz pozostaje ten sam. Inne wyrażenia to pk(), pkh(), wsh(), addr() i raw(). Nie są to zamienne opcje: przykładowo addr() opisuje znany adres, ale nie dostarcza brakujących danych potrzebnych do wydania z niego środków. Ta część służy jako instrukcja konfiguracyjna, nie wymaganiem, by początkujący ręcznie pisał descriptor. [1] [8]

Wyjście Taproot można wydać podpisem klucza albo według dołączonych warunków skryptowych, jeśli je zawiera. Zapis tr(KEY) określa klucz wewnętrzny bez dostępnej ścieżki wydania przez skrypt; tr(KEY,TREE) dodaje drzewo skryptów. Trzeba więc zachować więcej niż listę kluczy. Znaczenie ma również grupowanie skryptów w drzewie: jego zmiana może zmienić wspólny skrót Merkle root i wynikowy adres, mimo że pojedyncze warunki pozostaną te same. Nie każda zamiana gałęzi jednak to powoduje. Miniscript pomaga zapisywać i analizować warunki, a multi_a opisuje wiele podpisów w Tapscript, języku skryptowym Taproot. Żadne z nich samo nie zastępuje pełnego eksportu konfiguracji. [3] [8]

RPC to interfejs umożliwiający przekazywanie poleceń do programu z innego programu lub z wiersza poleceń. W Bitcoin Core 29 polecenie RPC getdescriptorinfo analizuje zapis. Zwraca publiczną postać bez kluczy prywatnych oraz pola checksum, isrange, issolvable i hasprivatekeys. Ostatnie informuje, czy dane wejściowe zawierały klucz prywatny; issolvable nie oznacza, że masz tajne klucze potrzebne do podpisu. Polecenie deriveaddresses pozwala porównać wyprowadzone adresy. Przy imporcie importdescriptors przyjmuje też timestamp, active, internal, range i next_index: początkowy czas wyszukiwania historii, aktywność konfiguracji, oznaczenie wewnętrznej gałęzi reszty, zakres oraz następny indeks adresu. Rescan to ponowne szukanie transakcji w łańcuchu. Zbyt późny timestamp może pominąć starsze płatności; sama zmiana deskryptora ich nie przenosi ani nie usuwa. Po imporcie potrzebna jest nowa kopia portfela. Te polecenia wykonuj we własnej zaufanej instalacji, nie w cudzym formularzu internetowym. [5] [7] [8]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Portfel, Watch-only Wallet, Multisig, PSBT, Miniscript, Bitcoin. Do tego hasła prowadzą również odsyłacze z Watch-only Wallet, Extended Public Key (xpub), PSBT, Samodzielne przechowywanie bitcoinów.

DOC · 001BIP 380 — Generic Output Script DescriptorsSpecyfikacja DOC · 002BIP 383 — multi() and sortedmulti() DescriptorsSpecyfikacja DOC · 003BIP 386 — tr() Output Script DescriptorsSpecyfikacja DOC · 004Bitcoin Core — Output DescriptorsDokumentacja DOC · 005Bitcoin Core RPC — importdescriptorsDokumentacja DOC · 006BIP 389 — Multipath DescriptorsSpecyfikacja DOC · 007Bitcoin Core 29 RPC — getdescriptorinfoDokumentacja DOC · 008Bitcoin Core 29 — Output DescriptorsDokumentacja DOC · 009BIP 44 — Multi-Account Hierarchy for Deterministic WalletsSpecyfikacja
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna