Zaseknuté Tranzakcie v Bitcoinovom Mempoole
Určite ste si niekedy všimli, že pri posielaní tranzakcie na Bitcoinovej sieti máte okrem destinačnej adresy, sumy, či poplatku sieti, aj pokročilé nastavenia a preto sa v tomto návode pozrieme na to, čo znamená replace by fee a ako to využiť, keď sa tranzakcia zasekne v mempoole.

Život Tranzakcie
Najskôr je potreba si vysvetliť aspoň základy, ako tranzakcie prebiehajú a akú v tom hrá rolu mempool. Potom čo zadáte destinačnú adresu, sumu, poplatok sieti, podpíšete tranzakciu pomocou súkromného kľúča a zašlete samotnú tranzakciu, tak sa začne šíriť po Bitconovej sieti, kde sa overí či je platná
a následne sa zapíše do mempoolu. Mempool je skratka pre memory pool
a jednoducho povedané, je to miesto, kde čakajú všetky nepotvrdené tranzakcie. Asi každých desať minút sa vyťaží nový blok, v ktorom sú potvrdené tranzakcie vybrané z mempoolu. Kedže každý blok je limitovaný veľkosťou 1MB, ťažiari si z mempoolu vyberú tranzakcie, ktoré ponúkajú najvyššie poplatky, teda odmeny za ich zaradenie do bloku.

Čo Znamená Replace By Fee?
Replace by fee sa dá preložiť ako nahradenie pomocou poplatku. Znamená to, že ak je tranzakcia zaslaná s možnosťou replace by fee (čo je vo väčšine prípadov nastavené ako predvolené) a ak sa tranzakcia zasekne, je možné ju nahradiť s vyšším poplatkom a tým pádom bude väčšia pravdepodobnosť, že sa zaradí do ďaľšieho bloku.
Bitcoinová tranzakcia opúšťa mempool ak je:
- potvrdená, teda zaradená do bloku,
- nahradená novou verziou pomocou replace by fee (viac v BIP 125),
- invalidovaná, ak konfliktuje s ďaľšou tranzakciou, ktorá bola zaradená do bloku skôr (praktický príklad uvedený v sekcii ako zrušiť tranzakciu),
- nahradená tranzakciami s vyšším poplatkom a už nie je dostatok miesta
v mempoole, čo je pomerne neobvyklé alebo - vyprší lehota tranzakcie v mempoole, čo majú memory pooly pôvodne nastavené na dva týždne, ale toho by som sa moc nedržal, lebo keď počet pribúdajúcich tranzakcií klesne, mempooly sa eventuálne vyprázdnia a všetky tranzakcie sa potvrdia, aj s najmenším poplatkom jedného satoshi.
Počet tranzakcií v mempoole a ďaľšie štatistiky môžete sledovať na stránke mempool.space a pri posielaní tranzakcií, najme pri nastavovaní poplatkov sieti sa určite zíde pozrieť na predikcie poplatkov za tranzakcie, kde je pekne rozpísané koľko satoshi je momentálne potrebné aby sa tranzakcia potvrdila
v odhadovanom čase. Určite je dobré podotknúť, že poplatky sa môžu časom zvýšiť, aj potom čo ste svoju tranzakciu odoslali do siete a preto sa ďalej pozrieme na to, ako pretlačiť zaseknutú tranzakciu, ale aj ako nahradiť tranzakciu za kompletne inú, tým pádom ju zrušiť.
Riešenie
V prípade, že používate hardwerovú peňaženku, tak zrejme je od spoločnosti Ledger alebo Trezor, čo sú jedni z najznámejších výrobcov. Bohužiaľ, v čase písania tohto článku, rozhranie ani jednej z uvedených spoločností neumožnuje nahradenie tranzakcií, aj keď umožnujú povolenie replace by fee pri zasielaní. Ale nič nie je stratené, lebo môžme použiť rozhranie peňaženky Electrum, ktorú si môžme s hardwerovou peňaženkou spojiť bez zdieľania seedu. Dokonca samotní výrobcovia doporučujú použitie peňaženky Electrum ako alternatívne rozhranie a nemusíte sa obávať, lebo všetko bude veľmi dôsledne vysvetlené, aspoň to bude snahou tohto návodu.
Jeden z dôvodov prečo výrobcovia hardwerových peňaženiek túto funkciu nepodporujú, može byť, že majú to za nemorálne aby sa dokázala tranzakcia nahradiť po zaslaní a preto aj poukazujú na to, že by to mohol niekto veľmi ľahko zneužiť. Preto je pri obchode treba počkať na potvrdenú tranzakciu.
Nevlastníte Hardwerovú Peňaženku?
Pokiaľ držíte väčšie množstvo kryptomien a ešte nemáte hardwerovú peňaženku, tak by bolo na zváženie do jednej investovať, lebo pokiaľ držíte kryptomeny na burzách, tak nemáte prístup k súkromným kľúčom, takže priamo nevlastníte žiadne kryptomeny. V prípade hardwerovej alebo aj softwerovej peňaženky sa nemusíte báť vykradnutia burzy, nastávajúcich regulacií, či chybe pri zasielaní tranzakcie z burzy. Na druhú stranu, softwerové peňaženky tiež nie sú najbezpečnejšie, ale môžu postačiť ako dočasné riešenie pre menšie množstvo kryptomien.
Každopádne, francúzska spoločnosť Ledger ponúka zakladný model Nano S alebo premiový Nano X s podporou Bluetooth pre prístup cez mobilné zariadenia. V prípade, že chcete podporiť český trh, tak česka firma Trezor ponúka Model One alebo novší Model T s dotykovým displejom, ktorý može prísť používateľovi viac intuitívny.
Inštalácia Peňaženky Electrum
Inštalačné súbory môžete nájsť na oficiálnej stránke electrum.org, kde taktiež nájdete príslušné digitálne podpisy, ktoré môžeme použiť na to, aby sme overili, že stiahnuté súbory neboli na servery zamenené za škodlivé. Podobne ako u Bitcoinu, funguje to na princípe asymetrickej kryptografie.

