🇨🇿 Jak rozumět termínu transakce v transakci

Cardano umožňuje odeslat více aktiv více příjemcům v jedné transakci. Pro tuto vlastnost se někdy používá poněkud nevhodný termín ‚transactions in transaction‘. Pojďme si vysvětlit, jak se liší transakce v síti používající účetního modelu UTxO od transakcí v síti používající účetního modelu založeného na účtech. Dozvíte se také, proč metrika TPS není vhodná pro Cardano, ale je v pořádku ji použít pro Ethereum.

Vliv účetního modelu na transakce a škálovatelnost

Cardano používá účetní model UTxO (neutracený výstup transakce). UTxO představuje určité množství a typ aktiva.

Každá transakce spotřebuje některé UTxO z předchozích transakcí (UTxO jsou vstupem transakce) a vytvoří nové UTxO, které lze použít jako vstupy pro budoucí transakce.

V kontextu transakce můžeme hovořit o vstupních UTxO a výstupních UTxO, nebo jen o vstupech a výstupech. Je to totéž.

Transakce Cardano mění vlastníky UTxO. UTxO má adresu, která označuje, kdo jej vlastní a může jej utratit. Transakční výstupy (UTxO) mají nové adresy, které patří příjemcům transakce. Transakce převádí vlastnictví UTxO z odesílatele na příjemce.

Transakce může mít více vstupů a více výstupů a každý výstup může mít jinou hodnotu a typ aktiva. Každý výstup lze odeslat jinému příjemci.

Globální stav Cardano (zůstatky uživatelů) nefunguje s účty nebo peněženkami v kontextu hlavní knihy. Používá pouze sadu UTxO, což je sbírka všech nevyužitých transakčních výstupů v síti. Sada UTxO představuje aktuální rozložení aktiv mezi uživateli Cardano.

Jaké jsou výhody modelu UTxO pro škálovatelnost?

Možnost odeslat více aktiv více příjemcům snižuje velikost transakce (a tím i poplatek), což je výhodné pro škálovatelnost. To umožňuje, aby se do bloku vešlo více transakcí.

Proces ověření je jednoduchý a efektivní, protože síť potřebuje pouze zkontrolovat, že vstupy transakce jsou platné UTxO z předchozích transakcí a že součet hodnot vstupů je roven nebo větší než součet hodnot výstupů.

Síť nepotřebuje sledovat zůstatky na každém účtu ani provádět žádnou složitou logiku spojenou s chytrými kontrakty, jako to dělá Ethereum (o tom si povíme více později). Cardano nemá povědomí o účtech. Každý UTxO může být ověřen nezávisle na ostatních UTxO, pokud nejsou utraceny stejnou transakcí. Podobné je to v případě ověřování skriptů. Validace skriptu se vždy vztahuje na jeden UTxO.

Model UTxO umožňuje paralelní zpracování transakcí, které nesdílejí žádné vstupy, což může zlepšit škálovatelnost a propustnost. To však také vyžaduje konsensus protokol, který dokáže zpracovat souběžné transakce a vyřešit konflikty.

Dá se říci, že transakce Cardano jsou „paralelní“ v tom smyslu, že mohou obsloužit více příjemců s různými aktivy v jedné transakci. Síť obsluhuje více účastníků v rámci jednoho ověření. Validace s více účastníky je samozřejmě náročnější na počítačové zdroje. Je to ale méně náročné, než kdyby byly vytvořeny samostatné transakce pro stejný počet příjemců.

Pojďme se podívat na model založený na účtu, který Ethereum používá. Je důležité pochopit sdílený globální stav a způsob, jakým Ethereum pracuje s uživatelskými zůstatky, tedy s účty.

Sdílený globální stav Etherea je aktuální stav všech účtů (zůstatků uživatelů) a smluv v síti. Každý účet Ethereum má zůstatek ETH a dalších tokenů. Sdílený globální stav Etherea je nutné uzamknout během zpracování každé jednotlivé transakce, protože vyžaduje (téměř vždy) spuštění kódu.

Transakce jsou jednoduše převody hodnoty z jednoho účtu na druhý, takže pouze aktualizují zůstatky uživatelů. Například transakce odečte 10 tokenů z Alicina účtu a přidá je na Bobův účet.

Tokeny ERC-20 jsou definovány inteligentními smlouvami, které implementují standardní rozhraní pro převody tokenů a zůstatky. Bez použití smart kontraktu není možné převést tokeny ERC-20.

V Ethereu existují dva typy transakcí: transakce převodu hodnoty a transakce chytré smlouvy. Transakce převodu hodnoty může převádět pouze ETH, nikoli jiné tokeny. Může mít pouze jednoho odesílatele a jednoho příjemce. Ethereum může poslat více aktiv v jedné transakci, ale pouze v případě, že transakce zahrnuje provedení chytré smlouvy. Inteligentní smlouva může také implementovat logiku, která může přenášet tyto tokeny různým příjemcům. V Ethereu není příliš obvyklé posílat více aktiv více příjemcům ve srovnání s Cardano.

Zpracování transakce v Ethereu tedy téměř vždy vyžaduje, aby síť provedla kód spojený s transakcí a podle toho aktualizovala stav každého účtu.

