
Oracle'lar: blokzincirler dışarıda olup biteni nasıl öğrenir
Bir akıllı sözleşme bakiyeleri, imzaları ve kendi durumunu kusursuz biçimde kontrol edebilir. Yapamadığı şey ise dışarıdan bir bilgiye bakmaktır. ETH'nin dolar cinsinden ne kadar ettiğini, bir maçı kimin kazandığını ya da dün Madrid'de yağmur yağıp yağmadığını bilmez. Blokzincirler bilerek kapalı tutulur: her düğüm aynı veriden aynı sonuca ulaşmak zorundadır ve dış dünya bu güvenceyi sunmaz.
Yine de borç verme protokollerinin fiyatlara, stablecoin'lerin döviz kurlarına, sigorta sözleşmelerinin de gerçek dünya olaylarına ihtiyacı vardır. Kapalı zincir ile dış dünya arasındaki köprüye oracle denir ve merkeziyetsiz finansın en çok saldırıya uğrayan parçalarından biridir.
Bir oracle ne yapar
Oracle, dışarıdaki veriyi sözleşmelerin okuyabileceği şekilde zincire taşıyan her türlü mekanizmadır. Genellikle:
- Bir veya daha fazla veri sağlayıcı bilgi toplar; örneğin pek çok borsadan ETH/USD fiyatını.
- Bu bilgiyi imzalayıp zincirdeki bir oracle sözleşmesine, düzenli aralıklarla ya da değer yeterince değiştiğinde gönderirler.
- Diğer sözleşmeler bu oracle sözleşmesinden en son değeri okur ve buna göre hareket eder.
Sözleşme oracle'a tamamen güvenir. Oracle ETH'nin 10 $ ettiğini söylerse, bu değeri okuyan bir borç verme protokolü ETH'yi 10 $ değerinde sayar ve tasfiyeyi ya da borç vermeyi buna göre yapar.
Oracle sorunu
Temel zorluk şudur: bir protokol kusursuz kodlanmış olsa bile ancak verisi kadar güvenilirdir. Fiyatları tek bir kaynak sağlıyorsa sözleşmeyi merkeziyetsiz hale getirmek pek işe yaramaz.
Oracle tasarımları bu bağımlılığı farklı yollarla azaltmaya çalışır:
- Birden fazla bağımsız raporlayıcı: yanıtları birleştirilir, böylece tek bir hatalı ya da ele geçirilmiş kaynak sonucu değiştiremez.
- Çok sayıda temel veri kaynağı, böylece manipüle edilmiş tek bir borsa fiyatı çarpıtamaz.
- Zincir üstü ortalama fiyatlar: merkeziyetsiz borsalardan zaman içinde hesaplanır ve uzun süre oynatılmaları daha zordur.
- Ekonomik cezalar: yanlış veri gönderen raporlayıcılara uygulanır.
Oracle'lar nasıl istismar edilir
DeFi'deki en büyük kayıpların birçoğu olağan anlamda sözleşme hatası değildi; bunlar oracle başarısızlıklarıydı:
- Anlık fiyat manipülasyonu. Bir protokol güncel fiyatı tek bir küçük işlem havuzundan okur. Saldırgan tek bir işlemde büyük bir tutar borç alır, o havuzun fiyatını iter, sahte fiyat üzerinden borç alır ya da tasfiye yapar, sonra işlemi geri çevirir; hepsi işlem bitmeden olur. Flaş krediler bunu hiç sermaye olmadan mümkün kılar.
- Sığ piyasalar. Çoğunlukla tek bir küçük havuzda işlem gören bir token'ı oynatmak ucuzdur ve onu teminat olarak kabul eden her protokol bu zayıflığı devralır.
- Eskimiş veri. Hızlı bir piyasada güncellenmeyi bırakan bir oracle, insanların artık var olmayan fiyatlar üzerinden borç almasına izin verebilir.
- Ele geçirilmiş raporlayıcılar veya yönetici anahtarları: oracle'ın verisini nereden aldığını değiştirebilir.
Aynı mantık köprüler için de geçerlidir: bir sistem, ona başka yerde ne olduğunu söyleyen bileşen kadar güvenlidir.
Bu sizi neden ilgilendiriyor
Oracle'larla doğrudan etkileşime girmezsiniz, ama birçok protokolde paranıza ne olacağına onlar karar verir:
- Borç verme: teminatınızın değeri ve tasfiye edilip edilmeyeceğiniz bir oracle'dan gelir.
- Stablecoin'ler: birçok tasarım hedefte kalmak için fiyat akışlarına bağlıdır.
- Türevler ve sentetik varlıklar: uzlaşma fiyatları oracle'lardan gelir.
Gerçek parayla bir protokol kullanmadan önce şunları bilmekte fayda var: fiyatlarını nereden alıyor? Köklü, çok kaynaklı bir akış mı, yoksa tek bir havuz mu? Akış güncellenmeyi bırakırsa ne olur? Bu sorulara net yanıt veremeyen bir protokol, göremediğiniz bir riski üstlenmenizi istiyor demektir.
Oracle'lar ve SSP
SSP'nin kendisi fonlarınızı korumak için oracle'lara bağlı değildir. Coin'leriniz 2'de 2 multisig bir kasada durur ve taşınmaları herhangi bir dış fiyata değil, yalnızca iki cihazınızdan gelen imzalara bağlıdır.
SSP'de gördüğünüz fiyatlar, yani seçtiğiniz para birimindeki portföy değeriniz, yalnızca gösterim amaçlıdır. Bir işlemin ne yaptığını ya da geçerli olup olmadığını etkilemez.
Fonlarınızı WalletConnect üzerinden DeFi protokollerine taşıdığınızda oracle'lar sizin meseleniz hâline gelir. Orada SSP size neyi imzaladığınızı gösterir ve iki cihazın da onayını ister, ama protokolün fiyat akışının sağlam olup olmadığını değerlendiremez. Bu özen sizin sorumluluğunuzdadır ve sözleşmeleri ve onları kimin kontrol ettiğini doğrulamak bunun bir parçasıdır.
Dürüst özet
Blokzincirler kendi dışlarını göremez, bu yüzden veriyi içeri oracle'lar getirir ve bu veriye dayanan her sözleşme oracle'ın zayıflıklarını devralır. Büyük DeFi istismarlarının çoğu kodu kırmak yerine bir fiyat akışını manipüle etti.
Fiyatlara bağlı bir protokol kullandığınızda bu fiyatların nereden geldiğini sorun. İyi birleştirilmiş, çok kaynaklı oracle'ları kandırmak tek bir havuzu kandırmaktan çok daha zordur ve tek bir veri noktasına dayanan "merkeziyetsiz" kod göründüğü kadar merkeziyetsiz değildir.


