Coin Selection to wybór środków, z których portfel buduje transakcję Bitcoin. Saldo nie jest jedną ciągłą kwotą: składa się z oddzielnych, niewydanych wyjść wcześniejszych transakcji, czyli UTXO. Portfel musi wybrać ich tyle, by pokryć płatność i opłatę. Zwykle robi to automatycznie; ręczny wybór nazywa się Coin Control. Sieć sprawdza poprawność gotowej transakcji, ale nie narzuca wszystkim portfelom tego samego sposobu wyboru.
Anna chce zapłacić 60000 sat. Płatność przygotowuje jej portfel: aplikacja lub urządzenie umożliwiające odbieranie i wysyłanie bitcoinów. Skrót sat oznacza satoshi, najmniejszą jednostkę, w której zapisuje się kwoty w transakcjach Bitcoin. Ma UTXO o wartości 100000 sat. Podobnie jak przy płaceniu banknotem nie może odjąć tylko części: wejście nowej transakcji wydaje to wyjście w całości. Transakcja tworzy wyjście 60000 sat dla sprzedawcy, a przy opłacie 1000 sat — kolejne 39000 sat dla Anny. To drugie wyjście jest resztą, czyli change. Nie chodzi o późniejszy zwrot od sprzedawcy: reszta powstaje w jej własnej transakcji. Opłata jest różnicą między sumą wejść a sumą wszystkich wyjść. [1] [7]
Portfel może sfinansować tę samą płatność różnymi UTXO. Więcej wejść zwykle oznacza jednak więcej danych, a więc wyższą opłatę przy tej samej stawce. Opłata nie jest procentem przesyłanej kwoty. Zależy od wirtualnego rozmiaru transakcji, mierzonego w vB, czyli wirtualnych bajtach, uwzględniających różną wagę jej części. Załóżmy, że wydanie UTXO 10000 sat wymaga wejścia zajmującego około 68 vB. Przy stawce 10 sat/vB kosztuje ono 680 sat, więc na resztę płatności wnosi 9320 sat. To jego wartość efektywna. Pozostałe części transakcji nadal kosztują; rzeczywisty rozmiar wejścia zależy od warunków wydania zapisanych w skrypcie i danych podpisu. Skrypt to krótki program opisujący warunki wydania środków. Przy zwykłej płatności portfel używa klucza prywatnego, czyli tajnej wartości liczbowej, do utworzenia podpisu cyfrowego: zgody na wydanie środków, którą można zweryfikować. [2] [3] [7]
Anna mogła otrzymać wiele małych kwot. Połączenie ich w większe własne wyjście nazywa się konsolidacją. Później może potrzebować mniej wejść, ale połączenie wymaga opłaty już dziś i publicznie wiąże wykorzystane wyjścia. Dlatego automatyczne łączenie wszystkiego nie jest rozsądnym domyślnym wyborem. Bitcoin Core porównuje też koszty za pomocą waste metric: oceny uwzględniającej różnicę między kosztem wejść teraz a przy założonej stawce długoterminowej, powiększoną o koszt utworzenia i późniejszego wydania reszty albo nadwyżkę przekazaną jako opłatę. Stawka długoterminowa jest założeniem roboczym, nie prognozą. Taka ocena mierzy koszty, a nie prywatność. [2] [6]
Anna oznaczyła jeden wpływ jako pensję, a drugi jako prezent. Wspólne wydanie daje obserwatorowi blockchaina wskazówkę, że są powiązane. Nie dowodzi, że wszystkie wejścia należą do jednej osoby: transakcję może tworzyć wspólnie kilka osób. Coin Control pozwala wybierać konkretne UTXO, a etykiety pomagają pamiętać ich pochodzenie. Etykieta jest notatką w portfelu, nie wiadomością zapisaną w blockchainie. BIP 329 opisuje przenoszenie tych notatek oraz informacji, czy portfel traktuje dane wyjście jako możliwe do wydania. To lokalne ustawienie portfela, które nie zmienia reguł sieci Bitcoin. Sam format nie wybiera środków. Eksport etykiet może ujawnić wrażliwe powiązania, a nawet płatność bez reszty nie gwarantuje anonimowości. [4] [6]
Nie całe wyświetlane saldo musi być od razu dostępne. Portfel może celowo wykluczyć część wyjść, inne czekają na potwierdzenie lub spełnienie warunków wydania. Wybór musi też uwzględniać limity rozmiaru i wagi transakcji. Wydanie niepotwierdzonego wpływu uzależnia nową płatność od wcześniejszej transakcji, która go utworzyła; w tym kontekście nazywa się ją przodkiem. Potwierdzenie całego łańcucha może wymagać dodatkowej opłaty. RPC, interfejs, przez który programy sterują Bitcoin Core 29.0, udostępnia w walletcreatefundedpsbt opcję include_unsafe. Pozwala ona uwzględnić ryzykowne, niepotwierdzone wejścia. Jeśli pierwotna transakcja zostanie zastąpiona tak, że potrzebne wyjście przestanie istnieć, zależna płatność nie może zostać potwierdzona. Samo chwilowe usunięcie pierwotnej transakcji z pamięci węzła nie zmienia natomiast jej poprawności. [3] [5]
Jak portfel przegląda możliwości? Branch-and-bound, czyli BnB, próbuje kombinacji wejść i odrzuca gałęzie poszukiwań, które nie mogą dać odpowiedniego wyniku. Celem jest sfinansowanie płatności bez osobnego wyjścia reszty. Dokładne dopasowanie nie jest konieczne: dozwolony zakres obejmuje nadwyżkę do wysokości kosztu utworzenia i późniejszego wydania reszty. Nadwyżka staje się opłatą, a nie ukrytymi środkami pozostającymi w portfelu. Dlatego płatność bez reszty nie musi być najtańsza. Liczba prób jest ograniczona, więc wyszukiwanie może nie znaleźć istniejącego rozwiązania ani najlepszej ze wszystkich kombinacji. [2]
Bitcoin Core 29.0 porównuje propozycje algorytmów BnB, Knapsack i Single Random Draw (SRD). To różne sposoby znajdowania odpowiedniego zestawu wejść. Dołącza CoinGrinder, gdy efektywna stawka jest wyższa niż trzykrotność stawki długoterminowej; ten algorytm szuka zestawu o małej wadze, z resztą. Wyniki porównuje według opisanej wcześniej waste metric. Jeśli użytkownik wybiera odjęcie opłaty od kwot dla odbiorców, BnB jest pomijany. To opis konkretnej wersji, nie obowiązkowa procedura dla wszystkich portfeli ani stwierdzenie dotyczące najnowszego wydania. [3]
Do zwykłej płatności nie musisz znać parametrów programistycznych. Przed podpisaniem musisz jednak sprawdzić odbiorcę, kwotę, łączną opłatę i własną resztę. Dla zaawansowanych: walletcreatefundedpsbt w Bitcoin Core 29.0 pozwala wskazać wejścia przez txid, identyfikator pierwotnej transakcji, oraz vout, numer jej wyjścia. add_inputs określa, czy portfel może dodać inne wejścia. Uważaj na różne jednostki: fee_rate używa sat/vB, natomiast feeRate — BTC/kvB, czyli bitcoinów za 1000 wirtualnych bajtów. Wynikiem jest PSBT, format przekazywania przygotowanej transakcji do podpisania. Samo utworzenie PSBT niczego nie wysyła i nie potwierdza płatności. Ani ręczny wybór, ani ten format nie gwarantują właściwego odbiorcy lub poprawności niepotwierdzonych wejść. [5]
Pełniejszy obraz uzyskasz, czytając to hasło razem z UTXO, Coin Control, Change Address, Fee Rate, PSBT, Prywatność w Bitcoinie. Do tego hasła prowadzą również odsyłacze z Watch-only Wallet, Change Address, Inventing Bitcoin.