
Oracle: bagaimana blockchain mengetahui apa yang terjadi di luar
Sebuah kontrak pintar bisa memeriksa saldo, tanda tangan, dan statusnya sendiri dengan sempurna. Yang tidak bisa ia lakukan adalah mencari informasi apa pun. Ia sama sekali tidak tahu berapa harga ETH dalam dolar, siapa yang memenangkan sebuah pertandingan, atau apakah kemarin hujan di Madrid. Blockchain sengaja dibuat tertutup: setiap node harus mencapai hasil yang sama dari data yang sama, dan dunia luar tidak menawarkan jaminan itu.
Namun protokol pinjaman membutuhkan harga, stablecoin membutuhkan kurs, dan kontrak asuransi membutuhkan peristiwa dunia nyata. Jembatan antara rantai yang tertutup dan dunia luar disebut oracle, dan ini adalah salah satu bagian keuangan terdesentralisasi yang paling sering diserang.
Apa yang dilakukan oracle
Oracle adalah mekanisme apa pun yang menaruh data dari luar ke dalam rantai, tempat kontrak dapat membacanya. Biasanya:
- Satu atau beberapa penyedia data mengumpulkan informasi, misalnya harga ETH/USD dari banyak bursa.
- Mereka menandatanganinya dan mengirimkannya ke kontrak oracle di rantai, secara berkala atau ketika nilainya cukup berubah.
- Kontrak lain membaca nilai terbaru dari kontrak oracle tersebut dan bertindak berdasarkan nilai itu.
Kontrak memercayai oracle sepenuhnya. Jika oracle menyatakan ETH bernilai $10, protokol pinjaman yang membacanya akan memperlakukan ETH seolah bernilai $10, lalu melikuidasi atau meminjamkan sesuai nilai itu.
Masalah oracle
Itulah kesulitan utamanya: sebuah protokol bisa dikodekan dengan sempurna namun tetap hanya sepercaya datanya. Mendesentralisasi kontrak tidak banyak membantu jika satu sumber saja yang memasok harganya.
Desain oracle mencoba mengurangi ketergantungan itu dengan berbagai cara:
- Banyak pelapor independen yang jawabannya digabungkan, sehingga satu sumber yang salah atau disusupi tidak bisa menggeser hasilnya.
- Banyak sumber data dasar, sehingga satu bursa yang dimanipulasi tidak membelokkan harga.
- Rata-rata harga on-chain yang dihitung dari waktu ke waktu di bursa terdesentralisasi, yang lebih sulit digeser dalam waktu lama.
- Sanksi ekonomi bagi pelapor yang mengirim data yang salah.
Bagaimana oracle dieksploitasi
Banyak kerugian DeFi terbesar bukanlah bug kontrak dalam arti biasa, melainkan kegagalan oracle:
- Manipulasi harga spot. Sebuah protokol membaca harga saat ini dari satu pool perdagangan kecil. Penyerang meminjam jumlah besar dalam satu transaksi, mendorong harga pool itu, meminjam atau melikuidasi berdasarkan harga palsu, lalu membalikkan perdagangannya, semuanya sebelum transaksi berakhir. Pinjaman kilat membuat hal ini mungkin tanpa modal sendiri sedikit pun.
- Pasar tipis. Token yang sebagian besar diperdagangkan di satu pool kecil murah untuk digerakkan, dan protokol mana pun yang menerimanya sebagai jaminan mewarisi kelemahan itu.
- Data basi. Oracle yang berhenti diperbarui saat pasar bergerak cepat dapat membuat orang meminjam berdasarkan harga yang sudah tidak ada.
- Pelapor atau kunci admin yang disusupi yang dapat mengubah dari mana oracle mengambil datanya.
Penalaran yang sama berlaku untuk jembatan: sebuah sistem hanya seaman komponen yang memberitahunya apa yang terjadi di tempat lain.
Mengapa ini penting bagi Anda
Anda tidak berinteraksi langsung dengan oracle, tetapi oracle menentukan apa yang terjadi pada uang Anda di banyak protokol:
- Pinjaman: nilai jaminan Anda, dan apakah Anda dilikuidasi, berasal dari oracle.
- Stablecoin: beberapa desain bergantung pada umpan harga agar tetap pada targetnya.
- Derivatif dan aset sintetis: harga penyelesaian berasal dari oracle.
Sebelum menggunakan protokol dengan uang sungguhan, ada baiknya Anda tahu: dari mana protokol itu mendapatkan harganya? Apakah itu umpan yang mapan dengan banyak sumber, atau satu pool saja? Apa yang terjadi jika umpan berhenti diperbarui? Protokol yang tidak bisa menjawab pertanyaan itu dengan jelas sedang meminta Anda menanggung risiko yang tidak bisa Anda lihat.
Oracle dan SSP
SSP sendiri tidak bergantung pada oracle untuk melindungi dana Anda. Koin Anda berada di brankas multisig 2-dari-2, dan memindahkannya hanya bergantung pada tanda tangan dari dua perangkat Anda, bukan pada harga eksternal apa pun.
Harga yang Anda lihat di SSP, yaitu nilai portofolio Anda dalam mata uang pilihan, hanya untuk tampilan. Harga itu tidak memengaruhi apa yang dilakukan sebuah transaksi atau apakah transaksi itu sah.
Oracle menjadi urusan Anda ketika Anda membawa dana ke protokol DeFi melalui WalletConnect. Di sana, SSP menunjukkan apa yang Anda tandatangani dan memerlukan persetujuan kedua perangkat, tetapi tidak dapat menilai apakah umpan harga protokol itu andal. Uji tuntas itu adalah tanggung jawab Anda, dan memverifikasi kontrak serta siapa yang mengendalikannya termasuk di dalamnya.
Ringkasan jujur
Blockchain tidak bisa melihat ke luar dirinya sendiri, jadi oracle yang membawa data masuk, dan setiap kontrak yang mengandalkan data itu mewarisi kelemahan oracle. Banyak eksploitasi DeFi besar memanipulasi umpan harga alih-alih membobol kodenya.
Saat Anda menggunakan protokol yang bergantung pada harga, tanyakan dari mana harga itu berasal. Oracle yang teragregasi dengan baik dari banyak sumber jauh lebih sulit dikelabui daripada satu pool, dan kode "terdesentralisasi" dengan satu titik data tidaklah sedesentralisasi kelihatannya.


