Change Address je adresa, kterou peněženka použije pro vrácení zbytku při platbě. Bitcoin totiž utrácí vybrané přijaté částky celé. Zbytek po odečtení platby a poplatku obvykle pošle do nového vlastního výstupu. Stále jde o vaše peníze, jen jsou nyní evidované pod jiným výstupem a často i novou adresou.
Alice má dříve přijatých 120 000 sat, tedy nejmenších jednotek bitcoinu, a chce zaplatit 100 000 sat. V našem příkladu tvoří její prostředky jedno UTXO: jeden dosud neutracený výstup předchozí transakce. Ten se při platbě použije jako vstup a utratí celý. Při poplatku 2 000 sat dostane příjemce 100 000 sat a zbývajících 18 000 sat připadne novému výstupu Aliciny peněženky. Je to podobné jako zaplatit větší bankovkou a dostat zpět, ale tady se obě částky rozdělí v jediné transakci. Alice nemusí čekat, až jí příjemce něco vrátí. Peněženka obvykle zvolí adresu pro zbytek sama. V průzkumníku proto může Alice vidět dvě cílové adresy, přestože platila jednomu člověku. Po potvrzení je vratka nové UTXO s vlastním identifikátorem outpoint; není to nevyčerpaná část starého výstupu. Outpoint tvoří identifikátor transakce txid a pořadí výstupu v ní. Při dalších platbách se s ní pracuje jako s ostatními vlastními prostředky. [1]
Skript scriptPubKey jsou podmínky, které musí být splněny při utracení výstupu. Neříkají, proč jste peníze poslali. Blok obsahuje částky a skripty scriptPubKey, nikoli štítky plátce, příjemce nebo vratky. Peněženka pozná vlastní vratné výstupy podle záznamů o odvozování; průzkumník blockchainu nebo analytik jejich účel odhaduje. Pořadí výstupů ani pravidlo, že druhý výstup je vratka, není spolehlivé. Transakce může být bez vratky, mít jeden vratný výstup, více výstupů pod kontrolou odesílatele nebo výstupy několika účastníků. Označení change proto vyjadřuje vztah výstupu k peněžence. Není to samostatná vlastnost zapsaná v protokolu. [1]
Heuristika je odhad podle nepřímých vodítek. Payjoin i CoinJoin umožňují společné sestavení transakce více účastníky, takže jednoduché odhady mohou selhat. BIP je dokument s technickým návrhem či standardem. Běžné heuristiky považují za vratku například výstup se stejným typem skriptu jako vstupy, nezaokrouhlenou částku, novou adresu nebo částku odpovídající výpočtu zbytku. U obvyklé platby se dvěma výstupy mohou takové odhady fungovat a propojit další útraty, každý však má protipříklady. BIP78 Payjoin záměrně narušuje předpoklad společného vlastníka vstupů i rozpoznávání vratky podle typu skriptu nebo zaokrouhlené částky. CoinJoin, hromadné platby a převody mezi vlastními adresami přidávají další nejednoznačnost. Odhad musí uvádět míru nejistoty a podpůrné důkazy; samotná heuristika není důkazem protokolu ani právního vlastnictví. [4] [14]
PSBT je balíček návrhu transakce a doplňujících údajů, který si mohou předat peněženka a podepisující zařízení. Multisig vyžaduje souhlas podle pravidla s více klíči. Údaje o odvození klíčů podle BIP32 u výstupů PSBT umožňují hardwarovému nebo offline podepisujícímu zařízení ověřit navrženou vratku. Zařízení musí samo odvodit příslušný výstup a zkontrolovat, že odpovídá stejným pravidlům peněženky. BIP174 popisuje kontrolu pro jeden klíč i pro Multisig; u více podpisů nestačí, že výstup obsahuje jeden místní klíč. Škodlivý koordinátor sestavující transakci může vratku nahradit vlastním výstupem nebo zbytek skrýt v přemrštěném poplatku. Před podpisem proto na důvěryhodném displeji ověřte výstupy příjemců, celkový poplatek i každou deklarovanou vratku. [5]
Pro výpočet označme vybrané prostředky I, platby příjemcům R, poplatek F a vratku C: C = I − R − F. RPC je programové rozhraní pro zadávání příkazů uzlu. Coin Selection, tedy výběr UTXO, určuje společně vstupy, poplatek a případnou vratku. Přesně odpovídající kombinace vstupů vratný výstup nepotřebuje. Jinak peněženka porovnává zbytek s náklady na vytvoření výstupu a jeho pozdější utracení. RPC fundrawtransaction v Bitcoin Core může doplnit nejvýše jeden vratný výstup a vrací jeho pozici. Při odeslání všech vybraných prostředků příjemcům se vratka záměrně nevytváří. Ruční výběr pomocí Coin Control mění použité vstupy, a tím i výši vratky, ale každý vybraný vstup se spotřebuje celý. Kontrolujte proto výsledné vstupy, částky příjemců, poplatek i vratku, nejen částku platby. [9] [10] [13]
HD Wallet umí z jednoho výchozího tajemství opakovaně vypočítat mnoho klíčů a adres. Odvozovací cesta je návod, kterou adresu takto vypočítat; BIP označuje dokument s technickým návrhem či standardem. HD Wallet obvykle odvozuje adresy pro příjem na externí větvi a adresy pro vrácení na interní větvi. BIP44 označuje change=0 jako externí a change=1 jako interní větev. U účtu pro nativní SegWit tomu odpovídají například cesty m/84'/0'/0'/0/i a m/84'/0'/0'/1/i. Jde o konvenci peněženek, nikoli o pravidlo konsenzu; peněženka založená na deskriptorech může používat jiná pravidla. Nová interní adresa omezuje opakované používání adres. Vrátit zbytek na původní adresu je platné, ale propojí to historii plateb a může usnadnit její přiřazení ke konkrétní osobě. [2] [3]
Zápis xpub níže představuje rozšířený veřejný klíč: umožňuje odvozovat veřejné údaje potomků, nikoli sám podepisovat platby. Seed je tajný výchozí údaj pro odvození klíčů. Výstupový deskriptor popisuje typ skriptu, klíče, údaje o jejich původu a pravidlo odvozování dalších adres. Dvojice wpkh([fingerprint/84h/0h/0h]xpub…/0/*) a …/1/* tak může popsat přijímací i vratnou větev; BIP389 umožňuje vyjádřit více větví společným zápisem. Příznak internal říká peněžence, který deskriptor má použít pro vratku, ale nemění samotný výsledný skript. Při obnově nemusí samotný seed stačit k nalezení všech prostředků. Bez údajů o účtu, typu skriptu a způsobu odvozování může peněženka platné vratné výstupy přehlédnout, přestože potřebné klíče stále existují. [6] [7] [8]
Dust označuje velmi malý výstup posuzovaný podle pravidel uzlu pro předávání transakcí. Příslušný limit se počítá z typu výstupu, odhadované velikosti dat potřebných k jeho pozdějšímu utracení a nastavitelné sazby dust relay feerate. Nejde o jediný univerzální počet satoshi ani o zákaz daný konsenzem. Peněženka může odmítnout i vratku nad tímto limitem, pokud by vytvoření výstupu a jeho pozdější utracení stálo více než vracená částka. Tato ekonomická hranice závisí na současné sazbě poplatku, odhadu budoucí sazby a velikosti skriptu. Nevytvoření vratky zvýší nynější poplatek; příliš drobný výstup zase může být později neúnosně drahé utratit. [12]
Replace-by-fee (RBF) nahrazuje nepotvrzenou transakci jinou transakcí s vyšším poplatkem. RPC bumpfee v Bitcoin Core může rozdíl pokrýt zmenšením vratky, přidáním vstupů nebo vytvořením nového vratného výstupu. Pokud vratka klesne pod hranici pravidel uzlu nebo ekonomické výhodnosti, může zmizet. Utracení nepotvrzené vratky vytváří navazující transakci závislou na původní transakci; její nahrazení může tuto návaznost zneplatnit. Příkaz bumpfee však nahrazení odmítne, pokud peněženka nebo mempool uzlu, tedy jeho fronta nepotvrzených transakcí, už obsahuje transakci utrácející některý výstup původní platby. CPFP (Child Pays for Parent) místo náhrady vytváří navazující transakci, která utratí výstup původní platby pod kontrolou peněženky. Vyšší poplatek této navazující transakce zvýší společnou sazbu obou transakcí, a tím těžaře motivuje k jejich společnému potvrzení. Dokud nejsou náhrady vyřešeny, nepovažujte nepotvrzený txid ani odkaz na výstup outpoint za konečný. [11] [15]
Při obnově potřebujete znovu najít přijímací adresy i adresy pro vratku. U běžné peněženky s jedním podpisem to obvykle zajistí správná Seed Phrase (obnovovací slova), případná používaná passphrase a kompatibilní nastavení peněženky. Seed je tajný výchozí údaj pro odvození klíčů; passphrase je dodatečné heslo, pokud jste jej používali. Každý uživatel tedy nemusí ručně zapisovat deskriptory. U vlastních nastavení nebo Multisig, kde platbu schvaluje více klíčů, však samotná slova nemusejí stačit. Uchovejte i popis peněženky: síť, účet, typ skriptu, odvozování a u Multisig veřejné rozšířené klíče xpub všech účastníků, jejich pořadí a požadovaný počet podpisů. Pokud chybí větev /1/*, může obnova přehlédnout vratky a ukázat menší zůstatek. Ověřujte známé adresy a výstupy obou větví, rozsah i začátek prohledávání historie; test obnovy má potvrdit také možnost připravit a správně podepsat platbu. [2] [6] [7]
Pro nejúplnější obraz čtěte toto heslo společně s Bitcoinová adresa, UTXO, Coin Control, Peněženka, Coin Selection, HD Wallet. Opačným směrem na něj odkazují také Bitcoinová adresa, Coin Control, Soukromí v Bitcoinu, Pseudonymita.