Zpátky na blog

POD KAPOTOU

Anatomie transakce: co se děje mezi klikem a potvrzením

Zmáčkneš „potvrdit" a pak deset vteřin koukáš na kolečko. Rozebereme, co se v těch vteřinách děje, proč platíš poplatek a co znamenají všechna ta pole v detailu transakce.

Mezi klikem na „potvrdit" a hláškou „hotovo" uběhne pár vteřin, během kterých se stane překvapivě hodně. Když víš co, přestanou být tajemné dvě věci, které lidi nejvíc štvou: proč to někdy trvá a proč se platí poplatek i za neúspěšnou transakci.

Transakce je podepsaný příkaz, ne převod peněz

Nepřesouváš mince jako soubory. Vytvoříš instrukci — „z adresy A na adresu B tolik a tolik" — a podepíšeš ji privátním klíčem. Klíč přitom nikdy neopustí tvoje zařízení; podpis je matematický důkaz, že příkaz vydal jeho držitel. Síť si to ověří a stav upraví.

Právě proto je podpis tak citlivá věc. Podepisuješ obsah, ne úmysl. Když ti podvodná stránka podstrčí příkaz „povol mi nakládat se všemi tvými USDC" a ty ho odklepneš, síť poslušně provede přesně to, co jsi podepsal.

Projdi si tu cestu

Nastav poplatek a odešli transakci. Uvidíš, kde se čeká a proč se poplatek vyplatí:

Cesta transakce poplatek mění dobu ve frontě
  1. Podpis Peněženka podepíše instrukci tvým privátním klíčem. Klíč nikam neodchází.
  2. Mempool Transakce čeká ve frontě neodbavených. Tady se rozhoduje podle poplatku.
  3. V bloku Ověřovatel ji zařadil do bloku. Od téhle chvíle je v řetězu.
  4. Potvrzeno Nad blokem přibývají další. Čím víc jich je, tím míň jde s historií hnout.
čeká na tebe

Poplatek: komu a za co

Každá operace v síti stojí výpočetní práci a ta se měří v jednotkách zvaných gasJednotka výpočetní náročnosti. Prostý převod stojí 21 000 gasu, složitý obchod přes kontrakt klidně desetinásobek.. Kolik gasu operace spotřebuje, je dané. Kolik za jednotku zaplatíš, je aukce — a když je síť plná, vyhrávají ti, co nabídnou víc.

Odtud plyne to nepříjemné pravidlo: poplatek platíš za vykonanou práci, ne za úspěch. Když transakce spadne v půlce, práce už proběhla a síť si ji naúčtuje. Proto se u nových kontraktů vyplatí poslat nejdřív malou zkušební částku.

Na Polygonu je to naštěstí drobné Zatímco na Ethereu umí poplatek ve špičce vyskočit na desítky dolarů, na Polygonu se běžně pohybuje v řádu centů. Přesto potřebuješ mít na adrese trochu POL — bez ní neodejde ani ta nejlevnější transakce.

Rozeber si ji na součástky

Když si transakci otevřeš v prohlížeči blockchainu, vysype se na tebe tabulka polí. Klikni na kterékoli a řekneme ti, co znamená:

Pitva transakce klikni na pole

Když se transakce zasekne

Občas transakce visí v mempoolu a nic se neděje — nabídla jsi málo a fronta ji přeskakuje. Řešení je v poli nonce: pošleš novou transakci se stejným nonce, ale vyšším poplatkem. Síť odbaví jen jednu z nich a ta stará tiše zapadne. V peněžence se tomu říká „speed up" nebo „cancel" a dělá přesně tohle.

Důsledek téhož pravidla: transakce z jedné adresy se odbavují v pořadí podle nonce. Když ti visí ta s číslem 42, nemůže projít 43, i kdyby za ni platil kolik chce.

Kolik potvrzení stačí

Jakmile je transakce v bloku, technicky proběhla. Jenže krátce po zařazení může síť ještě přehodit poslední bloky (reorgSituace, kdy si síť srovná dva souběžně navržené konce řetězu a jeden z nich zahodí. Týká se jen posledních bloků, hlubokou historii to nepotká.), takže se čeká na další bloky nad ní. U drobných částek stačí pár potvrzení, u velkých se čeká na finalitu — bod, od kterého by zvrat stál útočníka víc, než kolik by získal.

Pro nás je podstatné, že tenhle celý proces je veřejný v každé fázi. Transakci sharka vidíme už v momentě, kdy vleze do mempoolu — tedy dřív, než se vůbec dostane do bloku. Tam vzniká náskok, na kterém PolyTips stojí.

Nejnebezpečnější transakce je ta nudná Schválení („approve") nepřevádí ani korunu, takže vypadá neškodně. Přitom dává kontraktu právo nakládat s tvými tokeny — někdy bez limitu a natrvalo. Schvaluj jen tam, kde chceš obchodovat, a stará schválení občas zruš.

Co si odnést

  • Transakce je podepsaný příkaz. Podepisuješ obsah, ne úmysl — čti, co odklepáváš.
  • Poplatek platíš za práci, i když transakce spadne. Testuj malou částkou.
  • nonce určuje pořadí. Zaseknutou transakci přebiješ novou se stejným nonce a vyšším poplatkem.
  • Blok = proběhlo. Potvrzení nad ním = už se s tím nehne.
  • „Approve" je nejtišší a nejnebezpečnější transakce, jakou podepíšeš.

Tím máš základ pohromadě: trh, peněženku, řetěz i transakci. Zbytek je trpělivost — a dívat se tam, kde tečou velké peníze.