Czym jest flash loan i jak działa w ramach DeFi?

Czym jest flash loan?
Flash loan to tymczasowa pożyczka on-chain, która musi zostać spłacona w ramach tej samej transakcji, wraz z ewentualną premią. On-chain oznacza, że cała operacja odbywa się bezpośrednio na blockchainie.
W przypadku bezpośredniego flash loan smart contract otrzymuje tymczasowo płynność bez konieczności wcześniejszego zablokowania zabezpieczenia pod tę pożyczkę. Płynność oznacza tutaj dostępną ilość kryptowalut lub tokenów, które protokół może pożyczać. Taka pożyczka nie jest więc zwykłą pożyczką, która pozostaje otwarta przez dni, tygodnie lub miesiące.
Flash loans są przede wszystkim programowalnym elementem budulcowym w DeFi. DeFi to zastosowania finansowe, które działają na blockchainie za pośrednictwem smart contracts. Dlatego użytkownik zazwyczaj nie realizuje flash loan ręcznie, tak jak w przypadku zwykłej pożyczki. Wcześniej zaprogramowany smart contract składa wniosek o pożyczkę, a następnie automatycznie wykonuje wszystkie potrzebne kroki.
W Aave V3 tzw. receiver-contract otrzymuje pożyczone tokeny. Jest to smart contract, który odbiera flash loan i wykonuje zaplanowane działania. Następnie protokół wywołuje callback: z góry określony moment, w którym receiver-contract uruchamia własny kod. Ten kod może na przykład wykonać swapy tokenów, dostosować istniejącą pozycję, a następnie spłacić pożyczkę wraz z premią.
Warunek jest rygorystyczny: wszystkie kroki muszą się powieść w ramach jednej transakcji. Dlatego flash loan najlepiej sprawdza się w szybkich, złożonych działaniach DeFi, a nie jako kredyt konsumencki czy długoterminowe finansowanie.
Najważniejsze informacje
- Flash loan to tymczasowa pożyczka on-chain, która zwykle jest rozliczana w ramach jednej transakcji.
- W bezpośrednim flash loan nie jest wymagane wcześniejsze zabezpieczenie dla tej tymczasowej pożyczki.
- Smart contracts automatycznie realizują pożyczkę, działania następcze oraz spłatę.
- Jeśli spłata kapitału i premii się nie powiedzie, transakcja zostaje cofnięta.
- Flash loans można wykorzystywać m.in. do arbitrażu, collateral swaps oraz dostosowywania pozycji DeFi.
Jak działa flash loan?
Flash loan działa w ten sposób, że smart contract tymczasowo pożycza tokeny, wykonuje wcześniej zaprogramowane działania i spłaca pożyczkę wraz z premią, zanim ta sama transakcja dobiegnie końca.
Proces zwykle wygląda następująco:
- Uruchomienie flash loan: Smart contract wywołuje funkcję flash loan w danym protokole. Protokół wysyła wybrane krypto do receiver-contract.
- Wykonanie zaplanowanej akcji: Receiver-contract wykorzystuje tymczasową płynność do zaprogramowanych kroków. Mogą to być na przykład swapy albo spłata i ponowne skonfigurowanie pozycji DeFi.
- Zapewnienie wystarczającego salda: Po tych działaniach receiver-contract musi dysponować wystarczającą liczbą tokenów na spłatę kapitału i premii za flash loan. Ta premia to opłata za tymczasowe udostępnienie płynności.
- Umożliwienie spłaty: Receiver-contract udziela puli zgody na pobranie należnej kwoty. Nazywa się to token approval: kontrakt pozwala protokołowi obciążyć określoną liczbą tokenów.
- Zakończenie transakcji: Protokół pobiera kapitał i premię. Dopiero wtedy cała transakcja zostaje ostatecznie przetworzona.
Aave V3 ma funkcję flashLoanSimple dla jednej rezerwy. Rezerwa to pula dostępnej płynności dla konkretnego kryptoaktywa. Bardziej rozbudowana funkcja flashLoan może obsługiwać wiele aktywów jednocześnie.
W przypadku tej bardziej rozbudowanej funkcji istnieje także, pod pewnymi warunkami, inna ścieżka. Jeśli taka ścieżka jest ustawiona i dostępne jest wystarczające zabezpieczenie, pożyczona kwota może zostać otwarta jako standardowa pozycja zadłużenia zamiast natychmiastowej spłaty. Jest to coś innego niż standardowy bezpośredni flash loan. W flashLoanSimple ta możliwość nie występuje.
Dlaczego flash loan musi zostać spłacony w ramach jednej transakcji?
Bezpośredni flash loan musi zostać spłacony w ramach jednej transakcji, ponieważ wtedy wszystkie kroki mogą zostać wykonane atomowo. Atomowo oznacza, że cały ciąg działań albo w pełni się powiedzie, albo w całości zostanie cofnięty.
Można traktować transakcję jak jedno zapieczętowane opakowanie zawierające wiele poleceń. W tym opakowaniu kontrakt może pożyczyć tokeny, wymienić je, spłacić dług i oddać pożyczkę. Dopiero gdy każde polecenie zostanie poprawnie wykonane, paczka zostanie zapisana na blockchainie.
Chroni to pulę płynności przed otwartą, niezabezpieczoną pożyczką. Na końcu transakcji pula pobiera pożyczoną kwotę wraz z premią. Jeśli nie jest to możliwe, transakcja zostaje odrzucona.
Wyjaśnienie, że flash loan odbywa się w ramach jednego bloku, bywa praktycznie użyteczne, ale jest mniej precyzyjne. Kluczową regułą bezpieczeństwa jest to, że cała operacja zostaje atomowo rozliczona w ramach jednej transakcji.
Co się dzieje, jeśli nie dojdzie do spłaty?
Jeśli bezpośredni flash loan nie może zostać w pełni spłacony, transakcja zostaje zrevertowana. Revert oznacza, że blockchain cofa zmiany wynikające z nieudanej transakcji.
Protokół nie pozostaje wtedy z niespłaconym flash loan. Tymczasowo pożyczone tokeny nie stają się otwartym długiem receiver-contract. Swapy, wpłaty i inne zmiany będące częścią tej samej nieudanej transakcji również zostają cofnięte.
Nadawca może jednak stracić gas. Gas to opłata za pracę obliczeniową potrzebną do wykonania transakcji na blockchainie. Część tych obliczeń mogła zostać już wykonana przed rewertem, dlatego gas fees mogą pozostać należne.
Wyłącznie w przypadku bardziej rozbudowanej funkcji flashLoan w Aave V3 wybrana ścieżka może, pod pewnymi warunkami, doprowadzić do standardowej pozycji zadłużenia. Wymaga to wystarczającego zabezpieczenia i przejścia kontroli protokołu. Nie dotyczy to flashLoanSimple.
Do czego wykorzystuje się flash loans?
Flash loans wykorzystuje się do łączenia wielu zależnych działań DeFi w jednej atomowej transakcji. Jest to przydatne wtedy, gdy jeden krok jest możliwy dopiero po tym, jak inny krok zostanie wykonany bezpośrednio przed nim lub zaraz po nim.
Do najczęstszych zastosowań należą:
- arbitraż między rynkami;
- wymiana collateral w ramach pozycji pożyczkowej;
- spłata długu za pomocą collateral;
- zamknięcie lub restrukturyzacja pozycji DeFi.
Flash swap działa według podobnej zasady. W tym przypadku ktoś może pobrać tokeny z puli i dopiero na końcu tej samej transakcji zapłacić lub odesłać tokeny. Flash swap i flash loan nie są technicznie tym samym, ale oba wykorzystują tymczasową płynność w ramach jednej atomowej realizacji.
Jak działają arbitraż i różnice płynności z użyciem flash loans?
Arbitraż polega na próbie wykorzystania różnicy cen dla tych samych lub ekonomicznie porównywalnych aktywów na różnych rynkach. Flash loan może zapewnić tymczasowy kapitał transakcyjny, dzięki czemu wykonawca nie musi wcześniej posiadać całej kwoty.
Prosta strategia arbitrażowa może wyglądać tak:
- Smart contract tymczasowo pożycza tokeny poprzez flash loan.
- Kontrakt sprzedaje lub swapuje te tokeny na rynku, na którym cena jest relatywnie wysoka.
- Odkupuje to samo aktywo na innym rynku, na którym cena jest niższa.
- Kontrakt spłaca flash loan i premię.
- Wynikiem pozostaje wyłącznie ewentualna nadwyżka.
Przykład: Załóżmy, że token w jednej puli można sprzedać po wyższej realnie wykonalnej cenie, niż wynosi koszt jego odkupienia w innej puli. Smart contract może tymczasowo pożyczyć tokeny, wykonać dwa swapy i spłacić pożyczkę. Jeśli po uwzględnieniu wszystkich kosztów pozostanie nadwyżka, transakcja była zyskowna.
Widoczna różnica cen nie oznacza automatycznie okazji do zysku. Rzeczywisty wynik musi być wyższy niż kapitał, premia za flash loan, opłaty swap, koszty ścieżki, gas oraz slippage.
Znaczenie ma również price impact. Price impact to zmiana ceny wywołana przez własną transakcję w puli płynności. Duży swap w puli o niskiej płynności może zmienić cenę na tyle mocno, że pierwotna różnica cen zniknie.
Jak można używać flash loans do collateral swaps?
Swap collateral zastępuje zabezpieczenie pozycji pożyczkowej w ramach jednej transakcji. Collateral to kryptowaluty, które użytkownik wpłaca do protokołu pożyczkowego jako zabezpieczenie pożyczki.
Taki swap może pomóc, gdy użytkownik chce wymienić zabezpieczenie istniejącej pozycji pożyczkowej, nie mając wcześniej wystarczających własnych środków, aby spłacić dług. Flash loan może tymczasowo zapewnić płynność potrzebną do wykonania wszystkich kroków pośrednich w ramach jednej transakcji. Dokładna kolejność zależy od protokołu i zastosowanej logiki smart contract.
Przykładowy collateral swap z użyciem flash loan może przebiegać następująco:
- Tymczasowe pożyczenie aktywa długu: Smart contract pożycza poprzez flash loan aktywo, w którym wyrażony jest istniejący dług.
- Spłata istniejącego długu: Za pomocą tymczasowo pożyczonych tokenów dług zostaje spłacony, co umożliwia zwolnienie pierwotnego collateral.
- Wypłata pierwotnego collateral: Smart contract wypłaca zwolnione zabezpieczenie z pozycji pożyczkowej.
- Wymiana collateral: Pierwotne collateral jest swapowane na pożądane nowe aktywo collateral.
- Wpłata nowego collateral: Nowe aktywo zostaje wpłacone jako collateral do protokołu pożyczkowego.
- Ponowne otwarcie długu: Pod nowe collateral ponownie pożyczane jest aktywo długu.
- Spłata flash loan: Za pomocą tych tokenów kontrakt spłaca tymczasową pożyczkę wraz z ewentualną premią.
Na końcu transakcji użytkownik ponownie ma pozycję pożyczkową, ale z innym collateral. Jeśli któryś z niezbędnych kroków się nie powiedzie lub flash loan nie może zostać w pełni spłacony, cała transakcja zostaje zrevertowana.
Powiązany, lecz inny schemat to spłata długu za pomocą collateral. Wtedy kontrakt tymczasowo pożycza aktywo długu, spłaca istniejący dług, wypłaca zwolnione collateral i wymienia część tego collateral, aby spłacić flash loan. Celem nie jest ponowne otwarcie tej samej pozycji zadłużenia z innym collateral, lecz całkowita lub częściowa spłata istniejącego długu.
To, czy taki schemat jest wykonalny, zależy m.in. od obsługiwanych aktywów, dostępnej płynności, LTV oraz parametrów likwidacji. LTV wskazuje, jaką część wartości zabezpieczenia można maksymalnie pożyczyć. Parametry likwidacji określają, kiedy pozycja ma niewystarczające pokrycie i może zostać zamknięta.
Czy flash loans nadal są zyskowne?
Flash loans same w sobie nie są automatycznie zyskowne, ponieważ zapewniają jedynie tymczasowe finansowanie dla określonej strategii. To, czy transakcja przyniesie zysk, zależy od końcowego wyniku po uwzględnieniu wszystkich kosztów i ryzyk.
W arbitrażu strategia ma sens tylko wtedy, gdy zrealizowany wynik jest wyższy niż:
- premia za flash loan;
- gas fees;
- koszty swapów i ścieżek;
- price impact;
- slippage.
Premia za flash loan nie jest stałym, uniwersalnym procentem. Może się różnić w zależności od protokołu, chain, wdrożenia i konfiguracji, a także może zostać zmieniona. Również gas jest zmienny. Koszty zależą m.in. od ilości pracy obliczeniowej, base fee oraz priority fee, które występują w transakcji na Ethereum.
Konkurencja dodatkowo sprawia, że niewielkie okazje są kruche. Zautomatyzowani „poszukiwacze” mogą szybko próbować wykorzystać te same różnice cen. Ponadto symulacja lub wycena (quote) nie gwarantuje, że rzeczywista realizacja utrzyma tę samą cenę i wynik.
Flash loans nie są więc metodą na stały zwrot. To narzędzie techniczne, które ma wartość wyłącznie wtedy, gdy konkretna transakcja po wszystkich kosztach nadal wypada korzystnie.
Jakie są zalety flash loans?
Flash loans zapewniają smart contracts tymczasowy dostęp do płynności bez konieczności wcześniejszego zablokowania pełnej kwoty kapitału jako zabezpieczenia tej tymczasowej pożyczki.
Najważniejsze korzyści to:
- Tymczasowy dostęp do płynności: Strategię można przeprowadzić na większą kwotę, niż wykonawca ma wcześniej do dyspozycji na potrzeby tej konkretnej pożyczki.
- Brak częściowej realizacji: Dzięki atomowości wszystkie zmiany stanu są cofane, jeśli niezbędny krok się nie powiedzie. Użytkownik nie zostaje więc z częściowo zmienioną pozycją.
- Wiele działań w jednej transakcji: Pożyczanie, swapy, spłata, wypłata i ponowne wpłaty można wykonać jako jedną całość.
- Sprawniejsze zarządzanie pozycją: Collateral swaps i inne modyfikacje pozycji DeFi można połączyć bez konieczności osobnego finansowania każdego kroku pośredniego.
Brak kapitału początkowego nie oznacza braku kosztów. Do transakcji flash loan zazwyczaj nadal potrzebne są natywne tokeny na gas. Ponadto może być potrzebne saldo, aby pokryć premię lub niekorzystną realizację.
Jakie ryzyka i ograniczenia mają flash loans?
Flash loans wiążą się z ryzykiem technicznym, finansowym i wykonawczym, mimo że bezpośrednia pożyczka przy braku spłaty zostaje cofnięta. Atomowa konstrukcja chroni przede wszystkim dostawcę płynności przed niespłaconą bezpośrednią pożyczką. Nie eliminuje jednak wszystkich ryzyk po stronie użytkownika lub dewelopera.
Transakcja flash loan jest złożona. Receiver, token approvals, swapy, kontrole cen i spłata muszą współdziałać bezbłędnie. Błąd w jednym elemencie może spowodować rewert całej transakcji i koszty gas.
Zdolność pożyczkowa jest również ograniczona. Protokół może pożyczyć tylko to, co jest dostępne w danej rezerwie lub puli. Pożądana kwota nie zawsze będzie dostępna.
Ponadto transakcja może zakończyć się technicznym sukcesem, a mimo to być finansowo niekorzystna. Na przykład swap może zostać wykonany po niekorzystnej cenie, jeśli dopuszczalny slippage ustawiono zbyt szeroko.
Jak można wykorzystać błędy w smart contracts?
Flash loan może na dużą skalę wykorzystać istniejący błąd w innym protokole, ponieważ atakujący może tymczasowo kontrolować dużą liczbę tokenów. Flash loan nie powoduje tego błędu, ale może zapewnić kapitał potrzebny do wykorzystania słabości w ramach jednej transakcji.
Ryzykownym projektem jest na przykład protokół, który ufa bezpośrednio manipulowalnej cenie spot. Cena spot to cena widoczna w puli dokładnie w danym momencie. Atakujący może tymczasowo wpłynąć na cenę dużą transakcją, wykonać zależną akcję, a następnie w tej samej atomowej transakcji odwrócić tę transakcję.
Niebezpieczne może być również tymczasowe posiadanie tokenów, jeśli protokół wykorzystuje je bez dodatkowych zabezpieczeń jako sygnał bezpieczeństwa lub governance. Governance to proces, w którym uczestnicy podejmują decyzje dotyczące zasad lub zmian w protokole.
Ochrona polega przede wszystkim na solidnym projekcie protokołu. Przykłady obejmują bardziej odporne oracles cenowe, dane cenowe ważone w czasie tam, gdzie ma to zastosowanie, kontrole granic ekonomicznych oraz defensywny rozwój i audyty smart contracts.
Jaką rolę odgrywają koszty transakcyjne i slippage?
Koszty transakcyjne i slippage często decydują o tym, czy strategia flash loan faktycznie jest zyskowna. Nawet jeśli główne działanie się powiedzie, koszty te mogą całkowicie zniwelować oczekiwany wynik.
Gas fees to koszty pracy obliczeniowej wykonanej na Ethereum. Złożone transakcje z udziałem wielu smart contracts, swapów i token approvals zwykle zużywają więcej gas niż prosty transfer. Transakcja, która rewertuje w trakcie realizacji, nadal może generować koszty gas.
Price impact i slippage to nie to samo:
- Price impact to zmiana ceny wywołana przez własną transakcję. Efekt ten zwykle jest większy, gdy transakcja jest duża w stosunku do płynności w puli.
- Slippage to różnica między oczekiwanym wynikiem swapu a tym, co faktycznie zostaje otrzymane. Cena może się zmienić między momentem przygotowania transakcji a momentem jej wykonania.
Zbyt niski limit slippage może spowodować rewert transakcji. Zbyt wysoki limit może natomiast dopuścić wykonanie swapu po znacznie gorszej cenie. Dlatego gas, premia, price impact i slippage należy odjąć od wyniku brutto, zanim strategia zostanie uznana za zyskowną.
Jaka jest różnica między flash loans a crypto borrowing?
Flash loans i crypto borrowing to dwa sposoby pożyczania kryptowalut, ale działają w zasadniczo odmienny sposób. W crypto borrowing użytkownik zwykle otwiera pozycję pożyczkową, która może istnieć przez dłuższy czas. Flash loan służy natomiast do tymczasowego wykorzystania płynności w ramach jednej transakcji blockchain.
W crypto borrowing użytkownik zazwyczaj wpłaca kryptowaluty jako collateral, aby pożyczyć inne kryptoaktywo. Dług pozostaje otwarty, dopóki nie zostanie spłacony. W tym czasie od pożyczki może narastać odsetki. Jeśli wartość collateral spadnie zbyt mocno względem długu, pozycja może zostać zlikwidowana.
W bezpośrednim flash loan nie trzeba wcześniej blokować zabezpieczenia dla tymczasowej pożyczki. Pożyczona kwota musi jednak zostać spłacona wraz z ewentualną premią w ramach tej samej transakcji. Jeśli tak się nie stanie, cała transakcja zostaje zrevertowana, a wykonane zmiany zostają cofnięte.
Różnice są czytelne:
- Okres trwania: Crypto borrowing może prowadzić do pozycji zadłużenia otwartej przez dni, miesiące lub dłużej. Bezpośredni flash loan istnieje wyłącznie w ramach jednej transakcji.
- Zabezpieczenie: W crypto borrowing zwykle potrzebne jest collateral. W bezpośrednim flash loan nie jest wymagane wcześniejsze collateral dla tej tymczasowej pożyczki.
- Ryzyko likwidacji: W crypto borrowing pozycja może zostać zlikwidowana, gdy collateral nie zapewnia wystarczającego pokrycia. Bezpośredni flash loan nie tworzy długoterminowej pozycji, którą można zlikwidować: jeśli spłata się nie powiedzie, transakcja rewertuje.
- Koszty: W crypto borrowing mogą narastać odsetki, dopóki dług pozostaje otwarty. W flash loan zwykle płaci się premię za tymczasowe wykorzystanie płynności.
- Zastosowanie: Crypto borrowing służy do pożyczenia kapitału bez natychmiastowej sprzedaży collateral. Flash loans wykorzystuje się głównie do zautomatyzowanych działań DeFi, takich jak arbitraż, collateral swaps i restrukturyzacja pozycji pożyczkowych. Krótko mówiąc, crypto borrowing służy do utrzymania pożyczki przez dłuższy czas, natomiast flash loan zapewnia tymczasową płynność dla sekwencji działań wykonywanych w ramach jednej transakcji.
Aave V3 stanowi tu pewną subtelność. Za pomocą bardziej rozbudowanej funkcji flashLoan transakcja może, pod określonymi warunkami, zakończyć się standardową pozycją zadłużenia, jeśli dostępne jest wystarczające collateral. Nie jest to już standardowy bezpośredni flash loan, lecz w praktyce crypto borrowing.
Podsumowanie
Flash loan to element DeFi, dzięki któremu smart contract może tymczasowo wykorzystać płynność i spłacić ją w ramach tej samej transakcji. Siła rozwiązania tkwi w atomowości: wszystkie kroki kończą się powodzeniem łącznie albo blockchain cofa całą transakcję.
Dzięki temu flash loans mogą być przydatne w złożonych działaniach, takich jak arbitraż, collateral swaps czy dostosowanie pozycji pożyczkowych. Nie zapewniają one automatycznego zysku i nie są też zwykłą pożyczką do długotrwałego wykorzystania. Ostateczny rezultat zależy od kodu, dostępnej płynności, gas fees, price impact, slippage oraz wybranej strategii.
Zwłaszcza dla deweloperów i zautomatyzowanych strategii DeFi flash loans są potężnym narzędziem. Jednocześnie bezpieczne użycie wymaga niezawodnych smart contracts, dobrych kontroli cen oraz realistycznego oszacowania wszystkich kosztów i ryzyk.