Zmáčkneš odeslat a co se stane pak? Tahle kapitola sleduje transakci od podepsání až po zápis do bloku a vysvětluje, proč někdy odejde za dvě sekundy a jindy visí půl dne.
Co transakce obsahuje
| Položka | K čemu je |
|---|---|
| Vstupy | odkazy na to, co utrácíš, včetně podpisu |
| Výstupy | komu kolik a na jakou adresu |
| Poplatek | rozdíl mezi vstupy a výstupy, bere si ho miner |
| Nonce nebo pořadí | ochrana proti opakování |
| Podpis | důkaz, že to schválil držitel klíče |
To je celé. Žádné jméno, žádný účel platby, žádná možnost stornovat.
Cesta transakce
Krok, který lidi překvapuje nejvíc, je ten čtvrtý. Transakce nejde přímo do bloku. Čeká ve frontě spolu s dalšími a miner si vybírá.
Poplatek je aukce, ne sazebník
Do bloku se vejde omezené množství dat. Mineři si logicky vybírají transakce s nejvyšším poplatkem na bajt, protože místo je vzácné.
Z toho plynou tři věci:
- Poplatek nezávisí na částce. Poslat miliardu může být levnější než poslat drobné, pokud je ta miliarda v jednom vstupu a drobné v padesáti.
- Cena kolísá podle poptávky. Když je fronta prázdná, projde skoro cokoli. Když je plná, cena vyskočí i desetinásobně během hodiny.
- Nízký poplatek neznamená pomalejší doručení, ale žádné. Transakce může viset dny a nakonec vypadnout z mempoolů úplně.
Když transakce uvízne
Existují dva standardní způsoby, jak ji odblokovat, a oba jsou postavené na tom, že transakce ještě není v bloku:
Nahrazení vyšším poplatkem. Pošleš tutéž transakci znovu, se stejnými vstupy a vyšším poplatkem. Uzly ji přijmou místo té původní, protože je pro minery výhodnější.
Zaplacení dítětem. Utratíš výstup z uvízlé transakce novou transakcí s vysokým poplatkem. Miner ji nemůže zařadit bez té původní, takže musí zpracovat obě, a průměrný poplatek za obě se mu vyplatí.
Obojí funguje jen do zařazení do bloku. Potom už transakci nezměníš ani nezrušíš.
Co v transakci opravdu není
Za zmínku stojí, co lidé očekávají a nenajdou:
- Není tam identita. Adresa je hash klíče, ne jméno. Zároveň je ale všechno veřejné, takže jakmile se adresa jednou spojí s osobou, je zpětně vidět celá její historie.
- Není tam účel platby. Poznámku sice jde do některých sítí připojit, ale je veřejná a nezmizí.
- Není tam možnost vrátit. Refundace znamená novou transakci opačným směrem, kterou musí podepsat příjemce. Když nechce, nestane se nic.
Cvičení
- Proč může být poslání malé částky dražší než poslání velké?
- Transakce visí den v mempoolu. Popiš dva způsoby, jak ji rozhýbat, a kdy který použít.
- Adresa je jen hash klíče, tedy pseudonym. Proč to přesto neznamená anonymitu?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
- Protože se platí za velikost v bajtech, ne za částku. Malá platba poskládaná z mnoha drobných vstupů má víc podpisů a odkazů, takže zabere víc místa v bloku než jediný velký vstup. Fronta o místo se draží podle bajtů, takže rozhoduje struktura transakce, ne její hodnota. Proto se vyplatí konsolidovat drobné v době levných poplatků.
- Nahrazení vyšším poplatkem, nebo zaplacení dítětem. Nahrazení použiješ, pokud jsi odesílatel a peněženka to umí: pošleš tutéž transakci se stejnými vstupy a vyšším poplatkem. Zaplacení dítětem použiješ, když jsi příjemce nebo když nahrazení není dostupné: utratíš výstup uvízlé transakce s vysokým poplatkem, čímž donutíš minera zpracovat obě. Obojí funguje jen do doby, než se transakce dostane do bloku.
- Protože pseudonym stačí prolomit jednou a odkryje se celá historie. Všechny transakce jsou veřejné a trvalé, takže jakmile se adresa spojí s osobou, například při výběru na burze s ověřením totožnosti, je zpětně dohledatelné všechno, co jí kdy prošlo. Navíc analýza umí adresy shlukovat podle společných vstupů. Anonymita by vyžadovala, aby vazby nebyly viditelné vůbec, což veřejný blockchain z principu neumí.
Shrnutí
- Transakce obsahuje vstupy, výstupy, poplatek a podpis. Žádnou identitu ani účel platby.
- Nejde přímo do bloku, čeká v mempoolu a miner si vybírá podle poplatku za bajt.
- Poplatek je aukce o místo, takže cena kolísá a nízká nabídka může znamenat nezařazení.
- Uvízlá transakce jde rozhýbat nahrazením s vyšším poplatkem nebo zaplacením dítětem.
- Zápis do bloku je nevratný; refundace je nová transakce, kterou musí podepsat příjemce.
Podle čeho si miner vybírá transakce do bloku?
Podle poplatku vztaženého na bajt velikosti transakce, protože místo v bloku je omezené a miner maximalizuje výnos. Absolutní částka převodu na výběr nemá vliv, takže drobná platba poskládaná z mnoha vstupů může být dražší než jeden velký převod.
Co udělat s transakcí, která uvízla v mempoolu?
Buď ji nahradit toutéž transakcí s vyššími poplatky a stejnými vstupy, nebo utratit její výstup novou transakcí s vysokým poplatkem, čímž se minerovi vyplatí zpracovat obě. Obě metody fungují jen do zařazení do bloku, po něm už transakce změnit ani zrušit nejde.
Proč není veřejný blockchain anonymní, když jsou adresy jen hashe klíčů?
Protože historie je veřejná a trvalá, takže jediné spojení adresy s osobou zpětně odkryje všechno, co jí prošlo. K tomu se přidává shlukování adres podle společných vstupů. Pseudonymita tedy chrání jen do prvního odhalení, po kterém už není co skrývat.
