Ana içeriğe geç

Oracle Sorgu Sözleşmesi

(Son güncellenme: 31 Ocak 2022)

NOT: Bu sözleşmeyi doğrudan kullanmak istemiyorsunuzdur. Bunun yerine, lütfen okuyun.

Bu sözleşme, diğer sözleşmelerin veya kullanıcıların genel bir oracle düğümüne (tek bir örnek) tek seferlik ücretsiz veya ücretli sorgular yapmasına izin verir. Bu, bireysel bir off-chain oracle düğümünün yanıtlarını verdiği tekli sorgular vermek için çok düşük seviyeli bir API sağlar.

DİKKAT: Oracle ağlarının (örneğin, Chainlink) güvenliği, bireysel düğümlerin sonuçlarını birleştirmek için daha yüksek seviyeli sözleşmelere dayanır (bu düşük seviyeli sözleşme). Bu, bireysel bir düğümün kötüye kullanımına karşı koruma sağlar.

Sadece tek bir düğüme güvenmek hem maliyetli hem de riskli olabilir. Bunun yerine, açıklanan daha yüksek seviyeli API'leri kullanın.

Ücretsiz Sorgu Yapma

Ücretsiz bir sorgu yapmak için oracle sözleşme örneği için publicFacet alın.

<<< @/../snippets/zoe/contracts/test-oracle.js#freeQuery

Geçerli olan query, oracle'ın kabul ettiği herhangi bir biçimde olabilir. Yanıt, oracle'ın belirleyeceği herhangi bir biçimde olabilir.

Ücretli Sorgu Yapma

Ödeme gerektiren bir sorgu yapmak için daha önce olduğu gibi publicFacet alın, ancak bu sefer bir queryInvitation oluşturun. queryInvitation’ı kullanarak bir teklif yapın ve gereken ödemeleri Fee markasında güvenceye alın. Yanıtınız, teklifinizin sonucu olacaktır.

<<< @/../snippets/zoe/contracts/test-oracle.js#paidQuery

Yeni Bir Oracle Sözleşmesi Oluşturma

Kendi oracle sözleşme örneğinizi oluşturmak istiyorsanız, önce kodu paketleyin ve eğer daha önce kurulmamışsa kurulum yapın.

<<< @/../snippets/zoe/contracts/test-oracle.js#bundle

Ardından sözleşme örneğini başlatın. Bir publicFacet ve creatorFacet alacaksınız.

<<< @/../snippets/zoe/contracts/test-oracle.js#startInstance

oracleHandler'ı başlatmak için creatorFacet'i kullanmanız gerekecek. oracleHandler, gerçekten sorgulanacak olan bileşendir, bu yüzden bunu kamuya açık sözleşme koşullarına dahil etmek istemiyoruz.

<<< @/../snippets/zoe/contracts/test-oracle.js#initialize

Oracle Handler API'si

Sözleşme, tüm oracleHandlers’dan aşağıdaki API'yi sunmasını bekler:

<<< @/../snippets/zoe/contracts/test-oracle.js#API