Change Address to adres, którego portfel używa do zwrotu reszty przy płatności. Bitcoin wydaje wybrane otrzymane kwoty w całości. Po odjęciu płatności i opłaty portfel zwykle kieruje pozostałość do nowego własnego wyjścia. Pieniądze nadal należą do ciebie, lecz są zapisane w innym wyjściu, często pod nowym adresem.
Alicja otrzymała wcześniej 120 000 sat, czyli najmniejszych jednostek bitcoina, i chce zapłacić 100 000 sat. W tym przykładzie jej środki stanowią jedno UTXO: niewydane wyjście wcześniejszej transakcji. Staje się ono wejściem płatności i zostaje wydane w całości. Przy opłacie 2 000 sat odbiorca dostaje 100 000 sat, a pozostałe 18 000 sat trafia do nowego wyjścia portfela Alicji. Przypomina to płatność większym banknotem i otrzymanie reszty, ale obie kwoty są rozdzielane w jednej transakcji. Alicja nie czeka, aż odbiorca coś jej odda. Portfel zazwyczaj sam wybiera adres reszty. Dlatego eksplorator może pokazywać dwa adresy docelowe, choć Alicja płaciła jednej osobie. Po potwierdzeniu reszta jest nowym UTXO z własnym identyfikatorem wyjścia outpoint, a nie niewydanym fragmentem starego wyjścia. Outpoint łączy identyfikator transakcji txid z pozycją wyjścia w tej transakcji. W przyszłości można jej użyć tak jak innych własnych środków. [1]
Skrypt scriptPubKey określa warunki wydania wyjścia. Nie wyjaśnia, dlaczego wysłano pieniądze. Blok zawiera kwoty i skrypty scriptPubKey, a nie etykiety płatnika, odbiorcy czy reszty. Portfel rozpoznaje własne wyjścia reszty na podstawie zapisów o wyprowadzaniu adresów; eksplorator blockchainu lub analityk jedynie szacuje ich przeznaczenie. Ani kolejność wyjść, ani założenie, że drugie wyjście to reszta, nie są wiarygodne. Transakcja może nie mieć reszty, mieć jedno wyjście reszty, kilka wyjść kontrolowanych przez nadawcę albo wyjścia należące do kilku uczestników. Określenie change opisuje więc relację wyjścia do portfela. Nie jest odrębną właściwością zapisaną w protokole. [1]
Heurystyka to wnioskowanie z pośrednich wskazówek. Payjoin i CoinJoin pozwalają kilku uczestnikom wspólnie zbudować transakcję, dlatego proste wnioski mogą być błędne. BIP to dokument propozycji technicznej lub standardu. Typowe heurystyki uznają za resztę na przykład wyjście o takim samym typie skryptu jak wejścia, niezaokrągloną kwotę, nowy adres lub kwotę odpowiadającą obliczonej pozostałości. W zwykłej płatności z dwoma wyjściami takie szacunki mogą działać i pozwalać łączyć kolejne wydatki, ale każdy z nich ma kontrprzykłady. BIP78 Payjoin celowo podważa zarówno założenie o wspólnym właścicielu wejść, jak i rozpoznawanie reszty na podstawie typu skryptu lub zaokrąglonej kwoty. CoinJoin, płatności zbiorcze i przelewy między własnymi adresami wprowadzają dodatkową niejednoznaczność. Szacunek musi wskazywać stopień niepewności i dowody, na których się opiera; sama heurystyka nie jest dowodem wynikającym z protokołu ani dowodem prawnej własności. [4] [14]
PSBT to pakiet z projektem transakcji i dodatkowymi informacjami wymienianymi między portfelem a urządzeniem podpisującym. Multisig wymaga zgody według reguły obejmującej kilka kluczy. Informacje o wyprowadzaniu kluczy zgodnie z BIP32 przy wyjściach PSBT pozwalają sprzętowemu urządzeniu podpisującemu lub urządzeniu działającemu offline zweryfikować proponowaną resztę. Urządzenie musi samodzielnie wyprowadzić odpowiednie wyjście i sprawdzić, czy odpowiada ono tym samym regułom portfela. BIP174 opisuje kontrolę zarówno dla jednego klucza, jak i dla Multisig; przy wielu podpisach nie wystarczy, że wyjście zawiera jeden lokalny klucz. Złośliwy koordynator budujący transakcję może zastąpić resztę własnym wyjściem lub ukryć pozostałą kwotę w zawyżonej opłacie. Przed podpisaniem sprawdź więc na zaufanym ekranie wyjścia odbiorców, całkowitą opłatę oraz każde zadeklarowane wyjście reszty. [5]
W obliczeniu I oznacza wybrane środki, R płatności odbiorcom, F opłatę, a C resztę: C = I − R − F. RPC to interfejs programistyczny do przekazywania poleceń węzłowi. Coin Selection, czyli wybór UTXO, wspólnie określa wejścia, opłatę i ewentualną resztę. Dokładnie dopasowana kombinacja wejść nie wymaga wyjścia reszty. W przeciwnym razie portfel porównuje pozostałą kwotę z kosztami utworzenia wyjścia i jego późniejszego wydania. RPC fundrawtransaction w Bitcoin Core może dodać co najwyżej jedno wyjście reszty i zwraca jego pozycję. Przy wysyłaniu wszystkich wybranych środków odbiorcom reszta celowo nie powstaje. Ręczny wybór za pomocą Coin Control zmienia użyte wejścia, a tym samym wysokość reszty, ale każde wybrane wejście nadal jest wydawane w całości. Dlatego sprawdzaj wynikowe wejścia, kwoty dla odbiorców, opłatę i resztę, a nie tylko kwotę płatności. [9] [10] [13]
HD Wallet wyprowadza wiele kluczy i adresów z jednego początkowego sekretu. Ścieżka wyprowadzania wskazuje, który adres obliczyć; BIP oznacza dokument propozycji technicznej lub standardu. HD Wallet zwykle wyprowadza adresy odbiorcze z gałęzi zewnętrznej, a adresy reszty z gałęzi wewnętrznej. BIP44 oznacza change=0 jako gałąź zewnętrzną, a change=1 jako wewnętrzną. Dla konta korzystającego z natywnego SegWit odpowiadają temu na przykład ścieżki m/84'/0'/0'/0/i i m/84'/0'/0'/1/i. Jest to konwencja portfeli, a nie reguła konsensusu; portfel oparty na deskryptorach może stosować inne zasady. Nowy adres wewnętrzny ogranicza ponowne używanie adresów. Zwrot reszty na pierwotny adres jest poprawny, ale łączy historię płatności i może ułatwić przypisanie jej konkretnej osobie. [2] [3]
Zapis xpub poniżej oznacza rozszerzony klucz publiczny: pozwala wyprowadzać publiczne dane kluczy potomnych, ale nie może sam podpisywać płatności. Seed to tajna wartość początkowa do wyprowadzania kluczy. Deskryptor wyjścia opisuje typ skryptu, klucze, informacje o ich pochodzeniu oraz regułę wyprowadzania kolejnych adresów. Para wpkh([fingerprint/84h/0h/0h]xpub…/0/*) i …/1/* może więc opisywać gałąź odbiorczą i gałąź reszty; BIP389 pozwala zapisać kilka gałęzi we wspólnym wyrażeniu. Flaga internal wskazuje portfelowi, którego deskryptora używać dla reszty, ale nie zmienia samego wynikowego skryptu. Przy odtwarzaniu portfela sam seed może nie wystarczyć do odnalezienia wszystkich środków. Bez informacji o koncie, typie skryptu i sposobie wyprowadzania adresów portfel może przeoczyć poprawne wyjścia reszty, mimo że potrzebne klucze nadal istnieją. [6] [7] [8]
Dust oznacza bardzo małe wyjście oceniane zgodnie z zasadami przekazywania transakcji przez węzeł. Odpowiedni próg oblicza się na podstawie typu wyjścia, szacowanej wielkości danych potrzebnych do jego późniejszego wydania oraz konfigurowalnej stawki dust relay feerate. Nie jest to jedna uniwersalna liczba satoshi ani zakaz wynikający z konsensusu. Portfel może zrezygnować z reszty nawet powyżej tego progu, jeśli utworzenie wyjścia i jego późniejsze wydanie kosztowałoby więcej niż zwracana kwota. Ten próg opłacalności zależy od bieżącej stawki opłaty, przewidywanej przyszłej stawki i rozmiaru skryptu. Rezygnacja z reszty zwiększa obecną opłatę; z kolei wydanie zbyt małego wyjścia może się później okazać nieopłacalne. [12]
Replace-by-fee (RBF) zastępuje niepotwierdzoną transakcję inną transakcją z wyższą opłatą. RPC bumpfee w Bitcoin Core może pokryć różnicę przez zmniejszenie reszty, dodanie wejść albo utworzenie nowego wyjścia reszty. Jeśli reszta spadnie poniżej progu wynikającego z zasad węzła lub opłacalności, może zniknąć. Wydanie niepotwierdzonej reszty tworzy transakcję potomną zależną od transakcji pierwotnej; zastąpienie tej ostatniej może unieważnić to powiązanie. Polecenie bumpfee odmówi zastąpienia, jeśli portfel lub mempool węzła, czyli jego zbiór niepotwierdzonych transakcji, zawiera już transakcję wydającą wyjście pierwotnej płatności. CPFP (Child Pays for Parent) tworzy transakcję potomną zamiast zastępować pierwotną. Wydaje ona wyjście pierwotnej płatności kontrolowane przez portfel i ponosi wyższą opłatę. Podnosi to łączną stawkę opłaty obu transakcji, zachęcając górników do wspólnego ich potwierdzenia. Dopóki kwestia zastąpień nie zostanie rozstrzygnięta, nie traktuj niepotwierdzonego txid ani identyfikatora wyjścia outpoint jako ostatecznych. [11] [15]
Przy odtwarzaniu trzeba odnaleźć adresy odbiorcze i adresy reszty. W zwykłym portfelu z jednym podpisem zazwyczaj wystarcza właściwa Seed Phrase (słowa odzyskiwania), używana passphrase, jeśli ją ustawiono, oraz zgodne ustawienia portfela. Seed to tajna wartość początkowa do wyprowadzania kluczy; passphrase jest dodatkowym hasłem, jeśli zdecydowano się na jego użycie. Nie każdy musi więc ręcznie zapisywać deskryptory. Przy niestandardowych ustawieniach lub Multisig, gdzie zgodę określa kilka kluczy, same słowa mogą jednak nie wystarczyć. Zachowaj też opis portfela: sieć, konto, typ skryptu, zasady wyprowadzania, a dla Multisig rozszerzone klucze publiczne xpub wszystkich uczestników, ich kolejność i wymaganą liczbę podpisów. Gdy brakuje gałęzi /1/*, odtwarzanie może pominąć resztę i pokazać niższe saldo. Sprawdzaj znane adresy oraz wyjścia obu gałęzi, zakres wyprowadzania i początek skanowania historii. Test powinien również potwierdzić, że da się przygotować i poprawnie podpisać płatność. [2] [6] [7]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Adres Bitcoin, UTXO, Coin Control, Portfel, Coin Selection, HD Wallet. Do tego hasła prowadzą również odsyłacze z Adres Bitcoin, Coin Control, Prywatność w Bitcoinie, Pseudonimowość.