Flash loan kisokos

Csaba Csabai
4 min readFeb 22, 2020

… ezen a héten mindenképpen a csúcs témák közé tartoztak a flashloan segítséggel végrehajtott visszaélések és exchange kirablások. Nézzük mit is jelent ez pontosan.

Vállogatott hozzászólások telegramról a témában:

Aki esetleg nem tudná, hogy mi is ez a flashloan, ami egyébként tényleg egy brutális dolog:

  • Adott tőzsdétől vagy DeFitől kölcsönt tudsz kérni annak készlete erejéig. A kölcsönhöz sem fedezetet nem kell leraknod, sem pedig semmilyen egyéb biztosítékra nincs szükség. Cserébe van neki egy jellemzően minimális díja. (0,1% körül)
  • Egyetlen szabály van, ugyanazon tranzakcióban vissza is kell fizetned a teljes felvett összeget.
  • Hogy közben ezen mennyit nyersz… az rád van bízva.

Mi van akkor ha esetleg mégsem sikerülne a dolog, és a végén nem tudnád visszafizetni a pénzt? Nos semmi. A smart contract úgy van összerakva, hogy ha a végén nem tudja visszafizetni a lóvét, akkor a minernek egyszerűen rollbackelnie (revertelnie) kell a tranzakciót, tehát bármit is csinált a contract, az minden megsemmisül minden kapcsolódó egyéb contractban. Volt..Nincs.

Mégis hogyan tud ez megtörténni egyáltalán és mennyire borítja ez fel a kripto és blockchain ökoszisztémát? A válasz egyszerűen: semennyire, a flashloan alapja mindazon innovációknak, amikről eddig csak beszéltünk. A flashloan nem létezhet blockchain nélkül, de hogy a jövő egyik meghatározó pénzügyi terméke lesz, az már most látható!

Hogyan működik? Adott egy flashloan smartcontract, aminek meg tudod adni, hogy melyik általad készített smartcontractot hívja meg és mennyi pénzt adjon át neki. Az átadandó pénz gyakorlatilag a flashloan pool likviditásának terhéig szinte bármennyi lehet. A gyakorlatban a flashloan contract meghívja az általad készített contactot, átadja neki az adott mennyiségű ethert vagy tokent, majd amikor az lefut, akkor megvizsgálja, hogy visszakapta-e a kölcsön adott ethert vagy tokent. Ha nem, akkor revert, ha igen, akkor happy! Hogy belül mit csinált a contract, azzal a flashloan nem foglalkozik.

A usecasek tárháza szinte végtelen. Persze alap tézis, hogy a flashloan fő célja az, hogy úgy tudd kihasználni a dexek közötti árfolyam különbséget (arbitrázs lehetőséget), hogy ehhez ne kelljen rendelkezned saját likviditással. Viszont ellentétben a hagyományos tőzsdei arbitrázs műveletekkel itt egyszerűen nem tudsz veszíteni (max csak a flash loan fee-t), hiszen ha a dex-ek között megjátszott áttételes művelet mégsem jön össze és veszítenél rajta, akkor jön az “end it’s gone” fázis az egész contract revertelődik és meg sem történté válik a balul sikerült arbitrázs művelet. De emellett akadnak más érdekesebb usecasek is:

Nagyon sok olyan online szerencsejáték cucc van, ami teljesen smartcontract alapon működik. Fogja magát mondjuk 5 ember és berak 1–1 ethert egy dice roll contractba. Mi van akkor, ha mondjuk ez az 1 ethered flashloanból van és nincs erre felkészítve a dice roll contract? Tehát meg lehet hívni contractból is és tud contract is depositálni. A következő fog történni: Ha a flashloanos nyer, viszi a másik 5 ember pénzét, visszafizeti a kölcsönt és nyert 4 ethert. Ha nem ő nyer, akkor a contract automatikusan rollbackelődik, ehhez persze annak is teljesülnie kell, hogy a flashloaner legyen az utolsó depositáló és az ő contractja kezdményezze a dice roll-t. De nyilván ez prognosztizálható vagy legalábbis lehet próba szerencse elven is belehívni az ilyen contactokba. Ha nem nyert a diceroll, akkor a flashloan contract semmissé teszi magát a dice roll eseményt és a depositálát is. Senki nem sérül, senki nem veszíti el a pénzét ám tény, hogy az egyik játékos igen komoly hendikeppel indult.

Igazságos ez? Pont annyira amennyire igazságos volt internetes magazinokat indítani akkor, amikor a print sajtó természetlegesen képtelen volt a napi/heti intenzitásnál nagyobb gyakorisággal működni. Pont annyira, mint amikor az email gyakorlatilag leváltotta a postai levelezést, vagy amennyire igazságos, hogy a tévés celeben kényszerből költöznek youtubera, hiszen ott nagyobb célközönséget érnek el. A játékszabályok folyamatosan változnak. Az okosszerződések revertálhatósága eddig is adott volt, ahol lehetett ott eddig is kihasználták, a flashloan csak azt biztosítja ehhez, hogy közel végtelen erőforrásokkal is rendelkezz mindehhez.

Persze a felhasználási módok tárháza szint végtelen és lényegében minden olyan műveletet lehet a flash loannal exploitálni, ahol az adott művelet atomic szinten hajtódik végre és a végrehajtásához csak egy dolog kell: adott valami fabatkából bírtokolják jó sokat. Etéren majd az összes DAO tud sérülékeny lenni. Ott van az MKR (Maker DAO), ha valaki rendelkezne egyben 80k MKRrel, akkor tetszőleges dolgot meg tudna magának szavaztatni. Hogy miért nem teszi ezt ma meg senki? Azért, mert aki birtokol 80k MKR tokent, az ebben komolyan invesztált és neki érdeke, hogy a projekt stabilan működjön. De mi van akkor, ha valaki a semmiből kap 80k MKR-t mondjuk egy flashloanon keresztül? Vajon esetében is érvényesülnek ezek a magasztosabb célok? Egy frászt. Hogy mi választja el jelenleg az MKR-t attól, hogy valaki egy flash loannal kifossza az egészet? Egyetlen apróság: jelenleg az összes ethereumon futó dex-en összesen nem érhető el egyben 80k MKR token. A uniswapen két hete még 50k MKR token volt elérhető, ehét közepén már csak 16k és ma már mindösszesen 4k. Jól látható, hogy az MKR holderek felismerték ezt a problémát és a kínálat kiszárításával próbálják a lehetőséget is kizárni, amíg nem találnak egy megoldást a támadási vektorra, ami nyilván valamilyen delay process lesz a szavazásokban, ezzel kivédve a flash loan okozta kockázatokat.

--

--

Csaba Csabai

A blogger mindenhol blogger. Gyakran előfordul, hogy telegramon olyan kis esszéket írok, amiket érdemes lenne publikálni, de nincs időm kifejtőst írni…