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.
