Co je to "Flash Loan"?

Definice Flash Loan (nebo také Flash Swap, česky něco jako “Blesková pujčka”) s kterou přišel původně projekt Aave (zdroj):

Flash loan umožňuje uživatelům pujčit si z rezervy v rámci jedné transakce, jestliže uživatel nakonec vrátí více likvidity než si pujčil.

Fakticky to tedy znamená že si můžete v rámci jedné Ethereum transakce krátkodobě pujčit třeba 1 milion DAI a nemusíte dávat žádné zajištění. Platíte jen naprosto minimální poplatek za poskytnutí Flash Loan.

Možnosti, které to otevírá jsou neomezené, například:

  • cenové arbitráže mezi DEX
  • migrace pujček/zajištění z jedné DeFi služby na druhou (např. Maker <=> Compound)

Takhle vypadalo využití Flash Loan při nedávném bZx exploitu:


(zdroj)

Uniswap brzy příjde s verzí 2.0, kde budou podporovat FL také:

Další zdroje:

2 Likes

Tady je hezký příklad využití Flash Loan (EN):

(zdroj)

1 Like

Okej, chapu princip, ale jak se teda stavi smart-kontrakty, ktery splnujou tu vlastnost, ze ti vrati vic, nez si uzivatel pujcuje? To se overuje nejak automaticky? Jak dlouhej casovej interval je na to povolenej? To vsechno musi probehnout nejak skrze API predpokladam, ale co kdyz se to nekde zadrhne, co se s tim flash-loanem pak stane? (pokud je to teda mozny)

Základní princip je v tom, že se vše musí stát v jedné transakci (= v jednom bloku).

Napíšeš si smart-kontrakt s funkcí flashloan(). Tahle funkce udělá více věcí naráz - pujčí, něco s těma penězma udělá a pak pujčku vrátí.
Jako uživatel pak jen uděláš transakci ve které zavoláš flashloan().

Flash loan provider jen ověří že jsi peníze vrátil - pokud ne, bude transakce neplatná. Časový intervaly s tim nemaj nic společnýho - vše se děje téměř v jeden okamžik. Nic se nemá kde zaseknout - přinejhorším bude transakce “Failed” a tím pádem jako by sis nikdy nic nepujčil.