Przejdź do treści
Słownikdefismart-kontraktybezpieczenstwo

Oracle

System dostarczający zewnętrzne dane — najczęściej ceny aktywów — do smart kontraktów na blockchainie. Protokoły DeFi potrzebują wiedzieć, ile wart jest twój collateral i kiedy uruchomić likwidację — ale blockchain sam z siebie nie może sprawdzić kursu ETH/USD. Oracle dostarcza tę informację onchain w sposób odporny na manipulację.

Dlaczego blockchain nie może sprawdzić ceny sam

Smart kontrakt to program działający na tysiącach komputerów jednocześnie. Każdy z tych komputerów musi wykonać ten sam kod i dostać ten sam wynik — inaczej sieć nie osiągnęłaby konsensusu. Dlatego smart kontrakty są celowo odizolowane od internetu: nie mogą wysłać zapytania do API, otworzyć strony czy pobrać kursu walut.

To nazywa się "problemem oracle". Protokół pożyczkowy musi wiedzieć, czy twój collateral nadal pokrywa pożyczkę — ale nie może sam sprawdzić kursu ETH. Potrzebuje zewnętrznego systemu, który podaje tę informację onchain.

Oracle to właśnie taki system. Ktoś (albo coś) regularnie publikuje dane na blockchainie — np. "ETH kosztuje teraz 3200 USD" — a smart kontrakt czyta tę wartość i na jej podstawie podejmuje decyzje.

Jak działają dobre oracle — przykład Chainlink

Chainlink to dominujący dostawca danych cenowych w DeFi. Zamiast pobierać cenę z jednego źródła, Chainlink używa sieci dziesiątek niezależnych operatorów węzłów — każdy z nich odpytuje profesjonalne agregatory danych i przesyła wynik onchain. Końcowa cena to mediana wszystkich odpowiedzi.

Żeby zmanipulować taką cenę, atakujący musiałby jednocześnie przejąć większość niezależnych operatorów — co jest ekstremalnie trudne i kosztowne. Dla porównania: gdyby protokół czytał cenę bezpośrednio z jednej małej puli DEX, wystarczyłaby pojedyncza transakcja z dużym kapitałem.

Cena jest aktualizowana, gdy ruch rynkowy przekroczy próg (np. 0,5%) lub co jakiś czas (np. co godzinę) — tak że protokoły zawsze mają świeże dane bez płacenia za gas przy każdym ruchu kursu.

Atak przez manipulację oracle — jak to wygląda

Jeden z najczęstszych rodzajów hacków DeFi polega właśnie na manipulacji oracle. Schemat wygląda tak: atakujący bierze ogromną pożyczkę flash (flash loan) — jest ona bezpłatna, bo musi być zwrócona w tej samej transakcji. Używa tych środków do kupienia dużej ilości tokenu X w małej, cienkiej puli DEX, przez co jego cena w tej puli sztucznie rośnie.

Jeśli protokół pożyczkowy używa ceny z tej puli jako oracle — w tym momencie "widzi" token X jako dużo cenniejszy niż jest w rzeczywistości. Atakujący deponuje token X jako collateral i natychmiast pożycza maksymalną kwotę innego aktywa. Sprzedaje zaciągniętą pożyczkę, cena w puli wraca do normy, flash loan jest spłacony — i atakujący wychodzi z zyskiem.

Dlatego bezpieczne oracle nie czytają ceny spot z jednej puli. Używają albo wielu źródeł (Chainlink), albo tzw. TWAP — średniej ceny ważonej czasem z ostatnich 30 minut. Żeby zmanipulować TWAP, trzeba utrzymywać fałszywą cenę przez wiele bloków, co jest ekonomicznie nieopłacalne.

Oracle to część bezpieczeństwa protokołu

Kilka z największych hacków DeFi — Mango Markets (114 mln USD), Cream Finance i inne — polegało właśnie na manipulacji oracle. Sprawdzaj, jakich danych cenowych używa protokół, zanim zdeponujesz znaczący kapitał. Protokoły używające Chainlink lub własnych TWAP z długim oknem czasowym są bezpieczniejsze niż te czytające cenę spot z jednej, cienkiej puli.

Typy oracle — czego używają protokoły

  • Chainlink Price Feeds — zdecentralizowana sieć operatorów, odporność na manipulację przez mediany. Standard w Aave, Compound, Synthetix.
  • TWAP (Uniswap v3) — średnia cena z wielu bloków. Trudna do manipulacji, ale może reagować wolniej na gwałtowne ruchy rynkowe.
  • Pyth Network — popularne na Solanie, używa "przedziału ufności" — cena plus margines niepewności z wielu źródeł.
  • Spot price z DEX — cena bezpośrednio z puli. Najtańsze rozwiązanie, ale podatne na manipulację przy niskiej płynności. Czerwona flaga w protokołach z dużym TVL.

Najczęstsze pytania

Tak — szczególnie jeśli korzystasz z protokołów pożyczkowych. Oracle decyduje, kiedy twoja pozycja zostaje zlikwidowana. Jeśli protokół używa złego oracle i cena zostanie zmanipulowana, możesz zostać zlikwidowany przy kursie, który nie odzwierciedla rzeczywistości rynkowej. Sprawdź dokumentację protokołu — zwykle jest tam informacja o używanym oracle.

Flash loan to pożyczka, która musi być spłacona w tej samej transakcji — w innym razie cała transakcja jest cofnięta. Sama w sobie jest neutralna i używana np. do arbitrażu. Problem pojawia się, gdy atakujący używa ogromnego flash loan do manipulacji ceną w małej puli, którą protokół traktuje jako oracle. To łączy dwie luki: brak limitu pożyczki i słaby oracle.

Sprawdź dokumentację lub stronę bezpieczeństwa protokołu — renomowane projekty (Aave, Compound, GMX) jasno opisują, skąd biorą dane cenowe. Możesz też sprawdzić kod smart kontraktu na Etherscan. Jeśli protokół nie podaje tej informacji nigdzie, to jest czerwona flaga.

Nie — to ogólna nazwa dla mechanizmów dostarczających zewnętrzne dane do blockchainu. Chainlink oferuje też VRF (losowość dla gier i NFT) czy Automation (automatyczne wykonywanie akcji po spełnieniu warunków). Ale w kontekście DeFi i bezpieczeństwa to głównie ceny aktywów.