Oracle Makine Sistemi: Akıllı Sözleşmeler ve Gerçek Dünya Arasındaki Köprü
Blok zinciri ekosisteminde, Oracle Makine kritik bir rol oynamaktadır. Bir ara katman sistemi olarak, zincir üzerindeki akıllı sözleşmelere dış bilgi sağlayarak blok zinciri dünyasını gerçek dünya ile bağlantılı hale getirir. Oracle Makine'nin temel işlevi, akıllı sözleşmeler için gerekli dış verileri sağlamaktır.
Bir örnek vermek gerekirse, Ethereum ağı üzerinde bir günün ham petrol ticaret hacmi verilerini alması gereken bir akıllı sözleşme oluşturduğumuzu varsayalım. Akıllı sözleşmenin kendisi bu tür zincir dışı gerçek dünya verilerini doğrudan alamadığından, bunu gerçekleştirmek için bir Oracle Makine'ye ihtiyaç vardır. Bu durumda, akıllı sözleşme gerekli tarihin ham petrol ticaret hacmini olay günlüğüne yazacaktır. Ardından, zincir dışı bir süreç bu olay günlüğünü izlemek ve abone olmak için başlatılacaktır. İşlemdeki isteği dinlediğinde, bu süreç zincir üstü bir işlem göndererek, sözleşmenin ilgili yöntemini çağıracak ve belirtilen tarihin ham petrol ticaret hacmi bilgisini akıllı sözleşmeye yükleyecektir.
Chainlink: Ana akım Oracle Makine çözümü
Mevcut blockchain pazarında, Chainlink en yüksek pazar payına sahip Oracle Makine projesidir. Merkeziyetsiz bir Oracle Makine sistemi olarak, Chainlink, blockchain'e gerçek dünyada üretilen verileri en güvenli şekilde sağlamayı amaçlamaktadır. Temel Oracle Makine prensipleri üzerine, Chainlink LINK token'ı etrafında ekonomik teşviklere dayalı bir ekosistem inşa etmiştir.
Chainlink Oracle Makine'nin tetiklenmesi, LINK token'larının transferi ile gerçekleştirilir. LINK, Ethereum ağı üzerindeki ERC677 akıllı sözleşmesidir ve LINK ERC677 token'ına dayanan Oracle Makine işlevi, istek/cevap modeli ile çalışmaktadır.
ERC677 token transferAndCall mekanizması
Chainlink, Oracle Makine çerçevesini tasarlarken, öncelikle kullanıcıların Oracle Makine'ye hizmet ücreti nasıl ödeyeceğini dikkate almıştır. Standart ERC20 token'ları "ödemeden sonra hizmet sağlama" gibi bir ihtiyacı karşılayamadığından, Chainlink, Oracle Makine hizmet senaryolarına uygun ERC677 standardını önermiştir.
ERC677, standart ERC20'nin üzerine transferAndCall metodunu ekler. Bu metod, ödeme ve hizmet taleplerini birleştirerek, Oracle Makine iş senaryolarının ihtiyaçlarını karşılar. Kullanıcı transferAndCall ile para transferi yaptığında, ERC20 transferinin yanı sıra, alıcı adresinin bir sözleşme adresi olup olmadığını kontrol eder, eğer öyleyse, o adresin onTokenTransfer metodunu çağırır.
Dikkate değer bir husus, kullanıcıların Oracle Makine hizmetini talep etmeden önce bu Oracle Makine'nin güvenilir olup olmadığını belirlemeleri gerektiğidir, çünkü Oracle Makine hizmet vermeden önce ücret talep etmektedir.
zincir üzerindeki Oracle Makine istek süreci
Oracle Makine tüketicileri transferAndCall yöntemini kullanarak ödeme yaptıklarında ve hizmet talep ettiklerinde, Oracle Makine sözleşmesindeki onTokenTransfer yöntemi bir dizi güvenlik kontrolü gerçekleştirir. Bu, transferin LINK tokeni olup olmadığını doğrulamayı, veri uzunluğunun sınırı aşmadığını kontrol etmeyi, verilerin doğru fonksiyon seçicisini içerip içermediğini doğrulamayı içerir.
Kontrol başarılı olduktan sonra, Oracle Makine sözleşmesi benzersiz bir requestId oluşturacak ve talep ile ilgili bilgileri commitments haritasında saklayacaktır. Son olarak, sözleşme bir OracleRequest olayı yayınlayacak ve bu olay talebin ayrıntılı verilerini içerecektir.
zincir dışı düğüm yanıt mekanizması
Zincir dışı düğüm, OracleRequest olayını dinledikten sonra, isteğin belirli bilgilerini çözümleyecek ve gerekli verileri almak için API çağrısı yapacaktır. Ardından, düğüm, verileri zincire göndermek için Oracle sözleşmesindeki fulfillOracleRequest yöntemini çağırarak bir işlem gönderir.
Bu yöntem, çağrıcının yetkilendirilmiş bir düğüm olup olmadığını kontrol etmek, istek ID'sinin geçerliliğini doğrulamak gibi bir dizi doğrulama gerçekleştirecektir. Doğrulama başarılı olduğunda, sözleşme geri çekilebilecek token miktarını kaydedecek ve commitments haritasından bu istek ID'sini silecektir.
Son olarak, sözleşme talep eden sözleşmenin geri çağırma fonksiyonunu çağıracak ve verileri tüketici sözleşmesine geri döndürecektir. Fiyat Oracle Makinesi için bu genellikle mevcut fiyat verilerini güncellemeyi içerir.
Fiyat Oracle Makinesi'nin Basit Kullanımı
Geliştiriciler için, eğer sadece mevcut coin çiftlerinin fiyat verilerini kullanmak istiyorlarsa, API URL'sini kendileri belirtmelerine gerek yoktur, doğrudan Chainlink tarafından sağlanan Price Feed'i kullanabilirler. Her işlem çifti için bağımsız bir Price Feed (, aynı zamanda Aggregator ) olarak da adlandırılır ve aslında bir AggregatorProxy akıllı sözleşmesidir.
Bu sözleşmeler genellikle aşağıdaki birkaç ana sorgulama yöntemini sunar:
getRoundData(_roundId): Tarih fiyat verilerini tur ID'sine göre al
latestRoundData(): En son fiyat verilerini al
Çoğu uygulama senaryosunda, sözleşmelerin yalnızca en son fiyatı okuması gerekebilir, yani latestRoundData() yöntemini çağırmak. Bu yöntem tarafından döndürülen answer parametresi en son fiyatı temsil eder.
Dikkate değer olan, çoğu uygulamanın token fiyatlarını okurken USD'yi birim olarak kullanmasıdır. Bu durumda, fiyat verilerinin doğruluğu genellikle 8 ondalık basamakla birleştirilir, bu da farklı tokenler arasındaki doğruluk işlemlerini basitleştirir.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
13 Likes
Reward
13
8
Share
Comment
0/400
Anon32942
· 07-15 12:05
Oracle Makine bu konuda anlıyorum! Biraz link tuttum.
Chainlink'i Derinlemesine İnceleme: Oracle Makine Nasıl Blok Zinciri ile Gerçek Dünya'yı Bağlar
Oracle Makine Sistemi: Akıllı Sözleşmeler ve Gerçek Dünya Arasındaki Köprü
Blok zinciri ekosisteminde, Oracle Makine kritik bir rol oynamaktadır. Bir ara katman sistemi olarak, zincir üzerindeki akıllı sözleşmelere dış bilgi sağlayarak blok zinciri dünyasını gerçek dünya ile bağlantılı hale getirir. Oracle Makine'nin temel işlevi, akıllı sözleşmeler için gerekli dış verileri sağlamaktır.
Bir örnek vermek gerekirse, Ethereum ağı üzerinde bir günün ham petrol ticaret hacmi verilerini alması gereken bir akıllı sözleşme oluşturduğumuzu varsayalım. Akıllı sözleşmenin kendisi bu tür zincir dışı gerçek dünya verilerini doğrudan alamadığından, bunu gerçekleştirmek için bir Oracle Makine'ye ihtiyaç vardır. Bu durumda, akıllı sözleşme gerekli tarihin ham petrol ticaret hacmini olay günlüğüne yazacaktır. Ardından, zincir dışı bir süreç bu olay günlüğünü izlemek ve abone olmak için başlatılacaktır. İşlemdeki isteği dinlediğinde, bu süreç zincir üstü bir işlem göndererek, sözleşmenin ilgili yöntemini çağıracak ve belirtilen tarihin ham petrol ticaret hacmi bilgisini akıllı sözleşmeye yükleyecektir.
Chainlink: Ana akım Oracle Makine çözümü
Mevcut blockchain pazarında, Chainlink en yüksek pazar payına sahip Oracle Makine projesidir. Merkeziyetsiz bir Oracle Makine sistemi olarak, Chainlink, blockchain'e gerçek dünyada üretilen verileri en güvenli şekilde sağlamayı amaçlamaktadır. Temel Oracle Makine prensipleri üzerine, Chainlink LINK token'ı etrafında ekonomik teşviklere dayalı bir ekosistem inşa etmiştir.
Chainlink Oracle Makine'nin tetiklenmesi, LINK token'larının transferi ile gerçekleştirilir. LINK, Ethereum ağı üzerindeki ERC677 akıllı sözleşmesidir ve LINK ERC677 token'ına dayanan Oracle Makine işlevi, istek/cevap modeli ile çalışmaktadır.
ERC677 token transferAndCall mekanizması
Chainlink, Oracle Makine çerçevesini tasarlarken, öncelikle kullanıcıların Oracle Makine'ye hizmet ücreti nasıl ödeyeceğini dikkate almıştır. Standart ERC20 token'ları "ödemeden sonra hizmet sağlama" gibi bir ihtiyacı karşılayamadığından, Chainlink, Oracle Makine hizmet senaryolarına uygun ERC677 standardını önermiştir.
ERC677, standart ERC20'nin üzerine transferAndCall metodunu ekler. Bu metod, ödeme ve hizmet taleplerini birleştirerek, Oracle Makine iş senaryolarının ihtiyaçlarını karşılar. Kullanıcı transferAndCall ile para transferi yaptığında, ERC20 transferinin yanı sıra, alıcı adresinin bir sözleşme adresi olup olmadığını kontrol eder, eğer öyleyse, o adresin onTokenTransfer metodunu çağırır.
Dikkate değer bir husus, kullanıcıların Oracle Makine hizmetini talep etmeden önce bu Oracle Makine'nin güvenilir olup olmadığını belirlemeleri gerektiğidir, çünkü Oracle Makine hizmet vermeden önce ücret talep etmektedir.
zincir üzerindeki Oracle Makine istek süreci
Oracle Makine tüketicileri transferAndCall yöntemini kullanarak ödeme yaptıklarında ve hizmet talep ettiklerinde, Oracle Makine sözleşmesindeki onTokenTransfer yöntemi bir dizi güvenlik kontrolü gerçekleştirir. Bu, transferin LINK tokeni olup olmadığını doğrulamayı, veri uzunluğunun sınırı aşmadığını kontrol etmeyi, verilerin doğru fonksiyon seçicisini içerip içermediğini doğrulamayı içerir.
Kontrol başarılı olduktan sonra, Oracle Makine sözleşmesi benzersiz bir requestId oluşturacak ve talep ile ilgili bilgileri commitments haritasında saklayacaktır. Son olarak, sözleşme bir OracleRequest olayı yayınlayacak ve bu olay talebin ayrıntılı verilerini içerecektir.
zincir dışı düğüm yanıt mekanizması
Zincir dışı düğüm, OracleRequest olayını dinledikten sonra, isteğin belirli bilgilerini çözümleyecek ve gerekli verileri almak için API çağrısı yapacaktır. Ardından, düğüm, verileri zincire göndermek için Oracle sözleşmesindeki fulfillOracleRequest yöntemini çağırarak bir işlem gönderir.
Bu yöntem, çağrıcının yetkilendirilmiş bir düğüm olup olmadığını kontrol etmek, istek ID'sinin geçerliliğini doğrulamak gibi bir dizi doğrulama gerçekleştirecektir. Doğrulama başarılı olduğunda, sözleşme geri çekilebilecek token miktarını kaydedecek ve commitments haritasından bu istek ID'sini silecektir.
Son olarak, sözleşme talep eden sözleşmenin geri çağırma fonksiyonunu çağıracak ve verileri tüketici sözleşmesine geri döndürecektir. Fiyat Oracle Makinesi için bu genellikle mevcut fiyat verilerini güncellemeyi içerir.
Fiyat Oracle Makinesi'nin Basit Kullanımı
Geliştiriciler için, eğer sadece mevcut coin çiftlerinin fiyat verilerini kullanmak istiyorlarsa, API URL'sini kendileri belirtmelerine gerek yoktur, doğrudan Chainlink tarafından sağlanan Price Feed'i kullanabilirler. Her işlem çifti için bağımsız bir Price Feed (, aynı zamanda Aggregator ) olarak da adlandırılır ve aslında bir AggregatorProxy akıllı sözleşmesidir.
Bu sözleşmeler genellikle aşağıdaki birkaç ana sorgulama yöntemini sunar:
Çoğu uygulama senaryosunda, sözleşmelerin yalnızca en son fiyatı okuması gerekebilir, yani latestRoundData() yöntemini çağırmak. Bu yöntem tarafından döndürülen answer parametresi en son fiyatı temsil eder.
Dikkate değer olan, çoğu uygulamanın token fiyatlarını okurken USD'yi birim olarak kullanmasıdır. Bu durumda, fiyat verilerinin doğruluğu genellikle 8 ondalık basamakla birleştirilir, bu da farklı tokenler arasındaki doğruluk işlemlerini basitleştirir.