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

Fiyat Okuma

PriceFeed sözleşme adresini bulun, Chainlink arayüzüyle bağlanın ve gerekli doğrulamayla mevcut fiyatı okuyun.

Adım 1: Oracle Adresini Bulma

Belirli bir çift için PriceFeed sözleşme adresini bulmanın üç yolu:

  • Price Oracle Tracker (geliştirme sırasında en kolay): price-oracle-tracker.vercel.app — dağıtılmış tüm çiftleri, canlı fiyatları, ondalık basamakları, heartbeat değerlerini ve adresleri gösterir.

  • Zincir üstünde OracleFactory aracılığıyla: pairToOracle(string pair) işlevini çağırın. Çift sembolleri büyük harfle girilmelidir (örn. "PSG/USDT") — fabrika, okuma sırasında girdiyi normalleştirmez.

  • Toplu olarak zincir üstünde OracleFactoryReader aracılığıyla: tek bir çağrıda tüm aktif çiftleri ve adreslerini almak için getActiveOracles() işlevini çağırın.

interface IOracleFactory {
    function pairToOracle(string memory pair) external view returns (address);
    function getOracleCount() external view returns (uint256);
}

function resolveFeed(address factory, string memory pair)
    external view returns (address)
{
    // Pair symbol must be passed in uppercase (e.g. "PSG/USDT").
    return IOracleFactory(factory).pairToOracle(pair);
}

Adım 2: Arayüzü Kullanarak Bağlanma

PriceFeed sözleşmesi, standart Chainlink IAggregatorV3Interface arayüzünü ve sağlık ile duraklatma durumu için Chiliz'e özgü uzantıları uygular.

Adım 3: Fiyatı Okuma

Temel işlev, mevcut fiyatı round ve zaman damgası meta verileriyle birlikte döndüren latestRoundData() işlevidir.

Protokolünüz 18'e normalleştirmek yerine beslemenin yerel ondalık basamaklarını kullanıyorsa:

Geçmiş Veriler

Oracle, tüm geçmiş round verilerini zincir üstünde saklar. Her fiyat güncellemesi artan bir roundId ile yeni bir round oluşturur.

Chiliz beslemesinin sunduğu ek yardımcı görünümler:

İşlev
Döndürür

latestAnswer()

Son fiyat veya yoksa 0

latestTimestamp()

Son updatedAt değeri veya yoksa 0

latestRound()

Mevcut round ID

getAnswer(uint80 roundId)

Belirli bir round için fiyat veya yoksa 0

getTimestamp(uint80 roundId)

Belirli bir round için zaman damgası veya yoksa 0

getRoundsData(uint80[] roundIds)

Toplu RoundData dizisi

roundExists(uint80 roundId)

updatedAt > 0 ise true

Olaylar (Events)

Her PriceFeed sözleşmesi şu olayları yayar:

  • AnswerUpdated(int256 indexed current, uint80 indexed roundId, uint256 updatedAt): her fiyat güncellemesinde yayılır. Fiyata veya round'a göre filtreleyin.

  • NewRound(uint80 indexed roundId, address indexed startedBy, uint256 startedAt): yeni bir round başladığında yayılır. Round'a veya başlatan adrese göre filtreleyin.

Keşif İşlevleri (OracleFactoryReader)

İşlev
Açıklama

getActiveOracles()

Oracle adresleriyle birlikte tüm aktif çiftleri döndürür

getAllOracles()

Pasif olanlar dahil tüm oracle'ları döndürür

getOraclesByPairs(string[] pairs)

Birden fazla çift adını tek çağrıda oracle adreslerine çözer

getOracleHealthStatus(address oracle)

Tek bir oracle için sağlık durumu

getAllOracleHealthStatus()

Sistemdeki her oracle için sağlık durumu

Son güncelleme

Bu yararlı oldu mu?