Vývojár použije hašovaciu funkciu, aby vytvoril digitálny podpis, ktorý zašifruje svojím súkromným kľúčom a tým potvrdí, že podpis naozaj vytvoril vývojár a nie útočník. Príjemca použije vývojárov verejný kľúč na dešifrovanie podpisu a porovná ho s výsledkom hašovacej funkcie na stiahnutých súboroch.

Okrem inštalačných súborov a príslušného digitálneho podpisu, budeme ešte potrebovať verejný kľúč hlavného vývojára Thomasa Voegtlin, ktorý môžme nájsť na GitHube alebo na servery verejných kľúčov ako je napríklad MIT PGP Public Key Server, kde môžme vyhľadať celý kľúč na základe mena, emailovej adresy alebo odtlačku kľúča, čo je skrátená forma, ktorá identifikuje celý kľúč.
Následne, budeme potrebovat PGP program na overenie podpisu. Ak používate operačný systém Windows, tak program so skratkou Gpg4win je pomerne známy a slúži na šifrovanie súborov alebo emailov. Inštalačné súbory s detailnejším návodom môžete nájsť na oficiálnej stránke gpg4win.org. Okrem toho, že Gpg4win má verejný zdrojový kód, tak prichádza s mnohými nástrojmi, ale pre tento účel bude dôležité zaškrtnúť nástroj s názvom Kleopatra pri inštalácií.
Pre podrobnejší postup na overenie podpisu pre operačný systém Windows, odkazujem na návod priamo z oficiálnej stránky Electrum peňaženky, kde môžete nájsť aj návody pre ostatné operačné systémy.
Zjednodušený postup:
- nainštalovať a spustiť Kleopatru (prípadne alternativný program),
- importovať a overiť verejný kľúč vývojára Thomasa Voegtlin,
- verifikovať digitálny podpis s inštalačnými súbormi od peňaženky Electrum,
- skontrolovať, že inštalačné súbory boli verifikované pomocou digitálneho podpisu a importovaným verejným kľúčom od Thomasa Voegtlin a
- nainštalovať samotnú peňaženku Electrum.
Nasledovný screenshot zobrazuje ako by mala vyzerať úspešná verifikácia inštaláčných súborov s pomocou nástroja s názvom Kleopatra.

