Blockchain ekosisteminde, Oracle Makine kritik bir altyapı rolü oynamaktadır ve zincir üzerindeki akıllı sözleşmelere dış bilgi sağlamaktadır. Akıllı sözleşmeler ile blockchain dış dünyası arasında bir köprü olarak, Oracle Makine'nin ana işlevi akıllı sözleşmelere veri sağlamaktır.
Örneğin, Ethereum ağında belirli bir gün için ham petrol işlem hacmi verilerini almak üzere bir akıllı sözleşme oluşturduğumuzu varsayalım. Akıllı sözleşmenin kendisi bu tür çevrimdışı gerçek dünya verilerini doğrudan elde edemediği için, bu durumda bir Oracle Makine aracılığıyla gerçekleştirilmesi gerekmektedir. Bu durumda, akıllı sözleşme gereken tarihin ham petrol işlem hacmini olay günlüğüne yazacaktır. Ardından, çevrimdışı bu olay günlüğünü izlemek ve abone olmak üzere bir süreç başlatılacaktır. İşlemler arasında bir isteğin dinlenmesi durumunda, bu süreç, zincir üzerindeki işlemi göndererek, sözleşmenin ilgili yöntemini çağırarak, belirtilen tarihin ham petrol işlem hacmi bilgisini akıllı sözleşmeye yükleyecektir.
Chainlink Genel Bakış
Blockchain Oracle alanında, Chainlink en büyük pazar payına sahiptir. Chainlink, blok zincirine güvenli ve güvenilir bir şekilde gerçek dünya verileri sağlamak için merkezi olmayan bir oracle projesidir. Chainlink, temel oracle ilkeleri üzerine, LINK token'ı etrafında ekonomik teşvikler ile sağlıklı bir döngü oluşturan bir ekosistem inşa etmiştir. Chainlink oracle'ları, LINK token'larının transferi ile tetiklenmesi gerekmektedir ve LINK, Ethereum ağı üzerindeki ERC677 sözleşmesidir. LINK ERC677 token'ı temelinde gerçekleştirilen oracle işlevleri, talep/yanıt modeline aittir.
ERC677 Token'in transferAndCall Mekanizması
Chainlink, Oracle Makine çerçevesini tasarlarken, kullanıcıların hizmet sunan Oracle Makine'ye nasıl ödeme yapacaklarını ilk olarak dikkate almıştır. Standart ERC20 token'lar, hizmet verildikten sonra ödeme yapma ihtiyacını karşılamadığı için, Chainlink, Oracle Makine hizmet senaryoları için uygun olan ERC677 standardını önermiştir.
ERC677, standart ERC20'nin üzerine transferAndCall yöntemini ekler. Bu yöntem, ödeme ve hizmet talebini birleştirerek Oracle Makine iş senaryolarının gereksinimlerini karşılar. Kullanıcı transferAndCall ile para gönderdiğinde, ERC20 transferinin yanı sıra alıcı adresinin bir akıllı sözleşme adresi olup olmadığını da kontrol eder, eğer öyleyse, bu adresin onTokenTransfer yöntemini çağırır.
Dikkate değer olan, kullanıcıların Oracle Makine hizmeti talep etmeden önce bu Oracle Makine'nin güvenilir olup olmadığını belirlemeleri gerektiğidir, çünkü Oracle Makine hizmeti sağlamadan önce önceden ücret talep etmektedir.
Zincir üstü Oracle Makine istek işlemi
Bir Oracle Makine tüketicisi transferAndCall yöntemini kullanarak ücret ödediğinde ve hizmet talep ettiğinde, Oracle Makine sözleşmesindeki onTokenTransfer yöntemi öncelikle bir dizi güvenlik kontrolü gerçekleştirir. Bu kontroller, transferin LINK tokeni olup olmadığını doğrulamayı, veri uzunluğunun sınırlara aşmadığını kontrol etmeyi, fonksiyon seçici doğru olup olmadığını denetlemeyi içerir.
Tüm güvenlik kontrolleri geçtikten sonra, sözleşme oracle sözleşmesinin oracleRequest yöntemini çağırmak için deleGatecall kullanacaktır. Bu yöntem, benzersiz bir requestId oluşturacak, süre sonu ayarlayacak ve ilgili bilgileri commitments haritasında saklayacaktır. Son olarak, istek verilerini içeren bir OracleRequest olayı yayınlayacak ve bu veriler CBOR (Concise Binary Object Representation) kodlama formatını kullanacaktır.
Off-chain Düğüm Yanıtı
Ağdışı düğüm, OracleRequest olayını dinledikten sonra, isteğin belirli bilgilerini çözecek ve gerekli verileri elde etmek için ağ API'sini kullanacaktır. Ardından, düğüm oracle sözleşmesinin fulfillOracleRequest metodunu çağırarak veriyi zincire gönderecektir.
fulfillOracleRequest yöntemi ilk olarak bir dizi kontrol gerçekleştirir, bunlar arasında çağrıyı yapanın yetkisini doğrulamak, talebin geçerliliğini kontrol etmek vb. Kontroller başarılı olduktan sonra, çekilebilir miktarı kaydeder, commitments haritasından bu talebi siler ve talep edenin sözleşmesinin geri çağırma fonksiyonunu çağırır.
Fiyat Oracle Makine Örneği
Chainlink tarafından sağlanan TestnetConsumer sözleşmesindeki requestEthereumPrice yöntemini örnek alarak, bu yöntem belirli bir API'den ETH/USD işlem fiyatını alma işlevini gerçekleştirmektedir. Bu, sendChainlinkRequestTo yöntemini çağırarak bir istek gönderir ve oracle sözleşmesinin onTokenTransfer yöntemini tetikler.
Off-chain düğüm, talep bilgilerini aldıktan sonra API çağrısı yoluyla fiyat verilerini alacak ve ardından bu verileri fulfillOracleRequest yöntemi aracılığıyla zincire gönderecektir. Sonunda, veriler bir geri çağırma işlevi aracılığıyla tüketici sözleşmesine dönecektir.
Geliştiriciler için, yalnızca mevcut kripto para birimi çiftlerinin fiyatlarını kullanmak gerekiyorsa, doğrudan Chainlink'in sağladığı Price Feed'i (yani AggregatorProxy) kullanabilirler. Her işlem çifti için ayrı bir Price Feed mevcuttur ve fiyat hassasiyeti, işlem çifti açıklaması, en son fiyat verileri gibi birden fazla sorgulama yöntemi sunar.
Çoğu uygulama senaryosunda, kontrat sadece en son fiyatı okumak için latestRoundData yöntemini çağırması gerekebilir. Genellikle, USD cinsinden fiyatlandırılan işlem çiftlerinin fiyat hassasiyeti 8 basamak olarak birleştirilmiştir, bu da farklı token hassasiyetleriyle ilgili sorunları 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.
7 Likes
Reward
7
4
Share
Comment
0/400
SerumSquirter
· 07-23 08:30
Fiyat verileri gerçekten ucuz değil.
View OriginalReply0
ShitcoinConnoisseur
· 07-21 00:45
link benim gerçek aşkım tamam mı
View OriginalReply0
MercilessHalal
· 07-21 00:30
link必yükseliş 等着para kazanmak
View OriginalReply0
DeFiDoctor
· 07-21 00:27
Dış veri virüs tehditleri büyük, düğümlerin düzenli sağlık kontrolü yapması önerilir.
Chainlink Oracle Makine teknolojisi analizi: Blok Zinciri ile gerçek dünya arasındaki köprü
Oracle Makine Teknolojisi Analizi: Chainlink Örneği
Blockchain ekosisteminde, Oracle Makine kritik bir altyapı rolü oynamaktadır ve zincir üzerindeki akıllı sözleşmelere dış bilgi sağlamaktadır. Akıllı sözleşmeler ile blockchain dış dünyası arasında bir köprü olarak, Oracle Makine'nin ana işlevi akıllı sözleşmelere veri sağlamaktır.
Örneğin, Ethereum ağında belirli bir gün için ham petrol işlem hacmi verilerini almak üzere bir akıllı sözleşme oluşturduğumuzu varsayalım. Akıllı sözleşmenin kendisi bu tür çevrimdışı gerçek dünya verilerini doğrudan elde edemediği için, bu durumda bir Oracle Makine aracılığıyla gerçekleştirilmesi gerekmektedir. Bu durumda, akıllı sözleşme gereken tarihin ham petrol işlem hacmini olay günlüğüne yazacaktır. Ardından, çevrimdışı bu olay günlüğünü izlemek ve abone olmak üzere bir süreç başlatılacaktır. İşlemler arasında bir isteğin dinlenmesi durumunda, bu süreç, zincir üzerindeki işlemi göndererek, sözleşmenin ilgili yöntemini çağırarak, belirtilen tarihin ham petrol işlem hacmi bilgisini akıllı sözleşmeye yükleyecektir.
Chainlink Genel Bakış
Blockchain Oracle alanında, Chainlink en büyük pazar payına sahiptir. Chainlink, blok zincirine güvenli ve güvenilir bir şekilde gerçek dünya verileri sağlamak için merkezi olmayan bir oracle projesidir. Chainlink, temel oracle ilkeleri üzerine, LINK token'ı etrafında ekonomik teşvikler ile sağlıklı bir döngü oluşturan bir ekosistem inşa etmiştir. Chainlink oracle'ları, LINK token'larının transferi ile tetiklenmesi gerekmektedir ve LINK, Ethereum ağı üzerindeki ERC677 sözleşmesidir. LINK ERC677 token'ı temelinde gerçekleştirilen oracle işlevleri, talep/yanıt modeline aittir.
ERC677 Token'in transferAndCall Mekanizması
Chainlink, Oracle Makine çerçevesini tasarlarken, kullanıcıların hizmet sunan Oracle Makine'ye nasıl ödeme yapacaklarını ilk olarak dikkate almıştır. Standart ERC20 token'lar, hizmet verildikten sonra ödeme yapma ihtiyacını karşılamadığı için, Chainlink, Oracle Makine hizmet senaryoları için uygun olan ERC677 standardını önermiştir.
ERC677, standart ERC20'nin üzerine transferAndCall yöntemini ekler. Bu yöntem, ödeme ve hizmet talebini birleştirerek Oracle Makine iş senaryolarının gereksinimlerini karşılar. Kullanıcı transferAndCall ile para gönderdiğinde, ERC20 transferinin yanı sıra alıcı adresinin bir akıllı sözleşme adresi olup olmadığını da kontrol eder, eğer öyleyse, bu adresin onTokenTransfer yöntemini çağırır.
Dikkate değer olan, kullanıcıların Oracle Makine hizmeti talep etmeden önce bu Oracle Makine'nin güvenilir olup olmadığını belirlemeleri gerektiğidir, çünkü Oracle Makine hizmeti sağlamadan önce önceden ücret talep etmektedir.
Zincir üstü Oracle Makine istek işlemi
Bir Oracle Makine tüketicisi transferAndCall yöntemini kullanarak ücret ödediğinde ve hizmet talep ettiğinde, Oracle Makine sözleşmesindeki onTokenTransfer yöntemi öncelikle bir dizi güvenlik kontrolü gerçekleştirir. Bu kontroller, transferin LINK tokeni olup olmadığını doğrulamayı, veri uzunluğunun sınırlara aşmadığını kontrol etmeyi, fonksiyon seçici doğru olup olmadığını denetlemeyi içerir.
Tüm güvenlik kontrolleri geçtikten sonra, sözleşme oracle sözleşmesinin oracleRequest yöntemini çağırmak için deleGatecall kullanacaktır. Bu yöntem, benzersiz bir requestId oluşturacak, süre sonu ayarlayacak ve ilgili bilgileri commitments haritasında saklayacaktır. Son olarak, istek verilerini içeren bir OracleRequest olayı yayınlayacak ve bu veriler CBOR (Concise Binary Object Representation) kodlama formatını kullanacaktır.
Off-chain Düğüm Yanıtı
Ağdışı düğüm, OracleRequest olayını dinledikten sonra, isteğin belirli bilgilerini çözecek ve gerekli verileri elde etmek için ağ API'sini kullanacaktır. Ardından, düğüm oracle sözleşmesinin fulfillOracleRequest metodunu çağırarak veriyi zincire gönderecektir.
fulfillOracleRequest yöntemi ilk olarak bir dizi kontrol gerçekleştirir, bunlar arasında çağrıyı yapanın yetkisini doğrulamak, talebin geçerliliğini kontrol etmek vb. Kontroller başarılı olduktan sonra, çekilebilir miktarı kaydeder, commitments haritasından bu talebi siler ve talep edenin sözleşmesinin geri çağırma fonksiyonunu çağırır.
Fiyat Oracle Makine Örneği
Chainlink tarafından sağlanan TestnetConsumer sözleşmesindeki requestEthereumPrice yöntemini örnek alarak, bu yöntem belirli bir API'den ETH/USD işlem fiyatını alma işlevini gerçekleştirmektedir. Bu, sendChainlinkRequestTo yöntemini çağırarak bir istek gönderir ve oracle sözleşmesinin onTokenTransfer yöntemini tetikler.
Off-chain düğüm, talep bilgilerini aldıktan sonra API çağrısı yoluyla fiyat verilerini alacak ve ardından bu verileri fulfillOracleRequest yöntemi aracılığıyla zincire gönderecektir. Sonunda, veriler bir geri çağırma işlevi aracılığıyla tüketici sözleşmesine dönecektir.
Geliştiriciler için, yalnızca mevcut kripto para birimi çiftlerinin fiyatlarını kullanmak gerekiyorsa, doğrudan Chainlink'in sağladığı Price Feed'i (yani AggregatorProxy) kullanabilirler. Her işlem çifti için ayrı bir Price Feed mevcuttur ve fiyat hassasiyeti, işlem çifti açıklaması, en son fiyat verileri gibi birden fazla sorgulama yöntemi sunar.
Çoğu uygulama senaryosunda, kontrat sadece en son fiyatı okumak için latestRoundData yöntemini çağırması gerekebilir. Genellikle, USD cinsinden fiyatlandırılan işlem çiftlerinin fiyat hassasiyeti 8 basamak olarak birleştirilmiştir, bu da farklı token hassasiyetleriyle ilgili sorunları basitleştirir.