Smart contract tidak dapat mengakses data eksternal sendiri. Mereka hanya dapat membaca data yang ada di blockchain mereka sendiri. Ini adalah batasan desain fundamental, bukan bug. Jika smart contract dapat menjangkau API sembarangan, eksekusinya akan menjadi non-deterministik, karena node yang berbeda mungkin mendapatkan respons yang berbeda, yang akan memecahkan konsensus.
Oracle memecahkan ini dengan membawa data eksternal on-chain dengan cara yang dapat disetujui jaringan. Untuk DeFi, data eksternal paling kritis adalah harga aset. Ketika protokol peminjaman perlu mengetahui apakah posisi kurang terjamin, ia meminta oracle untuk harga saat ini. Ketika platform perpetual futures menghitung funding rate, ia menggunakan harga oracle. Oracle adalah fondasi tempat sebagian besar logika keuangan DeFi berada.
Chainlink adalah jaringan oracle dominan, mengamankan puluhan miliar dolar di ratusan protokol. Arsitekturnya menggunakan jaringan terdesentralisasi dari operator node yang secara independen mengambil harga dari berbagai sumber data, kemudian menggabungkannya on-chain. Agregasi biasanya menggunakan median, yang tahan terhadap manipulasi sumber data tunggal mana pun. Node diberi insentif melalui pembayaran token LINK dan dihukum karena menyediakan data yang tidak akurat.
Pyth Network mengambil pendekatan berbeda, khususnya untuk feed harga frekuensi tinggi. Alih-alih memiliki node oracle yang mengorek API publik, Pyth menerima data harga langsung dari sumber pihak pertama seperti bursa, market maker, dan perusahaan perdagangan. Ini mengurangi rantai pasokan data dan dapat memberikan pembaruan yang lebih cepat. Model pull oracle Pyth juga berarti konsumen meminta harga saat mereka membutuhkannya alih-alih harga yang didorong on-chain pada interval tetap.
Frekuensi pembaruan harga oracle adalah parameter desain kritis. Feed harga standar Chainlink diperbarui berdasarkan ambang deviasi (biasanya 0,5-1%) atau interval heartbeat (biasanya 1 jam). Ini berarti selama periode pergerakan harga cepat, harga on-chain dapat tertinggal dari harga pasar sebenarnya. Jeda ini menciptakan peluang untuk ekstraksi MEV dan dapat menyebabkan likuidasi terjadi pada harga yang sudah basi.
Serangan manipulasi oracle telah menyebabkan kerugian ratusan juta. Pola serangan dasarnya melibatkan manipulasi sumber harga yang dibaca oracle, kemudian menggunakan harga on-chain yang dimanipulasi untuk mengekstrak nilai dari protokol. Serangan flash loan seringkali menggunakan pendekatan ini: meminjam jumlah besar, memanipulasi pasar yang tipis diperdagangkan untuk menggerakkan harga oracle, mengeksploitasi harga yang dimanipulasi di protokol peminjaman, kemudian membayar kembali pinjaman, semuanya dalam satu transaksi.
Oracle TWAP (time-weighted average price), seperti yang dibangun ke dalam Uniswap V3, menawarkan ketahanan manipulasi dengan merata-ratakan harga dari waktu ke waktu. Memanipulasi TWAP memerlukan mempertahankan harga yang terdistorsi untuk seluruh periode rata-rata, yang mahal. Tradeoffnya adalah bahwa harga TWAP secara inheren tertinggal, membuatnya tidak cocok untuk aplikasi yang membutuhkan penetapan harga real-time.
Trilema oracle menyatakan bahwa desain oracle harus bertukar di antara tiga properti: kesegaran (seberapa terkini data), biaya (seberapa mahal untuk mempertahankannya), dan keamanan (seberapa tahan terhadap manipulasi). Push oracle dengan pembaruan yang sering itu segar tetapi mahal. Oracle TWAP aman tetapi tertinggal. Pull oracle bisa segar dan lebih murah tetapi memerlukan lebih banyak kepercayaan pada penyedia data.
Bagi trader dan pengguna DeFi, desain oracle memiliki implikasi praktis langsung. Jika Anda menggunakan protokol peminjaman, memahami mekanisme pembaruan oracle memberi tahu Anda tentang risiko likuidasi selama periode volatil. Jika Anda memperdagangkan perpetual futures, kesegaran oracle memengaruhi seberapa dekat harga kontrak melacak spot. Memeriksa oracle apa yang digunakan protokol, dan bagaimana ia dikonfigurasi, adalah langkah uji tuntas dasar yang dilewatkan sebagian besar pengguna.