🇨🇿 Proč na Cardano nejsou flash loan útoky?

Mnoho hacků na platformě Ethereum využilo bleskové půjčky (flash loans). Útočník si může půjčit obrovské množství finančních prostředků bez zajištění, použít je k dosažení zisku a poté půjčku splatit ve stejné transakci. V tomto článku vysvětlíme, proč tento druh útoku nevidíme v Cardano DeFi ekosystému. Pochopíte jednu z výhod UTxO modelu.

Princip bleskových půjček

Blesková půjčka je půjčka, která je vypůjčena a splacena ve stejné transakci. Je to jeden ze způsobů, jak potenciálně dosáhnout značných zisků, aniž byste museli riskovat své vlastní peníze.

Většina z nás zná běžné půjčky. Věřitel půjčuje peníze dlužníkovi, aby je nakonec v plné výši vrátil. Půjčka se obvykle musí splácet plynule po dobu měsíců nebo let. Věřitelé často požadují, aby dlužníci složili zajištění, aby zajistili, že pokud dlužník nebude schopen půjčku splatit, bude věřitel stále schopen získat své peníze zpět. Jedná se o zajištěný úvěr.

Flash půjčky jsou nezajištěné, protože není vyžadováno žádné zajištění. Tento nedostatek zajištění neznamená, že věřitel nedostane své peníze zpět. Místo toho, aby dlužník nabídl zajištění, musí peníze okamžitě vrátit. To se dá zajistit smart kontraktem.

Blesková půjčka je okamžitá. Díky využití atomicity transakcí na Ethereu umožňují flash půjčky uživatelům provádět více akcí v jedné transakci, pokud doba transakce nepřesáhne dobu bloku.

Tento koncept atomicity je pro fungování flash půjček zásadní. Chytrá smlouva pro bleskovou půjčku obvykle zahrnuje vypůjčení finančních prostředků, provedení některých operací (jako je arbitráž nebo likvidace) a následné splacení půjčky, to vše v rámci jediné transakce. Pokud není půjčka splacena do konce transakce, celá transakce je stornována a jako by k půjčce nikdy nedošlo. Tím je zajištěno, že věřitel nepřijde o finanční prostředky, i když je úvěr nezajištěný.

Jinými slovy, atomicita zajišťuje povahu transakcí typu vše nebo nic.

Nejlépe je to vysvětlit na příkladu. Řekněme, že se na nás podílejí tři strany: půjčovací protokol (A), vypůjčovatel (B) a cílový protokol C. Tyto tři akce probíhají v jediné transakci: Půjčka, Akce a Splacení.

  • Půjčit si: Dlužník (B) zahájí transakci vypůjčením finančních prostředků z protokolu na půjčky (A). Tím se odečte zůstatek A a připíše zůstatek B.
  • Akce: Vypůjčovatel (B) poté použije tyto vypůjčené prostředky k interakci s jiným protokolem C. To může být pro arbitráž, likvidaci nebo jakoukoli jinou operaci, která by mohla přinést zisk. Tím se odečte zůstatek B a připíše zůstatek C.
  • Splácení: Nakonec dlužník (B) splatí půjčku podle protokolu na půjčky (A) plus případné poplatky nebo úroky. Tím se odečte zůstatek B a připíše zůstatek A.

Když transakce skončí, zdá se, že k vypůjčení funds ani nedošlo.

Chytré smlouvy na Ethereu mohou být komplexní autonomní programy, které mohou provádět širokou škálu operací a interagovat s jinými smlouvami. To umožňuje komplexní interakce mezi více chytrými smlouvami v rámci jedné transakce, což je klíčový požadavek pro realizaci flash půjčky. Všimněte si také, že v transakci bleskové půjčky se jedná o více zůstatků. Každý zůstatek může být odepsán a připsán vícekrát v jedné transakci.

Mnohé z těchto konceptů se zásadně liší od jednoduchosti skriptů Plutus a modelu UTxO. To je důvod, proč zatím nedošlo k žádnému bleskovému úvěrovému útoku na Cardano.

