62 / 736BIP174

PSBT

Częściowo podpisana transakcja Bitcoin

Komputer może przygotować płatność, podczas gdy klucze pozostają w portfelu sprzętowym. PSBT przenosi między nimi projekt transakcji i dane potrzebne do jego sprawdzenia; po zatwierdzeniu urządzenie dodaje podpis. Ten sam format pomaga, gdy jedną płatność musi podpisać kilka osób lub urządzeń.

PSBT to standardowy format przekazywania niedokończonej transakcji Bitcoin między portfelami i urządzeniami, które ją sprawdzają i podpisują. Nazwa oznacza Partially Signed Bitcoin Transaction, czyli częściowo podpisaną transakcję, ale plik może jeszcze nie zawierać żadnego podpisu. Przenosi projekt, dane pomocnicze i podpisy, a nie klucze prywatne. Gdy potrzebne materiały są kompletne, można z niego uzyskać zwykłą transakcję do wysłania do sieci. Podpis cyfrowy to możliwa do sprawdzenia zgoda utworzona za pomocą klucza prywatnego, czyli tajnych danych umożliwiających podpisywanie. Sam klucz nie jest przy tym ujawniany.

Multisig: symulator progu podpisówSprawdź, czy pozostałe klucze w modelu m z n wystarczą do osiągnięcia progu podpisów. Wynik opisuje dostępność podpisów, a nie bezpieczeństwo ani możliwość pełnego odtworzenia portfela.

Anna chce wysłać Pawłowi 60 000 sat, czyli sześćdziesiąt tysięcy najmniejszych jednostek bitcoina. Portfel wykorzystuje jedno wcześniej otrzymane, nadal niewydane wyjście o wartości 100 000 sat. Wyjście zapisuje kwotę oraz warunki, które trzeba spełnić, aby ją wydać. W tym przykładzie portfel proponuje 60 000 sat dla Pawła, 39 000 sat reszty dla Anny i pozostawia 1 000 sat na opłatę. Na razie to tylko instrukcje. Aplikacja zapisuje je w PSBT i przekazuje do portfela sprzętowego, zależnie od urządzenia przez kabel, kod QR lub kartę pamięci. Anna sprawdza płatność na jego ekranie i zatwierdza podpis. Wraca podpis, nie tajny klucz. Przygotowanie płatności nie musi więc odbywać się na urządzeniu uprawnionym do jej podpisania. [1] [4]

Rozszerzenie .psbt nie czyni płatności bezpieczną. Komputer, który utworzył plik, może być przejęty albo po prostu źle skonfigurowany. Anna porównuje odbiorcę z adresem otrzymanym od Pawła, sprawdza kwotę, łączną opłatę oraz powrót reszty do własnego portfela. Przy portfelu sprzętowym kieruje się zaufanym ekranem urządzenia i instrukcją producenta. Oprogramowanie podpisujące weryfikuje również dane pomocnicze i to, które dane obejmuje podpis. Techniczny termin sighash określa, które części transakcji podpis chroni przed zmianami. Początkujący nie powinien zatwierdzać nietypowego trybu bez jego zrozumienia. Jeżeli adres jest błędny lub nie da się zweryfikować opłaty, trzeba sprawdzić projekt, a nie omijać kontrolę. [1]

W portfelu Multisig wymagającym dwóch podpisów z trzech Anna może dodać pierwszy, a Paweł drugi, każde na własnym urządzeniu. Nie muszą wymieniać słów odzyskiwania ani być jednocześnie online. Koordynator, czyli aplikacja organizująca proces, zbiera materiały dotyczące tej samej płatności i łączy podpisy. Każdy podpisujący nadal sam sprawdza, czy chce ją zatwierdzić; koordynator nie podejmuje tej decyzji za niego. BIP 174 nazywa twórcę projektu creator, uzupełniającego dane updater, podpisującego signer, a łączącego odpowiadające sobie wersje combiner. Finalizer składa końcowe dane spełniające warunki wydania wejść, a extractor wydobywa zwykłą transakcję dla sieci. Jeden program często wykonuje kilka ról. To nazwy zadań, nie sześciu obowiązkowych uczestników. [1] [4]

PSBT może ujawnić, które środki zamierzasz wydać, komu płacisz, ile reszty otrzymasz i jak powiązane są adresy. Może też zawierać xpub, czyli publiczne dane do wyprowadzania kolejnych kluczy publicznych, a w połączeniu z regułami portfela również adresów, lub ścieżki wyprowadzania, czyli położenie kluczy w strukturze portfela. Nie wysyłaj pliku do przypadkowego serwisu tylko po to, by odczytać jego zawartość. Podpisany PSBT może również pozwolić komuś dokończyć i rozgłosić konkretną transakcję, na którą wyrażono zgodę, jeśli dostępne są wszystkie potrzebne materiały. Usunięcie własnej kopii nie odwołuje podpisu. Plik nie zastępuje też Seed Phrase (słowa kopii zapasowej służące do odtworzenia kluczy) ani pełnej kopii konfiguracji Multisig: służy konkretnej płatności, a nie odtwarzaniu całego portfela. [1] [4]