Alternatívne, môžete zkompilovať zdrojový kód priamo z GitHub stránky pre Electrum, ale je to o niečo zložitejšie a preto to nie je pokryté v tomto návode.
Konfigurácia Peňaženky Electrum
Po následnom spustení aplikácie Electrum, bude potreba si spárovať harwerovú peňaženku alebo v prípade softwerovej peňaženky, bude treba zadať recovery seed pre sprístupnenie k zasielaní tranzakcií. Dokonca, je tu aj možnosť pre vytvorenie novej peňaženky s vygenerovaním nového seedu.
Čo sa týka hardwerových peňaženiek, tak treba zdôrazniť, že seed, tých dvanásť, či dvadsaťštyri slov, nesmieťe zdieľať, lebo slúžia ako prístup k Vašim kryptomenám, preto na nasledovnej strane si predvedieme, že hardwerové peňaženky sa dajú prepojiť aj bez toho a pri odosielaní tranzakcií bude potrebné fyzické potvrdenie na hardwerovej peňaženke.
Na úvodnej strane zadáte ľubovolný názov peňaženky, teda názov súboru, ktorý uchová konfiguráciu peňaženky a bude slúžiť ako prihlasovacie meno.



Opakujem, že pri hardwerových peňaženkách nikam nezadávame seed, tých dvanásť, či dvadsaťštyri slov, lebo slúžia ako prístup k Vašim kryptomenám. Inak povedané, prístup máme iba pomocou fyzickej interakcii s peňaženkou a Electrum slúži len ako rozhranie pre jednoduchšie narábanie. Seed môžete vedieť iba Vy, Vaša hardwerová peňaženka a prípadne ten, kto nájde Váš seed niekde zapisaný alebo vyrazený.

Nakoniec budete požiadaný zvoliť si heslo pre zašifrovanie súboru peňaženky, čo je extrémne dôležité v prípade, že chcete používať Electrum ako softwerovú peňaženku. Toto heslo bude potrebné pri konfirmacií tranzakcií.
Odporúčané Nastavenia
V hornej lište aplikácie kliknite na nástroje a následne na predvoľby. Vo všeobecných nastaveniach môžete nájsť voľbu jazyka a taktiež si zmeňte základnú jednotku z mBTC na BTC.

V záložke tranzakcie je potrebné skontrolovať, či možnosť minúť iba potvrdené mince nie je zaškrtnutá, inak by to mohlo prekážať v nasledovných krokoch.

Ako Nahradiť Tranzakciu Pomocou Vyššieho Poplatku?
V záložke história môžete vidieť všetky tranzakcie, aj tie nepotvrdené. Pravým kliknutím na nepotvrdenú tranzakciu dostanete nasledovný list možností.

Kliknutím na navýšiť poplatok sa zobrazí okno, v ktorom je potreba nastaviť vyšší poplatok, než je aktuálny. Potvrdenie tranzakcie vyžaduje heslo, prípadne fyzické potvrdenie na hardwerovej peňaženke. Zaškrtnutie možnosti konečná, zrušíte možnosť znovu navýšiť poplatok, teda môžnosť replace by fee.

Ako Zrušiť Tranzakciu?
Rovnako ako v predošlom prípade, pri nepotvrdenej tranzakcii máme možnosť navýšiť poplatok, ak sa tranzakcia zasekla v mempoole alebo ju môžme zrušiť pomocou vytvorenia novej tranzakcie s vyšším poplatkom, ktorá bude smerovať na adresu na našej peňaženke. Podotknem, že v predošlom prípade nasledovná možnosť nebola prístupná, lebo tranzakcia bola zaslaná práve na adresu v rovnakej peňaženke.


