For the complete documentation index, see llms.txt. This page is also available as Markdown.

En İyi Uygulamalar

Chiliz Chain fiyat beslemelerini güvenle tüketmek için doğrulama örüntüleri, sağlık durumu API'si, bayatlık kontrolleri ve entegrasyon kontrol listesi.

Fiyatı Kullanmadan Önce Her Zaman Doğrulayın

latestRoundData(), round mevcut değilse NoDataAvailable() hatasıyla döner; ancak bayatlık veya duraklatma kontrollerini zorunlu kılmaz — saklanan değerleri olduğu gibi döndürür. Herhangi bir fiyat değerini kullanmadan önce şu üç kontrolü mutlaka yapın:

  1. Duraklatma kontrolü: paused() işlevini çağırın; besleme duraklatılmışsa işlemi reddedin.

  2. Pozitif yanıt: answer > 0 koşulunu zorunlu kılın.

  3. Bayatlık kontrolü: getHealthStatus().isHealthy değerine göre koşul uygulayın.

Fiyat Okuma sayfasındaki getSafePrice() örneği üç kontrolü birden uygular.

Sağlık Durumu API'si

Her PriceFeed, tek bir çağrıda tazelik bilgisini bir araya getiren bir getHealthStatus() görünümü sunar:

function getHealthStatus()
    external view
    returns (
        uint256 lastUpdateTimestamp,
        uint256 totalRounds,
        uint256 timeSinceLastUpdate,
        bool isHealthy
    );
Alan
Açıklama

lastUpdateTimestamp

En son round'un updatedAt değeri

totalRounds

Yazılan toplam round sayısı

timeSinceLastUpdate

block.timestamp - lastUpdateTimestamp (veri yoksa block.timestamp)

isHealthy

timeSinceLastUpdate <= updateInterval × healthFactor ise true

healthFactor varsayılan olarak 2 ile başlatılır; ancak oracle yöneticisi tarafından setHealthFactor() ile her besleme için ayrı ayrı yapılandırılabilir. 2 değerini sabit kodlamayın — doğrudan sözleşmeden okuyun:

Sağlık penceresi updateInterval × healthFactor şeklinde hesaplanır; her ikisi de besleme başına yapılandırılır — updateInterval, küçük bir zincir üstü minimum aralıktır, heartbeat değil. Beslemeye göre değişir: CHZ/USDC için 5s × 720 = 1 saatlik pencere, PEPPER/CHZ için 10s × 720 = 2 saatlik pencere kullanılırken zincir dışı akış hattı yaklaşık 1 saatlik heartbeat ile çalışır. Bayatlık temel değeri olarak yalnızca updateInterval'ı kullanmayın — isHealthy değerine göre koşul uygulayın. Tam örüntü için Fiyat Okuma sayfasındaki getSafePrice() işlevine bakın.

Sistemdeki tüm beslemeleri aynı anda izlemek için OracleFactoryReader üzerindeki getAllOracleHealthStatus() işlevini kullanın — zincir dışı gösterge panelleri ve uyarı sistemleri için kullanışlıdır.

decimals() Değerini Önbelleğe Alın

Her çiftin kendi ondalık hassasiyeti vardır — bir fiyat değerini yorumlamadan önce decimals() işlevini çağırarak bunu doğrulayın. Ondalık basamaklar dağıtım sırasında ayarlanır ve hiç değişmez; bu nedenle her fiyat okumada değil, sözleşme başlatması sırasında bir kez okuyun:

Duraklatılmış Durumu Düzgün Yönetin

Acil durumlarda oracle yöneticisi bir beslemeyi duraklatabilir. Kötü bir değeri sessizce tüketmek yerine ortaya çıkan hatayı temiz biçimde ele alın:

Geliştirme Sırasında Tracker'ı Kullanın

Price Oracle Tracker, zincir üstü fiyatları gerçek zamanlı olarak CoinMarketCap ve CoinGecko ile karşılaştırmanıza olanak tanır; entegrasyon sırasında besleme doğruluğunu doğrulamayı kolaylaştırır. Ayrıca her çift için canlı sağlık durumunu, heartbeat parametrelerini ve bireysel sözleşme adreslerini gösterir.

Entegrasyon Kontrol Listesi

Son güncelleme

Bu yararlı oldu mu?