Proč na Cardano nedochází k žádným bleskovým půjčkám?

Účel a funkčnost validátorových skriptů na Cardano a chytrých smluv na Ethereu se liší, což má dopad na implementaci flash půjček.

Validátorové skripty na Cardano se používají k určení, zda lze utratit UTXO. Dělají to tak, že kontrolují, zda jsou splněny určité podmínky. Pokud podmínky nejsou splněny, transakce není validována a UTXO zůstane nevyužito.

Jedním z dalších důvodů větší bezpečnosti na Cardano je model UTxO.

Každý UTxO je samostatný objekt, který je nezávislý na svém okolí. Model UTxO nemá koncept zůstatků, stejně jako model založený na účtu, který používá Ethereum.

Jeden nebo více UTxO může být vstupem transakce, ve které je lze utratit pouze jednou a úplně. Nové výstupní UTxO budou vytvořeny ze vstupních UTxO.

Na transakci Cardano lze nahlížet jako na jednoduchou funkci, která spotřebovává vstupní UTxO a vytváří výstupní UTxO. UTxO, které vstupují do transakce, jsou neměnné a je možné zajistit exkluzivní přístup. V rámci transakce je zajištěno, aby hodnota všech vstupních UTxO byla shodná s hodnotou všech výstupních UTxO (je to i podmínka smart kontraktů, které implementují flash půjčky).

V Ethereu jsou transakce stavové, což znamená, že mohou změnit stav systému. To je nezbytný předpoklad pro komplexní interakce mezi více smart kontrakty v rámci jedné transakce, což je klíčový požadavek pro realizaci flash půjčky.

Model UTxO je více bezstavový. Během ověřování transakce má skript přístup pouze ke vstupním UTxO, kontextu transakce, Datum a Redeemer. Skript nemá schopnost například interagovat s jinými UTxO v systému.

Klíčový rozdíl mezi Cardano a Ethereum je v tom, že během ověřování skriptu Plutus není možné přesunout UTxO vícekrát na různé adresy. Cardano navíc podporuje řetězení chytrých smluv v jedné transakci. Mohou být zřetězeny přes řadu transakcí.

Cardano zpracovává operace v rámci transakce současně. Jedna transakce Cardano představuje aktivitu, která probíhá současně, nikoli v sérii. To znamená, že tradiční koncept bleskových půjček na Ethereum, kde jsou prostředky půjčovány a spláceny v rámci jedné transakce, se kvůli těmto omezením přímo nepřenáší do Cardana.

Flash půjčky nelze vytvořit na Cardano, protože by bylo nutné použít více transakcí pro půjčování prostředků, použití prostředků a splácení prostředků. Cardano neumožňuje uživatelům vytvářet flash půjčky záměrně.

Bylo by možné nějak vytvořit flash půjčku na Cardano?

Logika skriptu validátoru by musela být následující: povolit utracení tohoto UTxO za podmínky, že bude utraceno zpět na stejnou adresu skriptu. To však nedává smysl. UTxO nelze dočasně vypůjčit v rámci transakce. Protistrana by nemohla používat UTxO.

Závěr

V článku mluvíme o flash půjčkách negativně, protože jsou často využívány k útokům. Sluší se říci, že flash půjčky jsou mocným nástrojem pro obchodníky s potřebnými technickými dovednostmi a znalostmi. Totéž lze říci o Ethereu. Pro některé případy použití je výhodné, že vývojáři mohou řetězit chytré kontrakty v jedné transakci.

SC platformy jsou jen nástroje a lze je použít k budování užitečných finančních služeb nebo je mohou využít hackeři. Cílem celého odvětví je vytvořit takovou platformu, na které bude možné vytvářet spolehlivé a bezpečné služby. Cardano je designováno tak aby zajistilo bezpečí asetů, ale některé věci jsou oproti Ethereu pracnější a složitější na implementaci. Vždy jde o nalezení správné rovnováhy.