Stav každého účtu zahrnuje (kromě jiného) jeho zůstatek a nonce. Nonce je číslo, které počítá, kolik transakcí účet odeslal.

Sdílený globální stav Etherea musí být během tohoto procesu uzamčen, protože každá transakce závisí na stavu účtu odesílatele, který se může změnit v důsledku jiných transakcí.

Pokud například Alice odešle transakci Bobovi s nonce 1 a poté pošle další transakci Carol s nonce 2, síť musí zajistit, aby byla první transakce zpracována před druhou, jinak by to mělo za následek v neplatném přechodu stavu.

Dopad uzamčení sdíleného globálního stavu během zpracování každé jednotlivé transakce je ten, že omezuje škálovatelnost a propustnost sítě.

Uzamčení sdíleného globálního stavu znamená, že transakce, které sdílejí stejného odesílatele nebo příjemce, musí být zpracovány postupně, což může způsobit úzká hrdla a zpoždění. Pokud například Alice odešle 10 transakcí různým příjemcům v krátkém časovém období, každá transakce musí před zpracováním počkat na potvrzení svého předchůdce. To může zvýšit latenci a náklady na každou transakci.

Rozdíl mezi modelem UTxO a modelem založeným na účtu je v tom, že Cardano pracuje s UTxO, které jsou na sobě nezávislé (což umožňuje paralelizaci), zatímco Ethereum pracuje se zůstatky účtů, které jsou na sobě závislé (což si vynucuje sekvenční zpracování).

Pravděpodobně již chápete, že termín „transakce v transakci“ v podstatě odkazuje na možnost odeslat více aktiv více příjemcům v jedné transakci. V terminologii Ethereum bychom mohli říci, že jedna transakce upraví více zůstatků.

Design účetních modelů má vliv nejen na možnosti škálovatelnosti, ale také na měření propustnosti sítí.

O vhodnosti metriky TPS pro blockchainy

TPS (Transactions Per Second) je měřítkem počtu transakcí, které může síť zpracovat za jednu sekundu. TPS nám může sdělit, kolik lidí v daný okamžik síť používá nebo může používat. Metrika TPS předpokládá, že jedna transakce přenese hodnotu mezi jedním odesílatelem a jedním příjemcem. Má to však jeden háček. Tento předpoklad neplatí pro blockchainový průmysl.

TPS se běžně používá k hodnocení výkonu a škálovatelnosti počítačových systémů, zejména těch, které zpracovávají velké množství finančních transakcí, jako jsou platební systémy, směnárny a banky. TPS je vhodný pro běžné finanční systémy, protože transakce obvykle probíhají mezi dvěma účastníky s bankovním účtem.

V blockchainovém průmyslu je možné použít metriku TPS. Má to ale háček. Pokud chceme porovnávat blockchainy s různými účetními modely, je tato metrika nevhodná. Pro Ethereum je metrika TPS vhodnější než pro Cardano.

I když Ethereum dokáže poslat více aktiv více příjemcům v jedné transakci, není to příliš běžné. TPS tedy odpovídá skutečnosti, i když může být nepřesná.

V síti Cardano můžeme vidět složité transakce, které převádějí více aktiv více příjemcům téměř v každém bloku. Metrika TPS je proto nevhodná a neposkytuje přesná čísla.

Za posledních 24 hodin Cardano zpracovalo 18 759 jednoduchých transakcí a 30 481 transakcí SC. Transakce jiné než SC mohou také převádět více aktiv více příjemcům. Je to však běžnější u SC transakcí (typicky u DEX aplikací).

Jeden z nedávných bloků Cardano obsahoval 32 transakcí. Metrika TPS vychází na 1,6. Pokud však blok prozkoumáme blíže, zjistíme, že adres příjemců bylo celkem 62. Pokud bychom podle toho upravili TPS, měli bychom číslo 3.1. V bloku bylo celkem 189 UTxO.

U Etherea by podobný blok s 32 transakcemi měl velmi pravděpodobně pouze 32 příjemců, takže by se upravilo 32 zůstatků.

Pokud chtějí analytici měřit propustnost sítě Cardano, musí jít více do hloubky a podívat se na obsah transakcí. Správná metrika by byla něco jako počet požadavků za sekundu nebo příjemců za sekundu.

Závěr

V širším kontextu je potřeba si uvědomit, že blockchain pravděpodobně nebude plnit funkci transakční sítě typu PayPal. Blockchain neboli platformy pro chytré smlouvy mohou být spíše jakousi hlavní vypořádací vrstvou pro vyšší vrstvy nebo základní vrstvou. Aktiva budou ražena na blockchainu, který bude hlídat jejich měnovou politiku, ale uživatelé je pravděpodobně využijí v jiných sítích. Budoucnost je v tomto ohledu nejistá, ale v tuto chvíli to tak vypadá.

Uživatelé využívají Cardano především prostřednictvím aplikací, o čemž svědčí skladba transakcí v bloku. Má smysl mít více požadavků v transakcích, protože to šetří místo v bloku a uživatelé ušetří na poplatcích.

Článek připravili Cardanians s podporou od Cexplorer.

Přečtěte si celý článek: https://cexplorer.io/article/how-to-understand-transactions-in-transaction