Dodanie podpisu nie oznacza, że sieć już wie o płatności. Po złożeniu końcowej transakcji ktoś musi ją rozgłosić. Węzeł to komputer z oprogramowaniem sprawdzającym transakcje i bloki Bitcoin. Węzeł ocenia ją następnie według reguł sieci i własnej polityki przyjmowania transakcji, a górnik może umieścić ją w bloku. Brak podpisu, już wydane wejście i za mała opłata to różne problemy, których sam przycisk „gotowe” nie rozwiązuje. Zanim oprzesz się na tym procesie, przetestuj konkretną kombinację aplikacji, urządzenia i rodzaju portfela. W Bitcoin Core 29 analyzepsbt może wskazać brakujące dane lub podpisy. finalizepsbt może utworzyć ukończoną transakcję; jej wysłanie jest kolejnym krokiem. Nawet udane ukończenie nie jest potwierdzeniem w bloku. [4] [5] [6]

BIP 174 definiuje PSBT jako format binarny zapisujący informacje w parach klucz–wartość. Klucz oznacza tu identyfikator pola, a nie automatycznie klucz prywatny do bitcoinów. Mapa globalna opisuje całą transakcję, mapy wejść — wydawane wyjścia, a mapy wyjść — nowe wyjścia. Oprócz projektu mogą zawierać skrypty, czyli warunki wydania, informacje o pochodzeniu kluczy oraz częściowe podpisy. Dane można zapisać jako plik .psbt albo przedstawić za pomocą Base64, kodowania danych binarnych do postaci tekstowej. Base64 nie jest szyfrowaniem. PSBT nie stanowi nowego typu transakcji w regułach Bitcoina: sieć otrzymuje wynikową transakcję, nie cały plik roboczy. [1]

Urządzenie odłączone od sieci musi wiedzieć, co ma podpisać. UTXO to wcześniejsze wyjście, które nie zostało jeszcze wydane; nowe wejście do niego odsyła. Non-Witness UTXO może przenosić całą poprzednią transakcję, a Witness UTXO konkretne wyjście z kwotą i warunkami wydania. Wymagane dane zależą od rodzaju wejścia i reguł oprogramowania podpisującego. Sprawdza ono między innymi identyfikator poprzedniej transakcji i odpowiednie wyjście, relacje między skryptami oraz dopuszczalny sighash. Brak kwoty nie może zostać uznany za zerową opłatę, a brak dowodów za pomyślną weryfikację. Dane należy uzupełnić zaufaną drogą, nie zgadywać. [1]

Wersja PSBT opisuje budowę formatu, nie liczbę podpisów ani wersję samej transakcji Bitcoin. PSBT v0 przechowuje niepodpisaną transakcję w polu globalnym; pominięcie wersji PSBT oznacza v0. PSBT v2 z BIP 370 wyklucza to pole i rozdziela informacje potrzebne do zbudowania transakcji na osobne pola. Pozwala to dodawać wejścia i wyjścia w granicach dozwolonych zmian i istniejących podpisów. Nie oznacza swobodnego przepisywania podpisanej płatności. Obie strony muszą rozumieć daną wersję; samo stwierdzenie „obsługuje PSBT” nie opisuje więc dokładnie zgodności. [2]

BIP 371 dodaje informacje potrzebne do Taproot, w tym podpisy, skrypty i pochodzenie kluczy. Pola działają zarówno w PSBT v0, jak i PSBT v2. Portfel może więc obsługiwać Taproot w pierwszym formacie bez obsługi drugiego. Podobnie sama obsługa v2 nie oznacza, że urządzenie radzi sobie z każdym scenariuszem Taproot. Podpisywanie ścieżką klucza i wydawanie przez gałąź skryptu to różne sposoby spełnienia warunków wyjścia Taproot. Dla użytkownika sprowadza się to do prostego pytania: czy moja konkretna konfiguracja obsłuży płatność, którą chcę podpisać? Odpowiedź dają dokumentacja i sprawdzony proces, nie skrót na liście funkcji. [3]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Multisig, Hardware Wallet, Cold Storage, Output Descriptor. Do tego hasła prowadzą również odsyłacze z Multisig, Cold Storage, Hardware Wallet, Watch-only Wallet.

DOC · 001BIP 174 — PSBTSpecyfikacja DOC · 002BIP 370 — PSBT Version 2Specyfikacja DOC · 003BIP 371 — Taproot Fields for PSBTSpecyfikacja DOC · 004Bitcoin Core — PSBT HowtoDokumentacja DOC · 005Bitcoin Core 29 RPC — analyzepsbtDokumentacja DOC · 006Bitcoin Core 29 RPC — finalizepsbtDokumentacja
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna