Začněte psát a výsledky vyhledávání se zobrazí zde...

Co dělat se zaseknutou transakcí v síti Ethereum? Návod, postup a vyřešení dlouhotrvajících transakcí

Co dělat se zaseknutou transakcí v síti Ethereum? Návod, postup a vyřešení dlouhotrvajících transakcí
Zdroj: unsplash.com

Pokud jste někdy používali síť Ethereum, možná to znáte sami. Když chcete rychle odeslat transakci, tak se zrovna “něco” pokazí a to vám nadělá spoustu problémů. Nejenže se vaše transakce neodešle, ale celá peněženka se zablokuje i pro transakce následující, což je tak trochu noční můra, protože člověk neví, co se děje.

V tomto článku si proto popíšeme, jak krok za krokem postupovat pro odblokování zaseknuté transakce a také si povíme, proč k jejímu zablokování vůbec dochází. Postup bude popsán v prostředí peněženky MetaMask, ale jak si ukážeme, podobný proces lze učinit i v jiných peněženkách.

Obsah článku o odblokování zaseknuté Ethereum transakce

Proč se transakce zasekla?

Zaseknutí transakce může způsobit mnoho problémů a je proto důležité pochopit princip, proč se tak stalo. Naneštěstí problémů s odchozí platbou může být více, proto se nyní podíváme na ty nejčastější. Následující body mohou rovněž souviset i s tím, že odeslání transakce trvá příliš dlouho.

1) Nízká cena poplatku za Gas

Jedná se o nejčastější důvod zaseknutí nebo zpomalení transakce. Na blockchainu Ethereum transakce probíhá v duchu “kdo víc zaplatí, ten dřív odešle svoji transakci”. V praxi to znamená, že transakce, které mají vyšší Gas (poplatek za provedení) jsou vyřizovány přednostně.

Na nízký Gas fee se uživatel dostane třeba odesláním platby v období nízké vytíženosti blockchainu, a pokud se nestihne transakce vyřídit před zvýšením aktivity, je zařazena až za transakce s vyšším Gas.

Gas je jednotka, ve které se vyjadřují poplatky za jednotlivé úkony v Ethereové síti.

Cenu Gas přiřazuje ke každé transakci samotná decentralizovaná aplikace či peněženka. Toto přiřazování je automatické a reflektuje vytíženost blockchainu, což se odrazí jak na výši poplatku, tak na rychlosti vypořádání transakce. Výši minimální, průměrné a maximální ceny Gas, lze sledovat na volně dostupných trackerech. V případě Etherea můžete transakce čekající na vypořádání vidět v sekci probíhajících transakcí. V době psaní článku na vyřízení čeká zhruba 156 000 transakcí.

Zdroj: etherscan.io
Transakce čekající na vypořádání
Transakce čekající na vypořádání

V pořadníku transakce čeká na to, až ji validátoři ověří a zahrnou do bloku. Výše vašeho zaplaceného poplatku za Gas je tedy odměna pro validátory za to, že vaši transakci ověřili. Jak ovlivnit výši transakce, abyste nebyli “věčně poslední”, si ukážeme dále v tomto článku.

2) Malý zůstatek na peněžence

Dalším důvodem, proč se může transakce zaseknout, je malý finanční zůstatek na peněžence. Na Ethereu za prostou směnu mincí zaplatíte běžně něco kolem 0,00001 ETH – 0,0001 ETH, což dle vytíženosti blockchainu může činit od pár desítek centů až po desítky dolarů.

Pokud tolik etherů na peněžence po odeslání platby nemáte, nemáte už jak zaplatit validátorům za ověření transakce, což znamená, že k jejímu vypořádání nedojde. A protože v Ethereu záleží na pořadí vytvořených transakcí, jak si záhy ukážeme, dojde k blokaci i veškerých dalších plateb.

Řešení je v tomto případě jednoduché – jako prevenci udržovat dostatečný zůstatek na peněžence, aby nedošlo k jeho vyčerpání. Pokud zůstatek i tak vyčerpáte a transakce se tím pádem zasekne, stačí doplnit na peněženku kapitál a transakce bude poté odeslána do fronty na ověření.

3) Problémy v síti či programu peněženky

Nic není dokonalé a proto se může stát, že vznikne problém na straně poskytovatele peněženky, v našem případě MetaMask. Problém s vypořádáním může vzniknout například přetížením softwaru či výpadkem síťových poskytovatelů.

Poznámka

Doplnění: Vzhledem k nynější architektuře většiny nejpoužívanějších blockchainů používají softwarové peněženky síťové poskytovatele, což jsou prakticky centralizovaní prostředníci, kteří vyřizují komunikaci mezi blockchainem a softwarem peněženky. Náhlá nefunkčnost peněženky může být tedy způsobena i výpadkem těchto služeb.

To se stalo např. v dubnu roku 2022, kdy Infura, síťový poskytovatel, jehož služby využívá i naše peněženka MetaMask, měla na několik hodin výpadek. V tu dobu peněženku MetaMask nemohl používat nikdo na světě, kvůli tomu i radikálně klesly poplatky v síti.

Tento problém, který je paralelně s nízkou propustností a vysokými poplatky pro Ethereum a jeho forky typický, má vyřešit aktualizace s názvem Verge, která představí tzv. “stateless” Ethereum, jehož klíčovou vlastností bude, že kdokoliv (i vy s telefonem v ruce, na němž běží MetaMask) bude moci k blockchainu přistupovat lokálně a služby centralizovaných poskytovatelů nebude potřebovat. Ovšem vzhledem k tomu, jak dlouho celý svět čekal na Merge, si asi ještě chvilku počkáme.

Pokud se ve světě kryptoměn trochu vyznáte, můžete si při nefunkčnosti peněženky nejdříve ověřit funkčnost těchto služeb. Většina síťových poskytovatelů transparentně zveřejňuje jejich časovou výkonnost, příkladem může být stránka o stavu Infury, což je, jak plyne z boxu výše, podstatné pro peněženku MetaMask a řadu dalších projektů.

Pokud ale nechcete nic riskovat, doporučujeme kontaktovat oficiální podporu vaší peněženky a nevyhledávat pomoc na internetu. Řada platforem zveřejňuje aktuality o výpadku svých služeb či poskytuje telefonickou podporu nebo podporu přes chat, příkladem může být opět centrum podpory peněženky MetaMask. Dejte si ale pozor, zdali je zákaznická podpora, na níž se obracíte, skutečná a nejedná se o podvod

Oficiální stránky podpory softwarových peněženek po vás NIKDY nebudou chtít vaše přístupové údaje. Svůj seed nikdy nikomu nesdělujte!

Pokud vás k tomu někdo nabádá, je více než pravděpodobné, že se jedná o jednu z forem phishingu či jinou variantu podvodu.

Oprava zaseknutých transakcí

V této části článku si nastíníme postupy, díky kterým je možné zaseknutou transakci odblokovat. Možností, jak to provést, je několik a jsou řazeny od těch nejjednodušších postupů až po ty složitější. V poslední kapitole se pak budeme věnovat odstranění zaseknuté transakce pomocí nastavení jiného nonce, což je již pokročilejší technika řešení této problematiky.

1) Zrychlení transakce

Jak jsme si již řekli, jedním z častých důvodů, proč se transakce v peněžence zasekne, je příliš nízko nastavená cena za Gas. Řešením tohoto problému je zkrátka její navýšení, čímž se vaše transakce posune ve frontě na mnohem vyšší místa a validátoři se k vaší transakci dostanou mnohem dříve. Poplatek je v peněžence MetaMask možné navýšit následovně.

Zrychlení transakce provedete ve své peněžence v záložce transakce a otevřením pole Speed Up. Následně zadáte vyšší cenu v kolonce Gas Price. Po uložení nové výše ceny za Gas se transakce opět odešle pod stejným nonce (číslo transakce). Navýšením ceny za Gas a opětovným odesláním se vaše transakce objeví na vyšších místech v tabulce nevyřízených transakcí, což si můžete překontrolovat podle návodu výše.

Zdroj: metamask.zendesk.com
Tlačítko pro zrychlení/odseknutí Ethereum transakce v MetaMask
Tlačítko pro zrychlení/odseknutí transakce v MetaMask
Poznámka

Jak určit novou cenu za Gas: Určení ideální ceny, která by měla být nízká, aby se nezvyšovaly náklady na transakci, ale zároveň konkurenceschopná, aby se zvýšila transakční rychlost, může být složité. Abyste měli jistotu, že cenu nenastavíte až moc vysokou, ale zároveň dostačující, nejjednodušším řešením je zjistit si přímo před odesláním transakce současnou cenu za Gas na jednotlivých blockchainových prohlížečích. Pro Ethereum je to přímo sekce Gas trackeru na etherscan.io.

Zdroj: etherscan.io
Cena za Gas
Cena za Gas – pro rychlou transakci doporučujeme nastavit cenu u varianty “High”, v tomto případě tedy 11 gwei

2) Zrušení transakce

Zrušení transakce je další možností, jak ji z fronty nevyřízených transakcí odstranit. Tato možnost se hodí především v případě, kdy provádíte více plateb “a ta jedna”, vám z nějakého důvodu blokuje další platby ve frontě. Jejím odstraněním tak umožníte vypořádání těch zbývajících, avšak důvod jejího zaseknutí nevyřešíte.

Postup zrušení transakce je velmi jednoduchý. Stačí v peněžence v záložce transakce kliknout na tlačítko Cancel a transakce se z fronty odstraní. Toto jednoduché řešení má ovšem nepříjemné pozadí.

Zrušení transakce v peněžence MetaMask
Zrušení transakce v peněžence MetaMask

Vzhledem k tomu, že zrušení transakce je v blockchainu považováno jako další transakce, musíte při zrušení počítat s poplatkem ve výši aktuální ceny za Gas. Další podmínkou pro zrušení transakce je její poloha v rámci vypořádání.

Jednoduše řečeno, transakci lze zrušit pouze v případě, že transakce stále probíhá (má status “pending”) a nebo se ještě ani nezačala zpracovávat, protože jsou před ní další transakce pro danou adresu – je ve frontě a má status “queued”.

Ať tak či onak, validátoři ji ještě do žádného bloku nezahrnuli, proto je možné ji ještě nějakým způsobem zvrátit. Pokud vám transakce tímto způsobem zrušit nejde, pokračujte dále.

3) Resetování MetaMask

Tuto metodu lze využít pouze v případě, že je transakce zaseknutá na naší peněžence a ještě nebyla odeslána do síťového mempoolu – místa, v němž se nacházejí všechny transakce čekající na vyřízení a které odposlouchávají navrhovatelé bloků. Způsob, jak zjistit status transakce, jsme si popsali výše; nyní se podíváme na to, jak lze peněženku resetovat a tak z ní odstranit zaseknutou transakci.

Resetování peněženky není nikterak zpoplatněno, dojde pouze k vymazání veškeré historie transakcí, podobně jako u historie procházení webu.

Tato akce zároveň nemá vliv na přihlašovací údaje k peněžence, proto není nutné mít po ruce seed.

V pravé horní části své peněženky otevřete volby My Account a v otevřeném okně zvolte tlačítko Settings. V následujícím okně zvolte možnost Advanced. Dostanete se do záložky, ze které lze provést reset peněženky. Po resetování peněženky můžete vaší transakci znovu odeslat.

4) Změna nonce transakce

Jedná se již o pokročilejší metodu, ke které byste se měli uchýlit pouze v případech, kdy všechny předchozí pokusy o odstranění zaseknuté transakce selhaly. Tento postup použijte, pokud se transakce již nedá zrušit, ale nebyla ještě vyřízena.

Princip, který v tomto postupu využijeme, používá vlastnost blockchainu Etherea zabraňující existenci dvou transakcí se stejným nonce. Proto nejprve vytvoříme novou transakci se stejným account nonce, jako má transakce zaseklá, a zbytek práce již provede systém (zruší sám zaseknutou transakci).

Poznámka

Co je to account nonce?

V prosté češtině je account nonce, či pro naše potřeby pouze nonce, číslo transakce, které se v blockchainu může nacházet pouze jednou, s každou odeslanou transakcí z jedné adresy se tedy zvyšuje o 1. Z toho pro blockchain Etherea plynou následující důležité vlastnosti:

  • Transakce musí být seřazeny za sebou: Každá následující transakce musí mít nonce o 1 vyšší.
  • Transakce se nedají předběhnout: Není možné, aby validátoři do bloku vložili transakci s nonce s hodnotou 2, když pro danou adresu ještě nebyla odeslána transakce s nonce 0. Tento zásadní princip je zároveň řešením našeho problému.

 

Příklad transakce a její hodnoty nonce
Příklad transakce a její hodnoty nonce

Hlavním účelem nonce je zamezení dvojité útraty, neboť každá transakce musí mít nonce unikátní, díky němuž má také své místo ve frontě.

Poznámka

Pozor! Zdejší nonce, či v plném názvu account nonce, není v žádném případě to samé, jako hledané číslo nonce při těžbě Bitcoinu či jiných kryptoměn. Jedná se o úplně odlišný parametr.

Pokud se tedy transakce z nějakého důvodu zasekne, zablokuje i všechny transakce ve frontě za ní. Princip říká, že se nejdříve musí vyřešit transakce s nejnižším nonce. Na obrázku níže se jedná o třetí transakci odshora mající nonce 3. Dvě transakce nad ní mají podle posloupnosti nonce 4 a 5.

Třetí transakce odshora je příčinou celého problému - jakmile validátoři ověří tuto transakci, ihned ověří i dvě další
Třetí transakce odshora je příčinou celého problému – jakmile validátoři ověří tuto transakci, ihned ověří i dvě další

U vyšších transakcí také uvidíte následující hlášku potvrzující, že problémem je skutečně ta nejstarší transakce čekající na vypořádání.

Problémem je transakce s nejnižším nonce
Problémem je transakce s nejnižším nonce

Jak tedy zaseknutou transakci s nejnižší nonce zprůchodnit? V první řadě je potřeba v peněžence povolit možnost manuálního zadávání nonce. To provedeme následovně. Nastavení (Settings) → Pokročilé (Advanced) → Přizpůsobit transakci nonce (Customize transaction nonce). Dle původního nastavení by tato volba měla být vypnutá, proto ji zapněte.

Povolení k zadání libovolného nonce
Povolení k zadání libovolného nonce

Nyní je potřeba zjistit hodnotu nonce zaseknuté transakce. To lze provést buď zadáním transakce do Etherscanu, kde nonce naleznete po otevření pole Více na podobném místě, jako na obrázku výše. Nonce lze také dohledat přímo v peněžence v podrobnostech transakce. V našem případě má zaseknutá transakce nonce s hodnotou 3.

Postup vytvoření nové transakce je v tomto případě stejný, jako při vytváření jakékoliv jiné. Transakci si klidně můžete poslat sami sobě, nemusí mít zároveň žádný obnos (0 ETH). Ujistěte se ovšem, že máte na peněžence dostatek prostředků pro pokrytí poplatků za Gas. Pokud spěcháte, můžete si při nastavení transakce navolit vyšší cenu za Gas, abyste na vyřízení nemuseli čekat dlouho. Po potvrzení prvního formuláře je v dalším okně potřeba zadat nonce zaseknuté transakce, v našem případě tedy 3. Následně vše potvrdíte.

V blockchainu nyní vznikne nová transakce s původním nonce a měla by už proběhnout bez problému. V závislosti na tom, jak velkou cenu za Gas jste zadali, může transakce trvat pár sekund a nebo i několik minut. Jakmile se vypořádá, validátoři se budou moci vrhnout i na zbylé čekající transakce s již vyššími nonce.

Po úspěšném odstranění transakce pomocí jiné nonce nezapomeňte opět volbu manuálního zadávání nonce zrušit, aby vám mohl systém generovat nonce automaticky.

Závěr

Zaseknutá transakce může být velkým problémem při platbách v blockchainových sítích. V tomto článku jsme si popsali důvody, proč k takovému zaseknutí může dojít a následně jsme si uvedli konkrétní postupy, jak se s touto problematikou vypořádat. V závěru článku jsme si popsali postup smazání zaseknuté transakce pomocí nonce, což je již pokročilejší technika.

Postup při řešení zaseknuté transakce byl v článku popsán na peněžence MetaMask, ovšem postup je totožný i pro další peněženky. Vždy si stačí buď přes blockchainový prohlížeč či přes historii transakcí v peněžence zjistit nonce transakce a při tvorbě nové transakce odpovídající nonce zadat.

Líbil se vám tento článek?
3
0

Autor

Soukromý obchodník a investor, který se pohybuje na finančních trzích již od roku 2014. Obchoduje swingové obchodní strategie na forexu, akciích a komoditách. Mezi jeho oblíbené analytické nástroje patří především technická analýza cenového grafu. Své obchodní dovednosti podpořil také veřejnou equity svého obchodního účtu.

Martin získal titul Ph.D. z oboru financí a své znalosti a zkušenosti využívá nejen při vlastním obchodování, ale také při svých analýzách finančních trhů. Díky tomu může čtenářům předat mnoho drobných postřehů z chování trhů, které nemusejí být na první pohled zřejmé, ale tvoří tenkou hranici mezi úspěchem a neúspěch na finančních trzích.

Přečíst více

Bývalý šéfredaktor, softwarový architekt a nadšenec do kyberbezpečnosti a blockchainu. V rámci Finexu se zaměřuje zejména na technická témata v oblasti kryptoměn. Kryptoměny považuje za platidlo budoucnosti řešící řadu problémů s centralizovanou náturou existujících platebních prostředků. DeFi svět považuje za úchvatný a nabízející spoustu skvělých příležitostí.

Přečíst více

Sdílejte tento článek

Mohlo by vás zajímat

Diskuze (0 komentářů)

Připojte se k diskuzi

Tento článek zatím nikdo neokomentoval. Přihlašte se a buďte první! Napište svůj názor a zahajte diskuzi.