Oracle Nedir?
Blokzincir oracle çözümleri bir blokzincirini zincir dışı verilere bağlayan ürünlerdir.
Blokzincir oracle’larının ne olduğunu ve neden onlara ihtiyacımız olduğunu anlamak için blokzincirlerinin temel özelliklerinden biri olan “merkeziyetsizlik” kavramına bakmak gerekir.
Blokzincirin Sorunları
Blokzinciri dağınık defter yapısına sahip olduğundan ağdaki her bir düğüm aynı girdi verildiğinde aynı sonucu bulabilmelidir. Aksi takdirde bir düğüm başka bir düğümün yaptığı işlemi doğrulamak istediğinde farklı bir sonuçla sonuçlanır. İstenilen mimari budur ve kasıtlı olarak deterministik yapıda tasarlanmıştır.
Bob’dan Alice’e 5 dolar gönderdiğimizde Alice’in bakiyesine 5 dolar ekleyebileceğimizi ve Bob’un bakiyesinden 5 dolar çıkarabileceğimizi görebiliriz. Ağdaki her düğüm bunu kolayca yeniden üretebilir, aynı sonuçları alabilir ve aynı duruma gelebilir.
Bu durumun olmadığı bir senaryo düşünelim. Bir blokzincirinde birbirlerinin işlemlerini doğrulamak için API çağrıları kullanıldığı takdirde, Bob’un hesabından Alice’e ETH fiyatına göre değişken bir miktar göndermek istediğimizi varsayalım. Sözleşmemizin ETH fiyatını almak için bir API çağrısı yapmasını ve ardından bu tutarı Bob’a göndermesini sağlardık. Diğer tüm düğümler bunu doğrulamaya gittiğinde bu API’yi çağırmaları gerekir.
Bu durumda ne ile karşılaşacağız. API çok kısa süre sonra bile çağırılırsa API değişmiş olabilir, saldırıya uğramış veya başka sebeplerle etkilenmiş olabilir. Bu sebeplerden dolayı tüm düğümler farklı bir sonuç alacaktır ve düğümler blokzincirinin gerçek durumunun ne olduğu konusunda anlaşamayacaktır.
Bu nedenle Ethereum ve çoğu blokzinciri tamamen kararlı olacak şekilde tasarlanmıştır. Bu her işlemi tekrar edersek doğru durumda olacağımız anlamına gelir. API çağrılarını veya diğer kararlı olmayan kaynakları blokzincirinin altyapısına dahil ederseniz, kaynağın saldırıya uğraması ve hatta bozulması ihtimali vardır. Ayrıca işlem doğrulaması da yapılamaz.
Blokzincirinde bir veri değeri üzerinde anlaşmaya yönelik mekanizmaya konsensüs denir ve determinizm düğümlerin bir fikir birliğine varabilmesi için önemlidir. Nakamoto Consensus ile Proof of Work (PoW) veya Bizans Consensus ile Proof of Stake (PoS) gibi bazılarını duymuş olabilirsiniz. Konsensüs blokzincirinin çalışmasını sağlayan temel bileşenlerden biridir.
Ancak blokzincirinin gerçek dünyayla bağlantı kurması gereklidir. DeFi’nin çalışabilmesi için için ETH ve diğer kripto para birimlerinin fiyatlarının akıllı kontratlarda kullanılabilmesi gereklidir. Merkeziyetsiz güven gerektirmeyen sigorta sistemi olması için hava durumu verilerini almamız gerekiyor. Blokzincirinin önemli amaçlarından biri olan akıllı sözleşmeleri kullanabilmek için verilere ihtiyacımız var. Peki bu kısıtlama ile gerçek dünya arasında nasıl köprü kurarız?
Oracle Çözümü
Blokzincir oracle bir blokzincirini zincir dışı verilere bağlayan herhangi bir cihaz veya varlıktır. Bu oracle’lar tüm veri girişini harici bir işlem aracılığıyla girer. Bu şekilde blokzincirinin kendisini doğrulamak için gereken tüm bilgileri içerdiğinden emin olabiliriz. Bu nedenle oracle’lar blokzincir ara katmanı olarak bilinir. İki dünya arasındaki köprü görevi görür.
Peki “ORACLE PROBLEMİ ” nedir?
Oracle Problemi Nedir?
Bir adım geri gidelim ve neden zincir yapısı kullandığımızı hatırlayalım. Zincirde herhangi bir şey yapmamızın en büyük nedeni merkeziyetsizliktir. Ancak verilerin bir yerden gelmesi gerekiyor.
Veriler tek bir API, düğüm veya kaynaktan alınırsa blokzinciri kullanmanın tüm amacını ortadan kaldırmış oluyoruz. Merkezi bir oracle oluşması, tek bir yapının akıllı sözleşmeniz üzerinde güce sahip olduğu ve akıllı sözleşmenizin artık normal bir sözleşmeden daha iyi olmadığı anlamına gelir. Merkezi oracle ne kadar güvenilir olsa bile merkezi bir oracle’ın saldırıya uğradığı, güncelliğini yitirdiği veya bakımının yapılmadığı görülmüştür.
Oracle problemi iki bölümden oluşur.
- Blokzincirleri tek başına dış dünya verilerine ulaşamaz.
- Merkezi oracle kullanılması akıllı kontratların avantajlarını yok etmekte ve büyük riskler getirmektedir.
Chainlink bu problemlerin her ikisini de çözer ve merkeziyetsiz oracle’lar için bir standart getirmiştir.
Merkeziyetsiz Oracle Nedir?
Merkeziyetsiz oracle veya merkeziyetsiz oracle ağı bir blokzincirine veri sağlayan bir grup bağımsız blokzinciri oracle’larından oluşmaktadır. Merkeziyetsiz oracle ağındaki her bağımsız düğüm veya oracle zincir dışı bir kaynaktan bağımsız olarak veri alır ve onu zincire getirir. Veriler daha sonra toplanır böylece sistem bu veri noktası için deterministik bir doğruluk değerine ulaşabilir. Merkeziyetsiz oracle’lar oracle sorununu çözmektedir.
Chainlink gerçek dünya verilerini blokzincirine bağlayan bağımsız düğüm ağınızı seçmeye yönelik bir modeldir. Bu sayede akıllı sözleşmelerin gerçek potansiyellerine ulaşmasını sağlamaktadır. Böylece blokzinciri oracle’ları için blokzincirinin sahip olduğu aynı güvenilir merkezi olmayan altyapı konseptinden yararlanıyoruz. Düğümler/kaynaklar saldırıya uğrar veya silinirse Chainlink ağı merkeziyetsiz ağdan yararlanacak ve devam edecektir.
Verilerinizi çekebileceğiniz bağımsız düğümler ağınızı seçmenize yardımcı olmak için Chainlink teknolojisinden yararlanan büyük marketler bulunmaktadır. Bu sayede akıllı sözleşmeleriniz asla tek bir başarısızlık noktasına sahip olamaz.
Bu teknoloji blokzincirinden bağımsızdır ve tüm blokzincirlerinin güvenilir zincir dışı verilere erişebilmesi için sürekli olarak daha fazla blokzinciri ile entegre olmaya çalışmaktadır. En önemlisi de dökümanlar hem yeni başlayan hem de deneyimli mühendisler için harikadır. (https://docs.chain.link/docs)
Videolu anlatım için şu videoyu izleyebilirsiniz.
Tek bir blokzincir oracle kullanmak büyük bir risktir. Chainlink veriler etrafında harika bir ekosistem sunuyor. Blokzincir oracle’ları, akıllı sözleşmelerin bizim için sahip olduğu geleceğin kilidini açmanın anahtarıdır. Oracle’lar ayrıca blokzincirlerinin birbiri ile haberleşmesi için bir yol sağlar. Bu birlikte çalışabilirlik olarak bilinir ve aynı zamanda önemli bir sonraki adımdır.
Sonuç olarak akıllı sözleşmelerin normal sözleşmelerden üstün olması için çeşitli ve güvenilir verilere erişmemiz gerekiyor. Bu yüzden oracle’lara ihtiyacımız var.