Ako Zrušiť Tranzakciu Bez Možnosti Replace By Fee?
V prípade, že tranzakcia bola zaslaná bez povolenia replace by fee, budeme musieť nahradiť tranzakciu manuálne.


Skopírujte si zvýraznenú adresu, z ktorej tranzakcia bola odoslaná a prejdite do záložky adresy, kde stlačte Ctrl + F a prilepte skopírovanú adresu.

Pravím kliknutím na adresu, zvoľte možnosť podrobnosti, aby ste otvorili históriu tranzakcií korenšpondujúce k danej adrese.

Zvoľte najnovšiu tranzakciu pred nepotvrdenou tranzakciou, ktorú chcete zrušiť a kliknite na zobraziť detaily. Tranzakcia sa otvorí v novom okne, kde zvolíme exportovanie do súboru.


Aby sme oklamali Electrum, budeme musieť na chvíľku odpojiť svoje zariadenie od internetu a rovnako ako na začiatku, vytvoríme si nový účet, ale s prístupom k tej istej peňaženke.

Kedže nemáme prístup k internetu, Electrum nemá ako načítať tranzakcie z Bitcoinovej siete a preto použijeme exportovanú tranzakciu, aby sme obnovili zostatok na zvolenej adrese.
Teraz si v záložke adresy zvolíme jednu z našich ďaľších adries, na ktorú chceme presmerovať tranzakciu. V tomto prípade bude potreba zaslať celý zostatok, inak by sa mohlo stať, že by ste mali dostatok na zaslanie aj tej tranzakcie, ktorú chceme prepísať, teda zrušiť.

Následne sa otvorí nové okno, kde zvolíme pokročilé nastavenia, aby sme mohli tranzakciu exportovať a použiť, keď obnovíme prístup k internetu.

V nasledovnom okne máme možnosť povoliť replace by fee a taktiež, je potrebné nastaviť vyšší poplatok, než je u tranzakcii, ktorú chceme prepísať, aby sa zaradila do bloku skôr.

Podpíšeme tranzakciu a kedže nemáme prístup k internetu, budeme ju musieť exportovať do súboru.

Obnovíme prístup k internetu a otvoríme si pôvodný účet, kde načítame upravenú tranzakciu.

Tranzakciu zverejníme, inak povedané, odošleme do Bitcoinovej siete, čo bude zrejme požadovať zvolené heslo k účtu a opetovné potvrdenie.

Čo Znamená Child Pays For Parent?
Child pays for parent sa dá preložiť ako dieťa zaplatí za rodiča. Jednoducho, je to metóda, kde používateľ zašle tranzakciu so zostatkom z nepotvrdenej tranzakcie a zadá vyšší poplatok, aby ťažiari museli najskôr potvrdiť predošlú tranzakciu, ktorá sa považuje za parent tranzakciu. Tento trik môžete použiť
v prípade, že sa tranzakcia prichádzajúca na Vašu adresu zasekne a Vy nemáte ako navýšiť poplatok na prichádzajúcej tranzakcii.
Záver
Bitcoin má limitované množstvo a preto by som nebral jeho uchovanie a ani zasielanie na ľahkú váhu. Vždy si dva krát alebo najlepšie viac krát skontrolujte sumu, adresu a zvoľte dostatočný poplatok ako bolo zmienené na začiatku.
Pokiaľ ešte nevlastníte hardwerovú peňaženku, tak by som tú investíciu zvážil a zopakujem na záver, že seed sa nikomu nehovorí a zadáva sa jedine do hardwerovej peňaženky, ovšem to sa nedá uplatniť na softwerové peňaženky, ktoré uchovávajú seed v digitálnej podobe a preto sú zraniteľnejšie.